Overview
The AgilityPublic and Agility APIs are Application Programming Interfaces that can be accessed over the internet and executed on a remote system hosting the requested services. These APIs allow a client application to make service requests for the operations (methods) that are exposed. These operations are limited to the operations DMSi elects to expose and various levels of security allow the network, database, and/or system administrators to restrict access to the API functionality.
The goals of the AgilityPublic and Agility APIs:
- Provide a mechanism to expose business logic and data on the intranet and/or internet via web services.
- Provide a mechanism to leverage existing business logic.
- Provide a mechanism to keep the business logic on the server side, but allow it to be shared across different clients to include internal DMSi applications and external applications created by DMSi customers or contracted with private third party entities on our customer's behalf.
This document is intended as a high level overview of the DMSi APIs and the methods available in the REST APIs and their services.
URL Information
- When working with an Agility customer, the URL for their API, which is tied to their database, is available from the customer.
Testing Tool
- All variable (header) information referenced in the documentation for specific methods refers to options within the Runscope testing tool.
- Runscope allows you to create API tests for any of the available REST methods in this document and can be accessed at runscope.com
- There are many other tools available for testing REST methods. DMSi does not mandate the use of Runscope, but does employ it as our tool of choice.
General Information
Field Data Types
Character
- In some methods, free-form text fields that do not have their values validated against data in Agility or have associated business rules may be cleared with the use of the double quote (
""
) or null (null
) value as the input. - The context of the field, as well as surrounding business rules associated with each method, dictate whether values will be cleared when either of these values is sent. It is strongly suggested testing be done against a non-production environment prior to using this feature to avoid unexpected results.
- Please be sure to understand the context and business rules associated with each method, especially those which create or update records.
Date
- Valid format = yyyy-mm-dd
- When passing in a blank date, the valid format is
null
- Example:
"DiscountDate": null
- Example:
Date/Time
- Valid format = yyyy-mm-ddThh:mm:ss
- Example:
"FetchOnlyChangedSince": "2024-01-01T16:54:32"
- Example:
Decimal (0.00 or 0.0000)
- The value of 0 is the standard default value to be used to pass data type validation.
- Please be aware 0 is a valid value for some fields during processing. One example is the
Price
field when creating or updating price records. Because of that, please be sure to understand the context and business rules associated with each method, especially those which create or update records.
Integer (0)
- The value of 0 is the standard default value to be used to pass data type validation.
- Please be aware 0 is a valid value for some fields during processing. One example is the Price field when creating or updating price records. Because of that, please be sure to understand the context and business rules associated with each method, especially those which create or update records.
Logical
- The value of
true
orfalse
is valid
Time
- The value must be military time between 00:00 and 23:59
Data-Chunking
- Available in select methods, data chunking allows the user to limit the number of records returned with a single call to a method. Below, the purpose of each of the fields related to data chunking is outlined. Please note that not all of the below fields are available in all methods that offer chunking.
RecordFetchLimit
- set this input to the number of records to be returned in a run.
- If the field is empty, the method returns the number of records as noted in System Config > Default chunk size.
- The user is able to enter whatever value they wish in this field. However, the maximum number of records returned at any one time is based on System Config > Max chunk size.
ChunkStartPointer
- used in conjunction with output parameter
MoreResultsAvailable
andNextChunkStartPointer
. This input allows the user to indicate the record number to start at for the next chunk of data. The value for this input is found in theNextChunkStartPointer
output field from the previous run of the method.
MoreResultsAvailable
- This output indicates whether there are records that meet the criteria but were not in the output results set returned. If this value is returned as true, more records can be retrieved by using the
ChunkStartPointer
input or changing theRecordFetchLimit
as allowable.
NextChunkStartPointer
- This output indicates the record number at which the next chunk of data starts. This output value in this field becomes the input value for
ChunkStartPointer
if the user wants to continue to pull records for this criteria.
Parent/Child Relationships
- Select methods have parent/child relationships for either inputs or outputs. The key to matching the parent and the child (and grandchild, if existing) is a combination of key parent fields found in the child/grandchild tables, which serves as the connector between the records, unless otherwise specifically noted for that method. In addition, the child/grandchild table includes a sequencing value to show the order of the records in that table as related to the parent. While the full name of the sequencing field varies, it always includes Sequence or Seq at the end, unless otherwise noted.
- For example, in
GetShipmentsDisplay
, the parent table includes theOrderID
andShipmentNum
. Those fields are also found in the child table. In addition, the Sequence field in the child table shows the order of the items on that shipment.
Input Parameters
Casing must be taken into consideration with input parameters.
- Example: If the input parameter is
ShiptoSequence
and you sendShipToSequence
in the request, this is processed with a null value and will not return the expected results.
Special Characters
Special character values such as < or > must be entered with the ESC characters to pass XML standards. For example, to enter a route of <all>, enter the value as <all>
Please consult outside documentation for acceptable translations of special characters.
ReturnCode and MessageText Notes
- The API methods return one of 3 values for ReturnCode.
- 0 = success
- 1 = warning
- 2 = error
- If
ReturnCode
= 0,MessageText
may be blank. When not blank, it contains information associated with the success. - If
ReturnCode
= 1 or 2, an accompanyingMessageText
is returned to assist in diagnosing the issue. - When an error is encountered, the FIRST failure is returned as
MessageText
. There may be multiple errors in the request that need to be resolved before the call would be successful. - If a method encounters an error, the overall method call fails. We do not partially process any request, unless other noted for the method.
- Depending on the method being called and the logic being run, a
ReturnCode
= 0 may mean not complete success. It simply means the overall process ran to completion with no fatal errors. This mainly applies to methods which update data, but could apply to others. - Method calls which do not contains the appropriate data for the specific data types associated with fields fail to make it to Agility as those rules are enforced within the web server. For example, if you attempt to send in a character value for a Decimal field, the request fails. Please consult the dataset or method definition to understand the expected data types for each input field.
- The
ReturnCode
andMessageText
should be carefully inspected to ensure any exceptions are properly handled.
AgilityPublic API Technical Information
The AgilityPublic API is deployed using REST supporting .NET and Progress clients. This API utilizes RPC with JSON. It uses a state-free session model architecturally, but functionally requires that the client logs in to get a context ID and Branch before business requests are made.
The parameter signatures for the methods that can be requested from the web service are simple data types, with the exception of data structured in records. Groups of records are passed as a complex type that can be translated from/to a dataset.
The login request returns the client’s initial Branch ID as well as the context ID when login has been successful. Branch in Agility means a defined portion of the business that Agility serves. For most Agility systems, branch refers to physical locations, like the Omaha branch and the Milwaukee branch. Some Agility systems are set up such that branches represent something other than location, like functional departments. While some Agility systems have many branches and others have as few as one, there is always at least one branch in Agility, and all Agility processes are performed from the perspective of a particular branch. Therefore, to ensure the user is valid, the context ID and branch ID must be sent in the header for each request.
Note that if a particular context ID is not used to run a program for a certain amount of time, that context ID times out. When the time out occurs, the next request of the server from that client using that context id is rejected. The default time out setting is 4 hours, but the system manager of the Agility system serving the requests can change the value, up to a maximum of 24 hours.
The User ID and Password that are required by the login request are maintained and supplied by the system manager of the Agility system serving the requests. This is not a hard-coded User ID and Password that are specific to a particular usage of Agility Web Services. In other words there is no DMSi-mandated User ID designated for a specific product that interfaces with Agility. Each DMSi customer is allowed to set their own level of security for all User IDs, including the User IDs they create to allow Agility access for 3rd party products.
The AgilityPublic API supports versioning as DMSi routinely makes enhancements and changes to the web services. Changes to web services are detailed in the release notes and, depending on the change, within help documentation with each Agility version.
All API payloads are delivered encrypted while in transit.
- All API calls are made to an https: address. Any calls to an http address are rejected.
- We respond to the API call as we do any other authorized user request for data using Agility programs and for sensitive data that is stored as encrypted. W decrypt it for delivery in the API payload.
- The API payload is delivered by encrypting the payload in its entirety via TLS and it remains encrypted until it is received by the response recipient.
- Delivering the information with a decrypt key is not necessary as the information was encrypted in transit and is no longer encrypted once received. The response recipient is now in possession can encrypt if necessary.
AgilityPublic/AccountsPayable Service
This AgilityPublic service contains methods related to creating and updating accounts payable information.
InvoiceCreate
Sample Request
{
"request": {
"dsInvoiceRequest": {
"dtInvoiceHeaderRequest": [
{
"InvoiceID": "01251901",
"InvoiceDate": "2019-01-25",
"PostingPeriod": 1,
"PostingYear": 2019,
"SupplierID": "WEH",
"SupplierRemitToSequence": 1,
"EnforceSupplierMatch": true,
"PaymentMethod": "Check",
"PaymentTermsCode": "",
"DueDate": null,
"BatchID": "1",
"Requires1099": false,
"Payment1099TypeCode": "",
"Taxable": false,
"TaxAmount": null,
"TaxCode": "",
"DiscountDate": null,
"DiscountAmount": 0,
"VoucherStatus": "Ready for Payment",
"FreightID": "",
"CashGLAccount": "",
"DiscountGLAccount": "",
"APGLAccount": "",
"PaymentRemark": "",
"HandlingCode": "FEDEX",
"HandlingCodeAddlInfo": "FAST",
"SuppressCurrencyMatch": false
}
],
"dtInvoiceOrdersRequest": [
{
"TranOrAPReconID": "8003",
"Amount": 0,
"DiscountableAmount": 0,
"TaxAmount": 0,
"CostType": "PO"
}
],
"dtExpenseAccountsRequest": [
{
"GLExpAccount": "0100120004",
"Amount": 0,
"ProjectNumber": null,
"Remark": null
}
]
}
}
}
Sample Response
{
"response": {
"VoucherNumber": 2170,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates an A/P invoice
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
InvoiceID
InvoiceDate
SupplierID
SupplierRemitToSequence
;dtAPExpenseAccounts
and/ordtAPInvoiceOrders
(when applicable)
Optional Inputs
PostingPeriod
PostingYear
Response
- ReturnCode
MessageText
VoucherNumber
Notes
- You must include at least one A/P Invoice Orders detail or A/P Expense Accounts detail with the A/P Invoice Header
- When a field contains a value of null, the system creates the A/P Invoice based on the default specified in Agility
- Multiple transactions and/or expense G/L accounts can be associated with a single A/P Invoice, and the net total creates either an A/P Invoice or an A/P Credit memo
- To use the discountable field, ‘Apply ADF in A/P’ must be set on the associated payment terms code. The voucher ADF amount will be the difference between the specified AP clearing amount (
dtInvoiceOrdersRequest
amount) and the discountable amount. - The
SuppressCurrencyMatch
field is available in v543 - The
dtInvoiceHeaderRequest
TaxAmount
field is available in v549 - When
TaxAmount
is provided in both thedtInvoiceHeaderRequest
and thedtInvoiceOrdersRequest
, only thedtInvoiceHeaderRequest
TaxAmount
value is used - With v549, non-taxable vouchers with a tax amount can be created when the
dtInvoiceHeaderRequest
section includes a value forTaxAmount
- When the
PostingPeriod
andPostingYear
tags are not included in the request, has a value of 0, or value of ‘null’, the system assigns the default posting period and year to the invoice. If the A/P Parameters flag ‘Validate invoice date with period entered’ is set, the system assigns a posting period and year to the invoice that matches the month and year of the invoice date entered. - When creating expense invoices, the
GLExpAccount
tag cannot contain an A/P clearing account number. - When the
CostType
value is not included with the request, has a value of blank, or value of ‘null’, the system uses the default cost type assigned to the supplier record.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
AgilityPublic/AccountsReceivable Service
This AgilityPublic service contains methods related to creating and updating accounts receivable information.
BalancesList
Sample Request
{
"request": {
"CustomerID": "12345"
}
}
Sample Response
{
"response": {
"BalanceResponse": {
"dsARBalanceResponse": {
"dtARBalanceHeaderResponse": [
{
"CustomerID": "12345",
"BranchID": "WESTONBRANCH",
"ProcessDate": "2019-01-17",
"CustomerName": "DAA Hardware and Supply",
"AccountBalance": -679793.05,
"FutureBalance": 0,
"CurrentBalance": -841956.04,
"PastDueBalance1": 0,
"PastDueBalance2": -500,
"PastDueBalance3": 0,
"PastDueBalance4": 0,
"FinanceChargeTotal": 0,
"PaymentOnAcctTotal": -829596.37,
"DepositOnAcctTotal": -12359.67,
"OnHoldTotal": 0,
"TermsDiscountTotal": 0,
"LastPaymentDate": "2018-09-18",
"LastPaymentAmount": 354.05,
"PastDueBalance1Label": "2-30 Days",
"PastDueBalance2Label": "31-60 Days",
"PastDueBalance3Label": "61-90 Days",
"PastDueBalance4Label": "Over 90 Days",
"dtARBalanceDetailResponse": [
{
"CustomerID": "12345",
"BranchID": "WESTONBRANCH",
"ProcessDate": "2019-01-17",
"InvoiceBranchID": "CENTRALBRNCH",
"InvoiceNumber": "CA-000000222",
"InvoiceNumberSequence": 0,
"TransactionID": 0,
"ShipmentNumber": 0,
"InvoiceType": "Payment on Account",
"ShipToSequence": 1,
"BillToSequence": 1,
"CustomerPO": "",
"InvoiceOnHold": false,
"ShipDate": null,
"InvoiceDate": "2018-02-21",
"InvoiceDueDate": "2018-02-21",
"TermsCode": "",
"TermsDescription": "",
"TermsDiscountDate": null,
"TermsDiscountAmount": 0,
"InvoiceSubtotal": -500,
"InvoiceChargesAmount": 0,
"InvoiceTaxAmount": 0,
"InvoiceTotal": -500,
"InvoicePaymentAdjustAmount": 0,
"InvoiceBalance": -500,
"TransactionReference": "",
"TransactionJob": "",
"PaymentId": "02212018002741",
"CMOrigInvoiceNumber": "",
"ShipToName": "",
"ShipToAddress1": "",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "",
"ShipToState": "",
"ShipToZip": "",
"PastDueBalanceBucket": ""
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the current AR aging information and related invoices
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- Overall account balance and related invoice information
Notes
- This method returns sold-to level information only, regardless of the levels for printing statements defined on the customer record
- If you have data allocations to some but not all of the ship-tos for a customer, the method returns only A/R balance information for the ship-tos you are authorized to access
- This method may return information for branches the user does not have access to, depending on the setting the View A/R Detail for All Branches action allocation
- The Type and Cycle Code settings on the customer record are ignored when retrieving information using this method
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList
Version Deployed
v539
CashReceiptsACHPayment
Sample Request
{
"request": {
"CashReceiptsPaymentJSON": {
"dsCashReceiptsPaymentRequest": {
"dtCashReceiptsPaymentRequest": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"BilltoSequence": 1,
"BankGUID": "1013f4e-2f02-128b-6614-aabd68261354",
"AmountTendered": 100,
"PaymentDate": null
}
]
}
}
}
}
Sample Response
{
"response": {
"CashReceiptsPaymentJSONResponse": {
"dsARInvoiceResponse": {
"dtARInvoiceResponse": [
{
"InvoiceNumber": "CA-000001169",
"AmountTendered": 100,
"PaymentID": "03042022009608"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates ACH cash on account using the bank specified
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BilltoSequence
BankGUID
AmountTendered
Optional Inputs
PaymentDate
Response
- ReturnCode
MessageText
- Cash on account transaction information
Notes
- The ‘Enter Payment via CashReceiptsPayment API’ action allocation must be granted to use this request.
- Data allocations must be granted for the customer specified.
- Whether a customer bill-to or ship-to sequence is required is determined by the ‘Cash and finance charge level’ set in AR Parameters. If set to bill-to, you can use a bill-to, ship-to, or a valid combination of both. If set to ship-to, a ship-to sequence must be provided, and any provided bill-to sequence will be ignored.
- The
BankGUID
input is a system-assigned value that uniquely identifies the Customer Bank record. This is not the bank account. - When AR Parameters ‘Cash and finance charge level’ is set to “Ship-to”, the
BankGUID
value is validated against all three levels of Customer Bank records (“Ship-to”, “Bill-to” or “Customer”) based on the ship-to sequence specified. - When AR Parameters ‘Cash and finance charge level’ is set to “Bill-to”, any ship-to specified must be valid for the bill-to sequence specified. The
BankGUID
value is validated against all three levels of Customer Bank records based on the bill-to and/or ship-to sequence specified. PaymentDate
defaults to the current day if no date is provided.
Relationships
ContextId
andBranch
come from LoginBankGUID
comes from CustomerACHBankList
Version Deployed
v555
CashReceiptsCCManualPayment
Sample Request
{
"request": {
"CashReceiptsPaymentJSON": {
"dsCashReceiptsPaymentRequest": {
"dtCashReceiptsPaymentRequest": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"BilltoSequence": 1,
"ProcessorTransactionID": "133982036",
"PaymentDate": null
}
]
}
}
}
}
Sample Response
{
"response": {
"CashReceiptsPaymentJSONResponse": {
"dsARInvoiceResponse": {
"dtARInvoiceResponse": [
{
"InvoiceNumber": "CA-000001169",
"AmountTendered": 212,
"ApprovedAmount": 212,
"PaymentID": "133982036"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates cash on a customer account using the ID from a previously processed transaction.
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BilltoSequence
ProcessorTransactionID
Optional Inputs
PaymentDate
Response
- ReturnCode
MessageText
- Cash on account transaction information
Notes
- Access to the Credit Card Interface must be granted to use this request.
- The ‘Enter Payment via CashReceiptsPayment API’ action allocation must be granted to use this request.
- Data allocations must be granted for the customer specified.
- Whether a customer bill-to or ship-to sequence is required is determined by the ‘Cash and finance charge level’ set in AR Parameters. If set to bill-to, you can use a bill-to, ship-to, or a valid combination of both. If set to ship-to, a ship-to sequence must be provided, and any provided bill-to sequence will be ignored.
- This request is used to record transactions in Agility that have taken place in eCommerce platforms. Use the TransactionID provided by WorldPay on the original transaction as the
ProcessorTransactionID
when sending the request to Agility. PaymentDate
defaults to the current day if no date is provided.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555
CashReceiptsCCTokenPayment
Sample Request
{
"request": {
"CashReceiptsPaymentJSON": {
"dsCashReceiptsPaymentRequest": {
"dtCashReceiptsPaymentRequest": [
{
"CustomerID": "SH001",
"ShiptoSequence": 1,
"BilltoSequence": 1,
"PaymentAccountID": "D91A5-4EF3-9968-3E35F0F562A8",
"AllowTokenDelete": false,
"AmountTendered": 100,
"PaymentDate": null,
"Surcharge": 3,
"SurchargeBasis": "Percent",
"UseAgilitySurcharge": false
}
]
}
}
}
}
Sample Response
{
"response": {
"CashReceiptsPaymentJSONResponse": {
"dsARInvoiceResponse": {
"dtARInvoiceResponse": [
{
"InvoiceNumber": "CA-000000002",
"AmountTendered": 100,
"Surcharge": 3,
"ApprovedAmount": 103,
"PaymentID": "148473539",
"dtARReceiptResponse": [
{
"MerchantName": "Nebraska Pro Dealer",
"MerchantAddress1": "1460 35th Ave",
"MerchantAddress2": "",
"MerchantCity": "Columbus",
"MerchantState": "NE",
"MerchantZIP": "68601",
"TransactionAmount": 100,
"TransactionDate": "2022-05-13",
"AccountNumber": "xxxx-xxxx-xxxx-5550",
"AuthorizationCode": "148473539",
"ApplicationID": "961",
"SurchargeAmount": 3,
"SurchargeDescriptor": "Surcharge",
"CardNetworkName": "Visa",
"ApplicationLabel": "Agility",
"TerminalID": "0001",
"CardholderName": "Sunset Hills",
"SalesTaxAmount": 0,
"TransactionType": "CreditCardSale",
"EntryMode": "Keyed",
"ApprovalNumber": "000016",
"HostResponse": "000/AP"
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates cash on a customer account using a saved credit card token
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BilltoSequence
PaymentAccountID
AmountTendered
Optional Inputs
PaymentDate
AllowTokenDate
Surcharge
SurchargeBasis
UseAgilitySurcharge
Response
- ReturnCode
MessageText
- Cash on account transaction information
Notes
- Access to the Credit Card Interface must be granted to use this request.
- The ‘Enter Payment via CashReceiptsPayment API’ action allocation must be granted to use this request.
- Data allocations must be granted for the customer specified.
- Whether a customer bill-to or ship-to sequence is required is determined by the ‘Cash and finance charge level’ set in AR Parameters. If set to bill-to, you can use a bill-to, ship-to, or a valid combination of both. If set to ship-to, a ship-to sequence must be provided, and any provided bill-to sequence will be ignored.
- This request is processed immediately in Agility using a
PaymentAccountID
. - If the
PaymentAccountID
is not already in the customer’s saved credit cards list, theAllowDeleteToken
value must be set to true. Deleted tokens cannot be reused in subsequent requests. AllowTokenDelete
defaults to false.PaymentDate
defaults to the current day if no date is provided.- Detailed information about this payment is written to A/R remarks (ARREM).
- If
UseAgilitySurcharge
is true,Surcharge
andSurchargeBasis
are ignored. - If
UseAgilitySurcharge
is false, thesurcharge
is calculated based on the values inSurcharge
andSurchargeBasis
.Surcharge
discounts set at the bill-to or ship-to level are ignored. - If a
surcharge
is not defined on the payment method or the bill-to/ship-to customer is set to ‘Do not calculate’, you cannot add asurcharge
via theSurcharge
andSurchargeBasis
fields. - Information intended for receipt creation is returned on both approved and declined transactions
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555; surcharge fields added in v556
CreditStatusUpdate
Sample Request
{
"request": {
"SalesOrderID": 1000346179,
"ShipmentNum": 0,
"CreditStatusUpdateJSON": {
"dsCreditStatusUpdateRequest": {
"dtCreditStatusUpdateRequest": [{
"CreditStatus": "Pending",
"PendingNote": "Awaiting Phone Call"
}]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Change the credit hold status of an existing Sales Order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Branch
SalesOrderID
ShipmentNum
CreditStatus
Optional Inputs
PendingNote
Response
Notes
Relationships
- Valid Values for
CreditStatus
are Hold, Pending, Approved
Version Deployed
v601
CustomerACHBankList
Sample Request
{
"request": {
"CustomerACHBankListJSON": {
"dsCustomerRequest": {
"dtCustomerRequest": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"BilltoSequence": 0
}
]
}
}
}
}
Sample Response
{
"response": {
"CustomerACHBankListJSONResponse": {
"dsACHBankAccountResponse": {
"dtACHBankAccountResponse": [
{
"CustomerID": "ATHOME",
"CustomerType": "Ship-to",
"ShiptoBilltoSequence": 1,
"BankName": "SHIPTO 1-1",
"BankAcctName": "Ship-to 1 account name",
"TruncatedAccountNumber": "Acct ending 0123",
"BankGUID": "1026a-da9c-8214-8e3fd0ce006b",
"AccountType": "Savings",
"DefaultAccountForCashApp": false
},
{
"CustomerID": "BUIL103",
"CustomerType": "Ship-to",
"ShiptoBilltoSequence": 1,
"BankName": "SHIPTO 1-2",
"BankAcctName": "",
"TruncatedAccountNumber": "Acct ending 7439",
"BankGUID": "1031351385-9014-c15f98655c8b",
"AccountType": "Checking",
"DefaultAccountForCashApp": false
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of approved customer bank records for a specific customer ship-to or bill-to
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BilltoSequence
Optional Inputs
N/A
Response
- ReturnCode
MessageText
- Customer bank information
Notes
- You must specify either a bill-to or ship-to sequence. If a bill-to is not provided, the bill-to assigned to the ship-to sequence is used.
- User must have data allocations granted for the customer specified.
- The
BankGUID
input is a system-assigned value that uniquely identifies the Customer Bank record. This is not the bank account. - Only banks set to approved for ACH processing display.
- When a ship-to sequence is specified, the system uses the ship-to bank if it exists. If it does not exist, the bill-to bank is used. If a bill-to bank does not exist, the customer bank is used.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v556
CustomerOpenActivity
Sample Request
{
"request": {
"CustomerID": "IDEAL",
"ShiptoSequence": 1
}
}
Sample Response
{
"response": {
"OrdersResponse": {
"dsOrdersResponse": {
"dtOrderResponse": [
{
"BranchID": "1MELISSA",
"OrderID": 2238,
"CustomerID": "IDEAL",
"ShipToSequence": 1,
"OrderedBy": "",
"OrderDate": "2021-11-11",
"ExpectedDate": "2021-11-11",
"OrderStatus": "Open",
"OrderProcessStatus": "",
"CreditHoldStatus": "",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"RouteID": "",
"ShipVia": "FedEx",
"FreightTerms": "",
"PayTermsCode": "NET30",
"OrderSubtotal": 20.02,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "AK",
"OrderTaxAmount": 0,
"OrderTotal": 20.02,
"DiscountAmount": 0,
"AfterDeductFreightAmt": 0,
"ShipToName": "Ideal Building Supply",
"ShipToAddress1": "3333 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68130",
"ShipToPhone": "(402)-440-6890",
"BillToName": "Ideal Building Supply",
"BillToAddress1": "3333 R Road",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "Cook",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68130",
"BillToPhone": "(402)-440-6890",
"SalesAgentID1": "AGENT1",
"SalesAgentName1": "Sales Agent 1",
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"UpdateDate": "2021-11-11",
"UpdateTime": "12:46:11",
"ContactEmail": "",
"ContactName": "",
"ContactPhone": "",
"ShipComplete": false,
"CostTotal": 22,
"CostType": "Item default",
"TotalWeight": 2,
"TotalLoad": 2,
"dtOrderDetailResponse": [
{
"BranchID": "1MELISSA",
"OrderID": 2238,
"Sequence": 1,
"DisplaySequence": 1,
"LineType": "SO",
"ItemCode": "PI-BLANK-A100",
"ItemSize": "50ct",
"ItemDescription": "Common Nails",
"TotalOrderedQuantity": 2,
"QuantityUOM": "EA",
"GrossPrice": 10.01,
"NetPrice": 10.01,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": 20.02,
"TotalBackorderedQuantity": 0,
"TotalStagedQuantity": 0,
"TotalUnstagedQuantity": 2,
"TotalInvoicedQuantity": 0,
"LinkedTranType": "",
"LinkedTranID": 0,
"LinkedTranSequence": 0,
"CustomerPOLineNumber": "000001",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ExtCost": 21.9994,
"ExtWeight": 2,
"ExtLoad": 2,
"ExpectedDate": "2021-11-11",
"ItemXrefUsedToOrder": "",
"RelatedQuoteBranchID": "CENTRALBRNCH",
"RelatedQuoteID": 300160114,
"RelatedQuoteExternalSource": "",
"RelatedQuoteExternalProjectID": "GRIDS-ABC"
}
]
}
]
}
},
"QuotesResponse": {
"dsQuotesResponse": {
"dtQuoteResponse": [
{
"BranchID": "1MELISSA",
"QuoteID": 2239,
"HeaderGUID": "102944-eb05-2ca1-8a14-0fea006d75a8",
"QuoteType": "",
"CustomerID": "IDEAL",
"ShipToSequence": 1,
"QuotedBy": "mwellensiek",
"QuotedFor": "",
"QuoteDate": "2021-11-11",
"ActivationDate": "2021-11-11",
"ClosedDate": "2022-03-11",
"QuoteProcessStatus": "Open",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"ShipVia": "FedEx",
"FreightTerms": "",
"PayTermsCode": "NET30",
"OrderSubtotal": 20.02,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "AK",
"OrderTaxAmount": 0,
"OrderTotal": 20.02,
"DiscountAmount": 0,
"AfterDeductFreightAmt": 0,
"ShipToName": "Ideal Building Supply",
"ShipToAddress1": "3333 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68130",
"ShipToPhone": "(402)-440-6890",
"BillToName": "Ideal Building Supply",
"BillToAddress1": "3333 R Road",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "Cook",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68130",
"BillToPhone": "(402)-440-6890",
"SalesAgentID1": "AGENT1",
"SalesAgentName1": "Sales Agent 1",
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"ExpectedDate": "2021-11-11",
"dtQuoteDetailResponse": [
{
"BranchID": "1MELISSA",
"QuoteID": 2239,
"Sequence": 1,
"DisplaySequence": 1,
"ItemCode": "PI-BLANK-A100",
"ItemSize": "50ct",
"ItemDescription": "Common Nails",
"DetailProcessStatus": "Open",
"TotalOrderedQuantity": 2,
"QuantityUOM": "EA",
"GrossPrice": 10.01,
"NetPrice": 10.01,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": 20.02,
"WOPhrase": "",
"DetailGroupID": "",
"TotalReleasedQuantity": 0,
"TotalRemainingQuantity": 9
}
]
}
]
}
},
"CreditMemosResponse": {
"dsCreditMemosResponse": {
"dtCreditMemoResponse": [
{
"BranchID": "1MELISSA",
"OrderID": 2237,
"CustomerID": "IDEAL",
"ShipToSequence": 1,
"OrderedBy": "Melissa",
"OrderDate": "2021-11-11",
"ExpectedDate": null,
"OrderStatus": "Open",
"OrderProcessStatus": "",
"CreditHoldStatus": "",
"ApprovalStatus": "Hold",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"RouteID": "",
"ShipVia": "FedEx",
"FreightTerms": "",
"PayTermsCode": "NET30",
"OrderSubtotal": -10.01,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "AK",
"OrderTaxAmount": 0,
"OrderTotal": -10.01,
"DiscountAmount": 0,
"AfterDeductFreightAmt": 0,
"ShipToName": "Ideal Building Supply",
"ShipToAddress1": "3333 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68130",
"ShipToPhone": "(402)-440-6890",
"BillToName": "Ideal Building Supply",
"BillToAddress1": "3333 R Road",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "Cook",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68130",
"BillToPhone": "(402)-440-6890",
"SalesAgentID1": "AGENT1",
"SalesAgentName1": "Sales Agent 1",
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"UpdateDate": "2021-11-11",
"UpdateTime": "12:45:13",
"ContactEmail": "",
"ContactName": "",
"ContactPhone": "",
"ShipComplete": false,
"CostTotal": -11,
"CostType": "Item default",
"TotalWeight": 1,
"TotalLoad": 1,
"StatusType": "RMA",
"dtCreditMemoDetailResponse": [
{
"BranchID": "1MELISSA",
"OrderID": 2237,
"Sequence": 1,
"DisplaySequence": 1,
"LineType": "CM",
"ItemCode": "PI-BLANK-A100",
"ItemSize": "50ct",
"ItemDescription": "Common Nails",
"TotalOrderedQuantity": -1,
"QuantityUOM": "EA",
"GrossPrice": 10.01,
"NetPrice": 10.01,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": -10.01,
"TotalBackorderedQuantity": 0,
"TotalStagedQuantity": 0,
"TotalUnstagedQuantity": 0,
"TotalInvoicedQuantity": 0,
"LinkedTranType": "",
"LinkedTranID": 0,
"LinkedTranSequence": 0,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ExtCost": -10.9997,
"ExtWeight": 1,
"ExtLoad": 1
}
]
}
]
}
},
"BalanceResponse": {
"dsCustBalanceResponse": {
"dtBalanceHeaderResponse": [
{
"CustomerID": "IDEAL",
"BranchID": "1MELISSA",
"ProcessDate": "2021-11-11",
"CustomerName": "Ideal Building Supply",
"AccountBalance": 20.02,
"FutureBalance": 0,
"CurrentBalance": 20.02,
"PastDueBalance1": 0,
"PastDueBalance2": 0,
"PastDueBalance3": 0,
"PastDueBalance4": 0,
"FinanceChargeTotal": 0,
"PaymentOnAcctTotal": 0,
"DepositOnAcctTotal": 0,
"OnHoldTotal": 0,
"TermsDiscountTotal": 0,
"LastPaymentDate": null,
"LastPaymentAmount": 0,
"PastDueBalance1Label": "31-60 Days",
"PastDueBalance2Label": "61-90 Days",
"PastDueBalance3Label": "91-120 Days",
"PastDueBalance4Label": "Over 120 Days",
"dtBalanceDetailResponse": [
{
"CustomerID": "IDEAL",
"BranchID": "1MELISSA",
"ProcessDate": "2021-11-11",
"InvoiceNumber": "MSW0000002236-001",
"InvoiceNumberSequence": 0,
"TransactionID": 2236,
"ShipmentNumber": 1,
"InvoiceType": "Invoice",
"ShipToSequence": 1,
"BillToSequence": 1,
"CustomerPO": "",
"InvoiceOnHold": false,
"ShipDate": "2021-11-11",
"InvoiceDate": "2021-11-11",
"InvoiceDueDate": "2021-12-11",
"TermsCode": "NET30",
"TermsDescription": "Net 30",
"TermsDiscountDate": null,
"TermsDiscountAmount": 0,
"InvoiceSubtotal": 20.02,
"InvoiceChargesAmount": 0,
"InvoiceTaxAmount": 0,
"InvoiceTotal": 20.02,
"InvoicePaymentAdjustAmount": 0,
"InvoiceBalance": 20.02,
"TransactionReference": "",
"TransactionJob": "",
"PaymentId": "",
"CMOrigInvoiceNumber": "",
"ShipToName": "Ideal Building Supply",
"ShipToAddress1": "3333 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToZip": "68130",
"PastDueBalanceBucket": ""
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of open orders, open quotes, open credit memos, and the AR balances for a specific customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Optional Inputs
ShiptoSequence
Response
- ReturnCode
MessageText
- Overall account balance and related invoice information
Notes
- This method is conditioned to return only open sales orders, credit memos, and quotes. Invoiced and cancelled transactions are excluded.
- This method can be run with or without a
ShiptoSequence
. When run with aShiptoSequence
, AR balance information is returned at the sold-to level only
Relationships
ContextId
comes from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShiptoSequence
come from CustomerShiptoList
Version Deployed
v539, approval status added to response in v554; DetailGroupID
, TotalReleaseQuantity
, and TotalRemainingQuantity
fields added to the response in v609; RelatedQuoteID
, RelatedQuoteExternalSource
, and RelatedExternalProjectID
fields added to the response in v610
InvoicePayment
Sample Request
{
"request": {
"InvoicePaymentJSON": {
"dsInvoicePaymentRequest": {
"dtCustomerRequest": [
{
"CustomerID": "ATHOME",
"PaymentDate": null,
"dtInvoiceRequest": [
{
"BranchID": "CENTRALBRNCH",
"InvoiceNumber": "CNTL0302283-001",
"InstallmentSequence": 1,
"PaymentAmount": 280,
"DiscountAmount": 16.5,
"Remark": "A/R Remark",
"Reason Code": "A/R Reason Code"
},
{
"BranchID": "EASTMOND",
"InvoiceNumber": "EAST3100155-001",
"InstallmentSequence": 1,
"PaymentAmount": 150,
"DiscountAmount": 0,
"Remark": "A/R Remark",
"Reason Code": "A/R Reason Code"
}
],
"dtPaymentRequest": [
{
"BranchID": "CENTRALBRNCH",
"InvoiceNumber": "CNTL0352345-001",
"PaymentAmount": 110,
"Remark": "A/R Remark",
"Reason Code": "A/R Reason Code"
},
{
"BranchID": "CENTRALBRNCH",
"InvoiceNumber": "CA-000000012",
"PaymentAmount": 320,
"Remark": "A/R Remark",
"Reason Code": "A/R Reason Code"
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"InvoicePaymentJSONResponse": {
"dsAROpenResponse": {
"dtAROpenResponse": [
{
"CustomerID": "ATHOME",
"BranchID": "CENTRALBRNCH",
"ProcessDate": "2022-02-14",
"InvoiceNumber": "CNTL0302345-001",
"InstallmentSequence": 1,
"TransactionID": 300152345,
"ShipmentNumber": 1,
"InvoiceType": "Credit Memo",
"ShipToSequence": 1,
"BillToSequence": 1,
"OpenAmount": 114,
"PaymentAmount": 110,
"DiscountAmount": 0,
"InvoiceBalance": 4,
"Remark": "A/R Remark",
"ReasonCode": "A/R Reason Code"
},
{
"CustomerID": "ATHOME",
"BranchID": "CENTRALBRNCH",
"ProcessDate": "2022-02-14",
"InvoiceNumber": "CA-000000012",
"InstallmentSequence": 1,
"TransactionID": 0,
"ShipmentNumber": 0,
"InvoiceType": "Payment on Account",
"ShipToSequence": 1,
"BillToSequence": 1,
"OpenAmount": 680,
"PaymentAmount": 320,
"DiscountAmount": 0,
"InvoiceBalance": 360,
"Remark": "A/R Remark",
"ReasonCode": "A/R Reason Code"
},
{
"CustomerID": "ATHOME",
"BranchID": "CENTRALBRNCH",
"ProcessDate": "2022-02-14",
"InvoiceNumber": "CNTL0302283-001",
"InstallmentSequence": 1,
"TransactionID": 300152283,
"ShipmentNumber": 1,
"InvoiceType": "Invoice",
"ShipToSequence": 1,
"BillToSequence": 1,
"OpenAmount": 424,
"PaymentAmount": 280,
"DiscountAmount": 16.5,
"InvoiceBalance": 127.5,
"Remark": "A/R Remark",
"ReasonCode": "A/R Reason Code"
},
{
"CustomerID": "ATHOME",
"BranchID": "EASTMOND",
"ProcessDate": "2022-02-14",
"InvoiceNumber": " EAST310085-001",
"InstallmentSequence": 1,
"TransactionID": 3100152285,
"ShipmentNumber": 1,
"InvoiceType": "Invoice",
"ShipToSequence": 1,
"BillToSequence": 1,
"OpenAmount": 868,
"PaymentAmount": 150,
"DiscountAmount": 0,
"InvoiceBalance": 718,
"Remark": "A/R Remark",
"ReasonCode": "A/R Reason Code"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Applies payments to invoices
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
dtInvoiceRequest (BranchID, InvoiceNumber, PaymentAmount, DiscountAmount)
dtPaymentRequest (BranchID, Invoice Number, PaymentAmount)
Optional Inputs
PaymentDate
InstallmentSequence
Remark
Response
- ReturnCode
MessageText
- Transaction and balance information for each invoice.payment a payment was applied to or from
Notes
- Multiple
dtInvoiceRequest
and/ordtPaymentRequest
can be specified - If
PaymentDate
is not specified, the current date is used - Includes payments with the following ref_types: CA (cash on account), CM (credit memo), CI (credit invoice).
- Includes invoices with the following ref_types: IN (invoice), FC (finance charge invoice), DM (debit memo).
PaymentAmount
represents the amount of payment being applied to the invoice not including the discount amount.- Each payment and invoice require a non-zero
PaymentAmount
. - The total
PaymentAmount
of all invoices must be equal to the totalPaymentAmount
of all payments. - The total of
PaymentAmount
+DiscountAmount
must be <= the open amount of the invoice. For payments,PaymentAmount
cannot exceed the open amount of the payment. - All
PaymentAmount
andDiscountAmount
values are processed as a positive regardless of the positive or negative value included in the request. - Invoices and payments are validated against the current branch’s A/R sharing branch.
BranchID
represents the branch the invoice/payment exists. - This method may apply payments for branches the user does not have access to, depending on the setting the View A/R Detail for All Branches security action.
- Remarks sent create a standard A/R Remark for the invoice and the payment, are set to editable, and are not set to print on statements. Remarks must be less than 6000 characters.
- Reason Codes created in Reason Code Maintenance with A/R open type and Available for use can be specified for invoices and payments.
- When a customer short pays an invoice, the system can optionally assign a reason code to the record. Refer to the Short Pay Reason Codes section within the Processing Rules of A/R Cash Application for more information.
The following applies only to customers on Agility version 604 and above:
- The
InstallmentSequence
is used if specifying an installment sequence when applying payments to installment invoices. - When the value in this field corresponds to an installment on the specified invoice, the system applies the payment to the specific installment.
- When the value in this field is "0" and there are no payments with an installment sequence defined, the system applies the payment to the lowest (numerically) open installment until it is fully paid or the payment is fully applied.
- If there are remaining payments to apply, the system continues to the next lowest installment until all invoices are paid or the payment is fully applied.
- If a discount is specified on an installment invoice payment and the
InstallmentSequence
is “0”, the system applies the discount to the first installment. - When utilizing the
InstallmentSequence
field, the value must be zero or greater and cannot be left blank.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555; Remark added in v556 v612; Reason Code, Remark for payment v612, Remarks, not set to print on statements
InvoicesList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "IPS",
"ShiptoSequence": 1,
"IncludeOnlyOpenInvoices": false,
"InvoiceDateRangeStart": "2022-03-02",
"InvoiceDateRangeEnd": "2022-03-02",
"ChunkStartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"InvoiceResponse": {
"dsInvoiceResponse": {
"dtInvoiceOrderResponse": [
{
"BranchID": "CENTRALBRNCH",
"InvoiceNumber": "CNTL0300153610-001",
"InvoiceNumberSequence": 0,
"TransactionID": 300153610,
"TransactionType": "SO",
"ShipmentNumber": 1,
"InvoiceType": "Invoice",
"CustomerID": "HAR01",
"ShipToSequence": 2,
"OrderedBy": "Daniel Jacob",
"OrderDate": "2023-01-13",
"ShipDate": "2023-01-13",
"InvoiceDate": "2023-01-13",
"InvoiceDueDate": "2023-01-13",
"InvoiceStatus": "Open",
"SaleType": "wh",
"SaleTypeDescription": "Orders shipped through the warehouse",
"TransactionJob": "1435-PPL",
"TransactionReference": "89347-PY",
"CustomerPO": "",
"RouteID": " ",
"ShipVia": "Our Truck",
"FreightTerms": "",
"PayTermsCode": "COD",
"PaymentTermsDescription": "COD - NO DISCOUNT",
"OrderSubtotal": 1000,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "IA_GRUNDY_REINBECK",
"OrderTaxAmount": 70,
"OrderTotal": 1070,
"InvoicePaymentAdjustAmount": 0,
"OrderBalance": 1070,
"DiscountAmount": 0,
"DiscountDate": null,
"AfterDeductFreightAmt": 0,
"DiscountPercent": 0,
"DiscountableAmount": 1000,
"DueDays": 0,
"DiscountDays": 0,
"ShipToName": "Harris Corporation S2",
"ShipToAddress1": "906 Park Street",
"ShipToAddress2": "Suite 234",
"ShipToAddress3": "P O Box 32211",
"ShipToCity": "Reinbeck",
"ShipToState": "IA",
"ShipToCountry": "USA",
"ShipToZip": "50669 ",
"ShipToPhone": "(402)-330-6620",
"BillToName": "Harris Corporation B2",
"BillToAddress1": "85858 SW Avenue",
"BillToAddress2": "Suite 234",
"BillToAddress3": "P O Box 32211",
"BillToCity": "Omaha",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68046 0005",
"BillToPhone": "(402)-330-6620",
"SalesAgentID1": "0524",
"SalesAgentName1": "AP Keaton",
"SalesAgentID2": "002",
"SalesAgentName2": "James Harrison",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"MiscField1": "B Thomas",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "42.3236° N",
"MiscField8": "92.5994° W",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": null,
"MiscDate2": null,
"CustomerName": "Harris Corporation Internation",
"APISourceID": "",
"SalesAgent1PctOfOrder": 50,
"SalesAgent2PctOfOrder": 50,
"SalesAgent3PctOfOrder": 0,
"SalesAgent4PctOfOrder": 0,
"SalesAgent5PctOfOrder": 0,
"SalesAgent6PctOfOrder": 0,
"dtInvoiceDetailResponse": [
{
"BranchID": "CENTRALBRNCH",
"InvoiceNumber": "CNTL0300153610-001",
"InvoiceNumberSequence": 0,
"TransactionID": 300153610,
"TransactionType": "SO",
"ShipmentNumber": 1,
"InvoiceType": "Invoice",
"Sequence": 1,
"DisplaySequence": 1,
"ItemCode": "2827",
"PartNumber": "2827AC",
"ItemSize": "",
"ItemDescription": "Zinc-Plated Hex Lag Screw Indoor/Outdoor",
"ExtendedDescription": "2827 Steel construction, Zinc plated Hex Lag Screw\nIndoor/Outdoor. Use with DECORATIVE HINGED SCREW COVER to securely fasten DECK MOUNT TERMINAL or INTERMEDIATE ALUMINUM POSTS to the top of a deck. Pre-drill and ensure lag penetrates into structural framing and not just the deck boards.",
"TotalOrderedQuantity": 2,
"ShippedQuantity": 2,
"QuantityUOM": "BNDL",
"Price": 10,
"PriceUOM": "EA",
"DiscountDescription": "",
"ExtendedPrice": 1000,
"CustomerPOLineNumber": "000001",
"ItemXrefUsedToOrder": "",
"OriginalPrice": 0,
"OriginalPriceUOM": "EA",
"OriginalOrderedQty": 10,
"OriginalOrderedQtyUOM": "BAG"
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of invoices, including invoice details, for a specific customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
IncludeOnlyOpenInvoices
InvoiceDateRangeStart
InvoiceDateRangeEnd
ChunkStartPointer
RecordFetchLimit
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- list of invoices
- including details
Notes
- To request invoices for all ship-tos, enter a value of 0 in
ShiptoSequence
- This method allows a date range for criteria. Please see the Special notes for input values related to data topic for more information
- This method allows a user to request a specific number of records. Please see the Chunking topic for more information
SearchBy
andSearchValue
, while displayed as inputs, are not operational for this method and are reserved for future use- The following rules apply when displaying shipping tracking information:
- When the
InvoiceDetailSequence
= 0, the tracking information is stored at the header - When the
InvoiceDetailSequence
is not 0, the tracking information applies to the invoice detail sequence specified - The system displays tracking information at the lowest level. For example, if a tracking number exists at the header level and another exists at the detail level, the system displays the detail level tracking number. If tracking numbers exist only at the header level, then the system displays these header level tracking numbers.
- When the
Relationships
Parent/Child relationship exists between
dtInvoiceOrder
anddtInvoiceDetail
throughInvoiceNumber
. Please see Parent/Child relationship topic for more informationContextId
comes from LoginAlternate branches come from BranchList
Valid values for
CustomerID
come from CustomersList or CustomerShiptoListValid values for
ShiptoSequence
come from CustomerShiptosListPlease see Parent/Child relationship topic for more information on the following:
A one to many Parent/Child relationship exists between
dtInvoiceOrderResponse
anddtInvoiceDetailResponse
throughInvoiceNumber
.A one to many Parent/Child relationship exists between
dtInvoiceOrderResponse
anddtTrackingHeaderResponse
throughInvoiceNumber
.A one to many Parent/Child relationship exists between
dtInvoiceDetailResponse
anddtSerialNumberDetailResponse
throughSequence
.The
ShipVia
is the stored on the shipment at the time of invoicing. If the stored value is blank, then the system displays the ship via value from the sales order header.The
PartNumber
displays the part number stored on the so_detail. If this is blank, then the system searches for the related cross reference. If the cross reference is for a sheet good item, then the system finds the dimension-specific cross reference if available. If the item is a dimensional item but not a sheet good item, the system finds the 00x00x00 cross reference.The
ItemXrefUsedToOrder
displays the item cross reference field from the Sales order detail.
Version Deployed
v539
PendingPaymentList
Sample Request
{
"request": {
"PendingPaymentJSON": {
"dsPendingPaymentRequest": {
"dtPendingPaymentRequest": [
{
"CustomerID": "jj.0007",
"ShiptoSequence": 1,
"PaymentAccountID": "8e123sf165sd4f56-sdf156465",
"BankGUID": "1234360125cde1bf-f3a5-fd9e-g614-60cdab6"
}
]
}
}
}
}
Sample Response
{
"response": {
"PendingPaymentListJSONResponse": {
"dsPendingPaymentResponse": {
"dtPendingPaymentResponse": [
{
"BranchID": "WESTONBRANCH",
"TransactionID": 1000343976,
"PaymentAccountID": "8e370a6-af05-7960979b5XXX",
"TruncatedCardNumber": "xxxxxxxxxxxx5550",
"BankAcctName":"",
"TruncatedAccountNumber":""
},
{
"BranchID": "WESTONBRANCH",
"TransactionID": 1000343979,
"PaymentAccountID": "8e37640a6-af05-7960979b5XXX",
"TruncatedCardNumber": "xxxxxxxxxxxx5550",
"BankAcctName":"First National Bank",
"TruncatedAccountNumber":"x4321"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of transactions with open pending payments for a specific customer ship-to, BankGUID, or payment account ID
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
PaymentAccountID
and/orCustomerID
andShiptoSequence
ORBankGUID
and/orCustomerID
andShiptoSequence
Optional Inputs
N/A
Response
- ReturnCode
MessageText
- Sales orders with pending payments matching customer and/or payment account ID or
BankGUID
Notes
- To return a list of sales orders with pending payments, specify a customer ID and ship-to sequence and/or a payment account ID or
BankGUID
. - When
CustomerID
andShipToSequence
only are provided, the system returns data for current branch matching that customer ID and ship-to sequence. The user must have Data Allocations granted for the customer. - When
PaymentAccountID
orBankGUID
only is provided, the system returns data for any branch with pending payments that match the payment account ID orBankGUID
. Data Allocations are not validated. - When
CustomerID
,ShipToSequence
, andPaymentAccountID
orBankGUID
are provided, the system returns data for any branch with pending payments that match both the customer and payment account ID orBankGUID
. The user must have Data Allocations granted for the customer. - This method may return information for branches the user does not have access to, depending on the setting for the View A/R Detail for All Branches action allocation.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v556
SavedCreditCardCreate
Sample Request
{
"request": {
"SavedCreditCardCreateJSON": {
"dsSavedCreditCardCreateRequest": {
"dtSavedCreditCardCreateRequest": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"ReturnURL": "http://www.dmsi.com"
}
]
}
}
}
}
Sample Response
{
"response": {
"SavedCreditCardCreateJSONResponse": {
"dsSavedCreditCardCreateResponse": {
"dtSavedCreditCardCreateResponse": [
{
"TransactionSetupID": "739FF-4FD-423-89AD-94E2 AD0 ",
"ValidationCode": "A83B75D5C5C2454A",
"HostedPaymentURL": "https://cerrtranID=7 G39FFFF"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Used to direct customers who store credit cards in Agility to a specified Hosted Payments page where they can enter a new credit card to save or use to process a new transaction
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ReturnURL
Optional Inputs
N/A
Response
- ReturnCode
MessageText
- Credit card response with URL
Notes
- Access to the Credit Card Interface must be granted to use this request.
- User must have data allocations granted for the customer specified.
- Only PCI compliant information is transferred. No sensitive data is sent.
- Account information is not sent through the card issuer for authorization and only needs to pass a Mod10 check to be stored.
- The response contains information necessary to identify, validate, and the initiate the account creation transaction with WorldPay.
o
TransactionSetupID
uniquely identifies the transaction with WorldPay. The ID can only be used once expires 10 minutes after being generated. oValidationCode
is used to verify the saved card transaction. Compare theValidationCode
from this method with theValidationCode
returned by theHostedPaymentURL
. oHostedPaymentURL
directs the user to the Hosted Payment Page, which provides a GUI to enter and submit credit card information. - If you specify a
ReturnURL
in the request, theHostedPaymentURL
will redirect to theReturnURL
once the transaction has either been successfully processed or cancelled. In the event of a successful account creation, the following fields are appended to theReturnURL
’s query string:HostedPaymentStatus
,TransactionSetupID
,ServicesID
,ExpressResponseCode
,ExpressResponseMessage
,PaymentAccountID
,ValidationCode
,BillingAddress1
, andEntry
. In the event of a cancelled account creation, only theTransactionSetupID
andHostedPaymentStatus
are appended. - If you leave the
ReturnURL
blank or send it as null, theHostedPaymentURL
will not redirect the user after the transaction has been processed or cancelled. Instead, the Hosted Payment Page will display the Result, Services ID, Payment Account ID, and Card Number (truncated). - The
PaymentAccountedID
generated using theHostedPaymentURL
should not be used outside of Agility APIs. Doing so may causeNetworkTransactionIDs
to fall out of sync.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555
SavedCreditCardDelete
Sample Request
{
"request": {
"SavedCreditCardDeleteJSON": {
"dsPaymentAccountRequest": {
"dtPaymentAccountRequest": [
{
"PaymentAccountID": " 82c9c611-a9be-1a57d70d7246"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes a saved credit card
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
PaymentAccountID
Optional Inputs
N/A
Response
- ReturnCode
MessageText
Notes
- Access to the Credit Card Interface must be granted to use this request.
- Cards with pending payments cannot be deleted.
- Only one card can be deleted at a time.
- Data allocations do not apply.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555
SavedCreditCardList
Sample Request
{
"request": {
"CustomerJSON": {
"dsCustomerShipto": {
"dtCustomerShipto": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1
}
]
}
}
}
}
Sample Response
{
"response": {
"SavedCreditCardListJSONResponse": {
"dsSavedCreditCard": {
"dtSavedCreditCard": [
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"TruncatedCardNumber": "xxxxxxxxxxxx5550",
"CardType": "Mastercard",
"BillingName": "AT Home Lumber",
"BillingAddress1": "17002 Marcy St",
"BillingAddress2": "",
"BillingCity": "Omaha",
"BillingState": "NE",
"BillingZip": "68118",
"ExpirationMonth": "03",
"ExpirationYear": "22",
"PaymentAccountID": "92572-b531-3fcc204aed",
"SurchargeBasis": "",
"SurchargeAmount": 0
},
{
"CustomerID": "ATHOME",
"ShiptoSequence": 1,
"TruncatedCardNumber": "xxxxxxxxxxxx5020",
"CardType": "Visa",
"BillingName": "AT Home Lumber",
"BillingAddress1": "17002 Marcy St",
"BillingAddress2": "",
"BillingCity": "Omaha",
"BillingState": "NE",
"BillingZip": "68118",
"ExpirationMonth": "12",
"ExpirationYear": "23",
"PaymentAccountID": "c5c8421af-3aa5a2439",
"SurchargeBasis": "Percent",
"SurchargeAmount": 3
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of saved credit cards for a specific customer ship-to or bill-to
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
Optional Inputs
N/A
Response
- ReturnCode
MessageText
- Saved credit card information
Notes
- To return credit cards stored on customer bill-to records, specify a ship-to sequence associated with the desired bill-to record.
- Only active ship-to records return credit card lists.
- User must have data allocations granted for the customer specified.
SurchargeAmount
is based on the surcharge specified on the payment method as well as any surcharge discounts specified at the bill-to or ship-to level.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v555; surcharge fields added in v556
AgilityPublic/Customer Service
This AgilityPublic service contains methods related to creating and updating customer information. The following applies to all methods within the AgilityPublic Customer Service:
- When using null in the request, the value is set as follows:
- Character – ""
- Date – null
- Integer – 0
- Decimal – 0.00
- Logical – Invalid format
- When using "" in the request, the value is set as follows:
- Character – ""
- Date – Invalid format
- Integer – Invalid format
- Decimal – Invalid format
- Logical – Invalid format
CustomerBank
Sample Request
{
"request": {
"CustomerID": "",
"AccountNumber": "",
"RoutingNumber": "",
"BankJSON": {
"dsCustomerBank": {
"dtCustomerBank": [
{
"BankName": "",
"BankAccountName": "",
"AccountType": "",
"DefaultBranch": "",
"UseForACHProcessing": false,
"ApprovedForACHProcessing": false,
"DefaultACHAcctForCashApp": false
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates sold-to customer bank information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
AccountNumber
RoutingNumber
BankJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to customer must exist
- Any fields not include in the
BankJSON
assume the default values of the new or existing customer bank information record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerBilltoBank
Sample Request
{
"request": {
"CustomerID": "",
"BilltoSequence": 0,
"AccountNumber": "",
"RoutingNumber": "",
"BankJSON": {
"dsCustomerBilltoBank": {
"dtCustomerBilltoBank": [
{
"BankName": "",
"BankAccountName": "",
"AccountType": "",
"DefaultBranch": "",
"UseForACHProcessing": false,
"ApprovedForACHProcessing": false,
"DefaultACHAcctForCashApp": false
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates bill-to customer bank information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
BilltoSequence
AccountNumber
RoutingNumber
BankJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and bill-to customers must exist
- Any fields not include in the
BankJSON
assume the default values of the new or existing customer bill-to bank information record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerBilltoContact
Sample Request
{
"request": {
"CustomerID": "",
"BilltoSequence": 0,
"ContactName": "",
"ContactType": "",
"ContactJSON": {
"dsCustomerBilltoContact": {
"dtCustomerBilltoContact": [
{
"Primary": false,
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"Phone1": "",
"Phone2": "",
"OtherPhone": "",
"MobilePhone": "",
"Fax": "",
"EmailAddress": "",
"NotifyShipmentEnRoute": false,
"NotifyShipmentDelivered": false,
"NotifyShipmentRefused": false,
"ContactTitle": "",
"Salutation": "",
"OtherData": "",
"Remarks": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates bill-to customer contact
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
BilltoSequence
ContactName
ContactType
,ContactJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and bill-to customers must exist
- Any fields not included in the
ContactJSON
assume the default values of the new or existing customer bill-to contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerBilltoCreate
Sample Request
{
"request": {
"CustomerID": "",
"BilltoJSON": {
"dsCustomerBillto": {
"dtCustomerBillto": [
{
"Name": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"Email": "",
"UseBilltoInvNumFormat": false,
"UseBranchPrefix": false,
"UseHyphenBeforeShipmentID": false,
"NumCharactersForTranID": 0,
"NumCharactersForShipmentID": 0,
"CrossRefRequired": "",
"CrossRefRequiredSpecialOrders": "",
"DefaultStandardPriceLevel": 0,
"DiscountGraceDays": 0,
"ApplyCCSurchargeFee": "",
"CCSurchargeDiscountPercent": 0.0,
"IncludeInAutoCash": false,
"FinanceCharge": false,
"EDIMailbox": "",
"EDIOrgIDDigits": "",
"EDIAlternateCashAccount": "",
"EDIAlternateCashGLComponent": 0,
"EDIPaymentRules": 0,
"AutoApplyARRemitLockboxPayments": false,
"AcceptDupInvARRemit": false,
"AcceptDupInvLockboxPayments": false,
"CreateAdjInvForVariancePayDetail": false,
"SalesAgentForAdjInv": "",
"BranchForAdjInv": "",
"RemittoDivision": "",
"CustomInvoiceProcessing": "",
"AppliesToShiptoInvoices": false,
"InvoiceEmailGroupBy": "Use Forms Assignment",
"PrintInvoiceCopyForBillto": false,
"BilltoInvoicePhone": "",
"BilltoInvoiceFax": "",
"PrintInvoiceCopyForShipto": false,
"ShiptoInvoicePhone": "",
"ShiptoInvoiceFax": "",
"UseBilltoStatementSettings": false,
"StatementType": "",
"CycleCode": "",
"StatementPrintSummaryOnly": false,
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"ReferenceNum": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"MinimumFinanceCharge": 0.0,
"FinanceChargeThreshold": 0.0,
"IncludeFinanceChargeInvoices": false,
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"BilltoSequence": 2,
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a bill-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
BilltoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
BilltoSequence
Notes
- The sold-to customer must exist before creating a bill-to customer
- Any fields not included in the
BilltoJSON
assume the default values of a new customer bill-to - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Email field v550
CustomerBilltoLaserControls
Sample Request
{
"request": {
"CustomerID": "",
"BilltoSequence": 0,
"FormType": "",
"PrinterSequence": 0,
"LaserControlJSON": {
"dsCustomerBilltoLaserControls": {
"dtCustomerBilltoLaserControls": [
{
"PrinterName": "",
"FaxEmailToSource": "",
"Fax": "",
"Email": "",
"Copies": 0,
"FormFooter": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates bill-to customer laser controls
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
BilltoSequence
FormType
PrinterSequence
LaserControlJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and bill-to customers must exist
- Any fields not included in the
LaserControlJSON
assume the default values of the new or existing customer bill-to laser control record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerBilltoUpdate
Sample Request
{
"request": {
"CustomerID": "123456",
"BilltoSequence": 1,
"BilltoJSON": {
"dsCustomerBillto": {
"dtCustomerBillto": [
{
"Name": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"Email": "",
"UseBilltoInvNumFormat": false,
"UseBranchPrefix": false,
"UseHyphenBeforeShipmentID": false,
"NumCharactersForTranID": 0,
"NumCharactersForShipmentID": 0,
"CrossRefRequired": "",
"CrossRefRequiredSpecialOrders": "",
"DefaultStandardPriceLevel": 0,
"DiscountGraceDays": 0,
"ApplyCCSurchargeFee": "",
"CCSurchargeDiscountPercent": 0.0,
"IncludeInAutoCash": false,
"FinanceCharge": false,
"EDIMailbox": "",
"EDIOrgIDDigits": "",
"EDIAlternateCashAccount": "",
"EDIAlternateCashGLComponent": 0,
"EDIPaymentRules": 0,
"AutoApplyARRemitLockboxPayments": false,
"AcceptDupInvARRemit": false,
"AcceptDupInvLockboxPayments": false,
"CreateAdjInvForVariancePayDetail": false,
"SalesAgentForAdjInv": "",
"BranchForAdjInv": "",
"RemittoDivision": "",
"CustomInvoiceProcessing": "",
"AppliesToShiptoInvoices": false,
"InvoiceEmailGroupBy": "Use Forms Assignment",
"PrintInvoiceCopyForBillto": false,
"BilltoInvoicePhone": "",
"BilltoInvoiceFax": "",
"PrintInvoiceCopyForShipto": false,
"ShiptoInvoicePhone": "",
"ShiptoInvoiceFax": "",
"UseBilltoStatementSettings": false,
"StatementType": "",
"CycleCode": "",
"StatementPrintSummaryOnly": false,
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"ReferenceNum": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"MinimumFinanceCharge": 0.0,
"FinanceChargeThreshold": 0.0,
"IncludeFinanceChargeInvoices": false,
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"ReleaseOrdersUponCreditChange": false,
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates a bill-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
BilltoSequence
BilltoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The bill-to customer must exist
- Any fields not included in the
BilltoJSON
assume the default values of the existing customer bill-to record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - During processing of the request, if the 'Release eligible orders upon credit criteria change' field is set to 'Prompt' on the Agility A/R Parameters record, and the new
ReleaseOrdersUponCreditChange
field is set to 'True', the system automatically rechecks credit and releases orders based on credit criteria changes received from the API request for the customer bill-to record.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Email field v550; Updated with credit release processing v603
CustomerBranchShiptoCreate
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 1,
"BranchShiptoJSON": {
"dsCustomerBranchShipto": {
"dtCustomerBranchShipto": [
{
"UseBranchLaserControls": false,
"EnableDefaultFlags": false,
"Active": false,
"Prospect": false,
"ShipComplete": false,
"WMSShipComplete": false,
"AcceptsBO": false,
"Nonsalable": false,
"PricedPickDelv": false,
"OverridePickDelvSortOrder": false,
"ApplyPromoPricesDisc": false,
"DisplayPiecePrice": false,
"RepriceOrderAtShipment": false,
"RequireOrderAcknowledgment": false,
"TrackLinkedReceiptsOrderAck": false,
"AcceptsNightDeliveries": false,
"DisplayPaymentsOnSOSave": false,
"FullPaymentRequired": false,
"FullPaymentReqPartialShipment": false,
"FullPaymentRequiredOrderTypes": "",
"AllowOverpaymentsInvoicing": false,
"ApplyOverpaymentType": "",
"DefaultShipmentStatus": "",
"MinOrderHoldAmount": 0,
"MinOrderHoldForceShipComplete": false,
"EnableDefaultCodes": false,
"FreightTerms": "",
"ShipVia": "",
"SaleType": "",
"ECommerceSaleType": "",
"Zone": "",
"Priority": 0,
"EnableTaxes": false,
"Taxable": false,
"Taxcode": "",
"EnableSalesAgents": false,
"SalesAgent1": "",
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2": "",
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3": "",
"SalesAgent3PctOfOrder": 0.0,
"EnablePaymentTerms": false,
"PaymentTermsCode": "",
"CMPaymentTermsCode": "",
"EnableFieldRequirements": false,
"OrderedByRequired": false,
"AuthToChargeRequired": false,
"ShipViaRequired": false,
"ShipViaRequiredOrderTypes": "",
"EnableShippingTracking": false,
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"UpdSalesAgentOpenSO": false,
"UpdSalesAgentOpenQuote": false,
"UpdSalesAgentOpenCM": false,
"UpdSalesAgentOpenPOSSO": false,
"UpdSalesAgentOpenPOSQuote": false,
"UpdSalesAgentOpenPOSCM": false,
"UpdSalesAgentOpenTranNotOverride": false,
"UpdPayTermOpenSO": false,
"UpdPayTermOpenQuote": false,
"UpdPayTermOpenCM": false,
"UpdPayTermOpenTranNotOverride": false,
"UpdMinOrderHoldAmtOpenSO": false,
"SetNonSalableWithOpen": false
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a branch ship-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BranchShiptoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and ship-to customer must exist before creating a branch ship-to customer
- The associated 'enable' flag must be included and set to 'true' to input a value on a branch ship-to record
- Any fields not included in the
BranchShiptoJSON
assume the default values of a new customer branch ship-to record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value PriceGroupsAction
has one valid value during a record create. The ‘Add’ action assigns values fromPriceGroups
to the newly created branch ship-to
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Nonsalable field v548; Updated with SalesAgent#PctOfOrder
fields v550; Updated with FullPaymentReqPartialShipment field v611
CustomerBranchShiptoList
Sample Request
{
"request": {
"CustomerID": "12345",
"ShiptoSequence": 1
}
}
Sample Response
{
"response": {
"CustBranchShiptoResults": {
"dsCustBranchShiptoResponse": {
"dtCustBranchShiptoResponse": [
{
"UseBranchLaserControls": false,
"EnableDefaultFlags": false,
"Active": false,
"ShipComplete": false,
"WMSShipComplete": false,
"AcceptsBO": false,
"Nonsalable": false,
"PricedPickDelv": false,
"OverridePickDelvSortOrder": false,
"ApplyPromoPricesDisc": false,
"DisplayPiecePrice": false,
"RepriceOrderAtShipment": false,
"RequiresOrderAck": false,
"TrackLinkedReceiptsOnOrderAck": false,
"AcceptsNightDeliveries": false,
"DisplayPmtsOnSaveAutoPOS": false,
"FullPaymentRequired": false,
"FullPaymentRequiredRule": "Invoices and CM's",
"AllowOverpaymentAtInvoicing": false,
"ApplyOverpaymentType": "Cash on Account",
"ShipmentStatus": "Staged",
"MinOrderHoldAmount": 0,
"ForceShipComplete": false,
"EnableDefaultCodes": true,
"FreightTerms": "",
"ShipVia": "",
"SaleType": "WH",
"ECommerceSaleType": "WH",
"Zone": "",
"Priority": 0,
"EnableTaxes": false,
"Taxable": false,
"Taxcode": "",
"EnableSalesAgents": true,
"SalesAgentOne": "1001",
"SalesAgentTwo": "",
"SalesAgentThree": "",
"EnablePaymentTerms": true,
"PaymentTermsCode": "NET15TH",
"CMPaymentTermsCode": "",
"EnableFieldRequirements": false,
"OrderedByRequired": false,
"AuthToChargeRequired": false,
"ShipViaRequired": false,
"ShipViaAppliesTo": "SO",
"Prospect": false,
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3PctOfOrder": 0.0,
"EnableShippingTracking": false,
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"FullPaymentReqPartialShipment": true
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Gets customer branch ship-to information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
CustBranchShiptoResults
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539; Updated with Full payment required field v611
CustomerBranchShiptoLaserControls
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 0,
"FormType": "",
"PrinterSequence": 0,
"LaserControlJSON": {
"dsCustBranchShiptoLaserControls": {
"dtCustBranchShiptoLaserControls": [
{
"PrinterName": "",
"FaxEmailToSource": "",
"Fax": "",
"Email": "",
"Copies": 0,
"FormFooter": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates branch ship-to customer laser controls
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
FormType
PrinterSequence
LaserControlJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and ship-to customers must exist
- Any fields not included in the
LaserControlJSON
assume the default values of the new or existing customer branch ship-to laser control record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerBranchShiptoUpdate
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 1,
"BranchShiptoJSON": {
"dsCustomerBranchShipto": {
"dtCustomerBranchShipto": [
{
"UseBranchLaserControls": false,
"EnableDefaultFlags": false,
"Active": false,
"Prospect": false,
"ShipComplete": false,
"WMSShipComplete": false,
"AcceptsBO": false,
"Nonsalable": false,
"PricedPickDelv": false,
"OverridePickDelvSortOrder": false,
"ApplyPromoPricesDisc": false,
"DisplayPiecePrice": false,
"RepriceOrderAtShipment": false,
"RequireOrderAcknowledgment": false,
"TrackLinkedReceiptsOrderAck": false,
"AcceptsNightDeliveries": false,
"DisplayPaymentsOnSOSave": false,
"FullPaymentRequired": false,
"FullPaymentReqPartialShipment": false,
"FullPaymentRequiredOrderTypes": "",
"AllowOverpaymentsInvoicing": false,
"ApplyOverpaymentType": "",
"DefaultShipmentStatus": "",
"MinOrderHoldAmount": 0,
"MinOrderHoldForceShipComplete": false,
"EnableDefaultCodes": false,
"PriceGroupsAction": "",
"PriceGroups": "",
"FreightTerms": "",
"ShipVia": "",
"SaleType": "",
"ECommerceSaleType": "",
"Zone": "",
"Priority": 0,
"EnableTaxes": false,
"Taxable": false,
"Taxcode": "",
"EnableSalesAgents": false,
"SalesAgent1": "",
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2": "",
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3": "",
"SalesAgent3PctOfOrder": 0.0,
"EnablePaymentTerms": false,
"PaymentTermsCode": "",
"CMPaymentTermsCode": "",
"EnableFieldRequirements": false,
"OrderedByRequired": false,
"AuthToChargeRequired": false,
"ShipViaRequired": false,
"ShipViaRequiredOrderTypes": "",
"EnableShippingTracking": false,
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"UpdSalesAgentOpenSO": false,
"UpdSalesAgentOpenQuote": false,
"UpdSalesAgentOpenCM": false,
"UpdSalesAgentOpenPOSSO": false,
"UpdSalesAgentOpenPOSQuote": false,
"UpdSalesAgentOpenPOSCM": false,
"UpdSalesAgentOpenTranNotOverride": false,
"UpdPayTermOpenSO": false,
"UpdPayTermOpenQuote": false,
"UpdPayTermOpenCM": false,
"UpdPayTermOpenTranNotOverride": false,
"UpdMinOrderHoldAmtOpenSO": false,
"SetNonSalableWithOpen": false
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates a branch ship-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
BranchShiptoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The branch ship-to record must exist
- The associated 'enable' flag must be included and set to 'true' to update a field on a branch ship-to record
- Any fields not included in the
BranchShiptoJSON
assume the default values of the existing customer branch ship-to record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value PriceGroupsAction
has four valid values:- Add – Adds values from
PriceGroups
to the end of the existing price groups in rank order - Replace – Replaces all current price groups with the values from
PriceGroups
. If there are no values inPriceGroups
, a warning is given and the price groups are not updated. - Delete – Deletes price groups specified in
PriceGroups
- Delete all – Deletes all current price groups.
- Add – Adds values from
- This method includes actions that are performed after the record is updated.
- When an action updates transaction(s), the field(s) being updated on the transaction must match the original value on the customer record to perform the update.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Nonsalable field v548; Updated with SalesAgent#PctOfOrder fields v550; Updated with FullPaymentReqPartialShipment field v611
CustomerContact
Sample Request
{
"request": {
"CustomerID": "",
"ContactName": "",
"ContactType": "",
"ContactJSON": {
"dsCustomerContact": {
"dtCustomerContact": [
{
"Primary": false,
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"Phone1": "",
"Phone2": "",
"OtherPhone": "",
"MobilePhone": "",
"Fax": "",
"EmailAddress": "",
"NotifyShipmentEnRoute": false,
"NotifyShipmentDelivered": false,
"NotifyShipmentRefused": false,
"ContactTitle": "",
"Salutation": "",
"OtherData": "",
"Remarks": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates a sold-to customer contact
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ContactName
ContactType
ContactJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to customer must exist
- Any fields not included in the
ContactJSON
assume the default values of the new or existing customer contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerCreate
Sample Request
{
"request": {
"CustomerID": "",
"CustomerJSON": {
"dsCustomer": {
"dtCustomer": [
{
"Name": "",
"DivisionID": "",
"GroupID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"Email": "",
"Website": "",
"DefaultCurrency": "",
"PrintCurrency": "",
"FormPrefix": "",
"FirstInvoiceDate": "2018-05-23",
"StartDate": "2018-05-23",
"FirstOrderDate": "2018-05-23",
"LastInvoiceDate": "2018-05-23",
"Active": false,
"FinanceCharge": false,
"Nonsaleable": false,
"Prospect": false,
"CopyPriceGroupsFromShiptoSeq": 0,
"CreditCardStorageOption": "",
"CheckSoldtoCredit": false,
"CheckBilltoCredit": false,
"CheckShiptoCredit": false,
"PrintSoldtoStatement": false,
"PrintBilltoStatement": false,
"PrintShiptoStatement": false,
"StatementType": "",
"CycleCode": "",
"StatementPrintSummaryOnly": false,
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"TargetCustomer": false,
"RequireInvoice": false,
"RequireOrderAcknowledgment": false,
"ReferenceNum": "",
"ParentCustomerID": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"CertificateAppliesTo": "",
"AllowCashPayments": false,
"AllowCheckPayments": false,
"AllowCreditCardPayments": false,
"DisplayPriceOnCCDevice": "",
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"DUNNNumber": "",
"CreditManager": "",
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"LastReviewDate": "2018-05-23",
"LastApplicationDate": "2018-05-23",
"TradeClass": "",
"Class": "",
"ConsigneeCode": "",
"IndustryCode": "",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"UpdShiptoActiveWhenSetActive": false,
"UpdShiptoProspectWhenSetProspect": false,
"SetShipToBillToAddresses": "",
"UpdAddressOnNonOverriddenTrans": "",
"UpdAddressOnOverriddenTrans": false,
"SecondaryGroupsAction": "Add",
"SecondaryGroups": "Midwest",
"HomeBranch": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a sold-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
CustomerJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Creating a customer also creates default ship-to and bill-to records with a sequence of 1.
- When the ‘Auto assign customer ID’ option in Branch Controls is set, the CustomerID field is not a required input. If the CustomerID input is not populated, the next available sequence number is used.
- There are required fields on the ship-to and bill-to records that need to be updated before this customer can be used to create any transaction. Sales agent 1 and Payment terms must be updated on the ship-to record. Sales Agent for adj invoice must be updated on the bill-to record.
- Any fields not included in the
CustomerJSON
assume the default values of a new customer - DMSi strongly recommends reviewing
dsAuditResults
regardless of the ReturnCode value SecondaryGroupAction
has four valid values:- Add – Adds values from
SecondaryGroups
to the end of the existing secondary customer groups in rank order - Replace – Replaces all current secondary customer groups with the values from
SecondaryGroups
. If there are no values inSecondaryGroups
, a warning is given and the secondary customer groups are not updated. - Delete – Deletes secondary customer groups specified in
SecondaryGroups
- Delete all – Deletes all current secondary customer groups.
- Add – Adds values from
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Email field v550
CustomerLaserControls
Sample Request
{
"request": {
"CustomerID": "",
"FormType": "",
"PrinterSequence": 0,
"LaserControlJSON": {
"dsCustomerLaserControls": {
"dtCustomerLaserControls": [
{
"PrinterName": "",
"FaxEmailToSource": "",
"Fax": "",
"Email": "",
"Copies": 0,
"FormFooter": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates sold-to laser controls
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
FormType
PrinterSequence
LaserControlJSON
Optional Inputs
- N/A
Response
ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to customer must exist
- Any fields not included in the
LaserControlJSON
assume the default values of the new or existing customer laser control record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerShiptoBank
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 0,
"AccountNumber": "",
"RoutingNumber": "",
"BankJSON": {
"dsCustomerShiptoBank": {
"dtCustomerShiptoBank": [
{
"BankName": "",
"BankAccountName": "",
"AccountType": "",
"DefaultBranch": "",
"UseForACHProcessing": false,
"ApprovedForACHProcessing": false,
"DefaultACHAcctForCashApp": false
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates ship-to customer bank information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
AccountNumber
RoutingNumber
BankJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and ship-to customers must exist
- Any fields not include in the
BankJSON
assume the default values of the new or existing customer ship-to bank information record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerShiptoContact
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 0,
"ContactName": "",
"ContactType": "",
"ContactJSON": {
"dsCustomerShiptoContact": {
"dtCustomerShiptoContact": [
{
"Primary": false,
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"Phone1": "",
"Phone2": "",
"OtherPhone": "",
"MobilePhone": "",
"PrimaryMobileContact": false,
"Fax": "",
"EmailAddress": "",
"NotifyShipmentEnRoute": false,
"NotifyShipmentDelivered": false,
"NotifyShipmentRefused": false,
"ContactTitle": "",
"Salutation": "",
"OtherData": "",
"Remarks": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates ship-to customer contacts
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ContactName
ContactType
ContactJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and ship-to customers must exist
- Any fields not included in the
ContactJSON
assume the default values of the new or existing customer ship-to contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerShiptoContactDelete
Sample Request
{
"request": {
"CustomerID": "BUIL103",
"ShiptoSequence": 1,
"ContactName": "John Doe",
"ContactType": "Warehouse"
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes a customer ship-to contact record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ContactName
ContactType
ContactJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
Notes
- Only one contact can be deleted per request
- You can leave the
ContactType
value empty if the ship-to Contact Maintenance window in Agility does not contain a value for ths field
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v553
CustomerShiptoCreate
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoJSON": {
"dsCustomerShipto": {
"dtCustomerShipto": [
{
"ActiveInAllBranches": false,
"Name": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"EmergencyPhone": "",
"Email": "",
"County": "",
"BilltoSequence": 0,
"AllowAsTemplate": false,
"UserDefinedKeywords": "",
"Active": false,
"Prospect": false,
"ShipComplete": false,
"ShipCompleteWMS": false,
"AcceptsBackorders": false,
"Nonsaleable": false,
"FinanceCharge": false,
"OverridePickDelvSortOrder": false,
"ApplyPromoPriceDiscount": false,
"DisplayPiecePrice": false,
"RepriceOrderAtShipment": false,
"DefaultShipmentOnHoldInvoicing": false,
"RequireOrderAcknowledgment": false,
"TrackLinkedReceiptsOrderAck": false,
"AcceptsNightDeliveries": false,
"DisplayPaymentsOnSOSave": false,
"FullPaymentRequired": false,
"FullPaymentReqPartialShipment": false,
"FullPaymentRequiredOrderTypes": "",
"AllowOverpaymentsInvoicing": false,
"ApplyOverpaymentType": "",
"AllowCreditBalanceAsPayment": false,
"ApplyCCSurchargeFee": "",
"CCSurchargeDiscountPercent": 0.0,
"DefaultShipmentStatus": "",
"OrderEntryBranchOption": "",
"BranchOptionDefaultBranch": "",
"BranchOptionPromptDefaultBranch": false,
"MinOrderHoldAmount": 0.0,
"MinOrderHoldForceShipComplete": false,
"AdditionalScheduleLeadDays": 0,
"ApplyWMSPickThreshold": false,
"WMSUnderPickThresholdPercent": 0.0,
"CallForAppointment": false,
"StartLoadHours": "",
"EndLoadHours": "",
"AllowAddonChargeCost": "",
"EDIOrgID": "",
"EDISOCreatedInBranch": "",
"EDISpecialOrdersCreatedInBranch": "",
"EDIItemActivityCreatedInBranch": "",
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"LienRequired": false,
"LienDaysFromFirstShipment": 0,
"LienDaysFromLastShipment": 0,
"LienDaysFromLastInvoice": 0,
"LienShipmentAmtGreaterThan": 0.0,
"LienStatus": "",
"LienDateOption": "",
"LienDaysToFile": 0,
"LienMinAmountToFile": 0.0,
"FreightTerms": "",
"ShipVia": "",
"SaleType": "",
"ECommerceSaleType": "",
"Zone": "",
"Priority": 0,
"Taxable": false,
"TaxCode": "",
"SetTaxCategoryOrderEntryOnly": false,
"TaxCategory": "",
"SalesAgent1": "",
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2": "",
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3": "",
"SalesAgent3PctOfOrder": 0.0,
"PaymentTermsCode": "",
"CMPaymentTermsCode": "",
"ApplyPayTermsFromPayMethod": false,
"OrderedByRequired": false,
"AuthToChargeRequired": false,
"ShipViaRequired": false,
"ShipViaRequiredOrderTypes": "",
"PORequired": false,
"PORequiredOrderTypes": "",
"POCheckDuplicatesBy": "",
"POCheckDuplicatesNumMonths": 0,
"PORule": "",
"POBlanketValue": "",
"POValidationCode": "",
"JobNumberRequired": false,
"JobNumberRequiredOrderTypes": "",
"JobNumberRule": "",
"JobNumberBlanketValue": "",
"JobValidationCode": "",
"ReferenceRequired": false,
"ReferenceRequiredOrderTypes": "",
"ReferenceValidationCode": "",
"PickDelvPricedTicket": false,
"PickPrintDetailPrices": false,
"PickPrintPriceAsNet": false,
"PickPrintExtendedPrice": false,
"PickPrintDimExtendedPrice": false,
"DelvPrintDetailPrices": false,
"DelvPrintPriceAsNet": false,
"DelvPrintExtendedPrice": false,
"DelvPrintDimExtendedPrice": false,
"AdditionalCODBasis": "",
"CODAmount": 0.0,
"CODNotToExceedBasis": "",
"CODNotToExceedFixedAmount": 0.0,
"PrintBOMLabels": false,
"BOMLabelFormat": "",
"PrintStockLabels": false,
"StockLabelFormat": "",
"PrintNonStockLabels": false,
"NonstockLabelFormat": "",
"QuotePrintPriceAsNet": false,
"QuotePrintPriceOnly": false,
"QuotePrintExtendedPrice": false,
"QuotePrintDimExtendedPrice": false,
"OrderAckFormTitle": "",
"OrdAckPrintDetailPrices": false,
"OrdAckPrintPriceAsNet": false,
"OrdAckPrintExtendedPrice": false,
"OrdAckPrintDimExtendedPrice": false,
"OrdAckPrintTotals": false,
"OrdAckDispGroupOptions": false,
"OrdAckGroupDefault": "",
"ASNPrintDefault": "",
"ASNAutoSendWithWMS": false,
"InvPrintDetailPrices": false,
"InvPrintPriceAsNet": false,
"InvPrintExtendedPrice": false,
"InvPrintDimExtendedPrice": false,
"InvPrintPayTerm": false,
"InvPrintADFAmount": false,
"InvDispGroupOptions": false,
"InvGroupDefault": "",
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"MinimumFinanceCharge": 0.0,
"FinanceChargeThreshold": 0.0,
"IncludeFinanceChargeInvoices": false,
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"UpdAddressOnNonOverriddenTrans": "",
"UpdAddressOnOverriddenTrans": false,
"UpdSalesAgentOpenSO": false,
"UpdSalesAgentOpenQuote": false,
"UpdSalesAgentOpenCM": false,
"UpdSalesAgentOpenPOSSO": false,
"UpdSalesAgentOpenPOSQuote": false,
"UpdSalesAgentOpenPOSCM": false,
"UpdSalesAgentOpenTranNotOverride": false,
"UpdPayTermOpenSO": false,
"UpdPayTermOpenQuote": false,
"UpdPayTermOpenCM": false,
"UpdPayTermOpenTranNotOverride": false,
"UpdMinOrderHoldAmtOpenSO": false,
"HomeBranch": "",
"ActivateBasedOnHBOrgHierLevel": false,
"HomeBranchOrgHierLevel": "",
"ActivateBasedOnHBDistance": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ShiptoSequence": 2,
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a ship-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
ShiptoSequence
Notes
- The sold-to customer must exist before creating a ship-to customer
- Any fields not included in the
ShiptoJSON
assume the default values of a new customer ship-to - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value PriceGroupsAction
has one valid value during a record create. The ‘Add’ action assigns values fromPriceGroups
to the newly created ship-to.- If
ActivateBasedOnHBOrgHierLevel
is set totrue
andHomeBranchOrgHierLevel
is not included in the request then the default value from Branch Parameters will be used.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; updated with EDISpecialOrdersCreatedInBranch
, Email
, and SalesAgent#PctOfOrder
fields v550; updated with PORule
, POBlanketValue
, JobNumberRule
, and JobNumberBlanketValue
fields v551; updated with AdditionalScheduleLeadDays
field v552; updated with AllowCreditBalanceAsPayment
field v556; Updated with FullPaymentReqPartialShipment field v611
CustomerShiptoLaserControls
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 0,
"FormType": "",
"PrinterSequence": 0,
"LaserControlJSON": {
"dsCustomerShiptoLaserControls": {
"dtCustomerShiptoLaserControls": [
{
"PrinterName": "",
"FaxEmailToSource": "",
"Fax": "",
"Email": "",
"Copies": 0,
"FormFooter": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates ship-to customer laser controls
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
FormType
PrinterSequence
LaserControlJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to and ship-to customers must exist
- Any fields not included in the
LaserControlJSON
assume the default values of the new or existing customer ship-to laser control record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
CustomerShiptoRoutesList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "12345",
"ShiptoSequence": "",
"StartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"CustomerShiptoRoutesResponse": {
"dsCustomerShiptoRoutesResponse": {
"dtCustomerShiptoRoutesResponse": [
{
"CustomerID": "12345",
"ShiptoSequence": 1,
"ShiptoName": "DS SUPPLY",
"RouteID": "MON",
"RouteDescription": "MONDAY DELIVERY",
"StopID": 1
},
{
"CustomerID": "12345",
"ShiptoSequence": 1,
"ShiptoName": "DS SUPPLY",
"RouteID": "WED",
"RouteDescription": "WED DELIVERY",
"StopID": 3
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 2,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of routes associated with customer ship-to records
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
CustomerID
ShiptoSequence
ChunkStartPointer
RecordFetchLimit
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- list of routes for customer ship-tos
Notes
This method allows a user to request a specific number of records. Please see the Chunking topic for more information
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShiptoSequence
come from CustomerShiptoList
Version Deployed
v539
CustomerShiptoUpdate
Sample Request
{
"request": {
"CustomerID": "",
"ShiptoSequence": 1,
"ShiptoJSON": {
"dsCustomerShipto": {
"dtCustomerShipto": [
{
"ActiveInAllBranches": false,
"Name": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"EmergencyPhone": "",
"Email": "",
"County": "",
"BilltoSequence": 0,
"AllowAsTemplate": false,
"UserDefinedKeywords": "",
"Active": false,
"Prospect": false,
"ShipComplete": false,
"ShipCompleteWMS": false,
"AcceptsBackorders": false,
"Nonsaleable": false,
"FinanceCharge": false,
"OverridePickDelvSortOrder": false,
"ApplyPromoPriceDiscount": false,
"DisplayPiecePrice": false,
"RepriceOrderAtShipment": false,
"DefaultShipmentOnHoldInvoicing": false,
"RequireOrderAcknowledgment": false,
"TrackLinkedReceiptsOrderAck": false,
"AcceptsNightDeliveries": false,
"DisplayPaymentsOnSOSave": false,
"FullPaymentRequired": false,
"FullPaymentReqPartialShipment": false,
"FullPaymentRequiredOrderTypes": "",
"AllowOverpaymentsInvoicing": false,
"ApplyOverpaymentType": "",
"AllowCreditBalanceAsPayment": false,
"ApplyCCSurchargeFee": "",
"CCSurchargeDiscountPercent": 0.0,
"DefaultShipmentStatus": "",
"OrderEntryBranchOption": "",
"BranchOptionDefaultBranch": "",
"BranchOptionPromptDefaultBranch": false,
"MinOrderHoldAmount": 0.0,
"MinOrderHoldForceShipComplete": false,
"ApplyWMSPickThreshold": false,
"WMSUnderPickThresholdPercent": 0.0,
"CallForAppointment": false,
"StartLoadHours": "",
"EndLoadHours": "",
"AllowAddonChargeCost": "",
"EDIOrgID": "",
"EDISOCreatedInBranch": "",
"EDIItemActivityCreatedInBranch": "",
"EDISpecialOrdersCreatedInBranch": "",
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"LienRequired": false,
"LienDaysFromFirstShipment": 0,
"LienDaysFromLastShipment": 0,
"LienDaysFromLastInvoice": 0,
"LienShipmentAmtGreaterThan": 0.0,
"LienStatus": "",
"LienDateOption": "",
"LienDaysToFile": 0,
"LienMinAmountToFile": 0.0,
"PriceGroupsAction": "",
"PriceGroups": "",
"FreightTerms": "",
"ShipVia": "",
"SaleType": "",
"ECommerceSaleType": "",
"Zone": "",
"Priority": 0,
"Taxable": false,
"TaxCode": "",
"SetTaxCategoryOrderEntryOnly": false,
"TaxCategory": "",
"SalesAgent1": "",
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2": "",
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3": "",
"SalesAgent3PctOfOrder": 0.0,
"PaymentTermsCode": "",
"CMPaymentTermsCode": "",
"ApplyPayTermsFromPayMethod": false,
"OrderedByRequired": false,
"AuthToChargeRequired": false,
"ShipViaRequired": false,
"ShipViaRequiredOrderTypes": "",
"PORequired": false,
"PORequiredOrderTypes": "",
"POCheckDuplicatesBy": "",
"POCheckDuplicatesNumMonths": 0,
"PORule": "",
"POBlanketValue": "",
"POValidationCode": "",
"JobNumberRequired": false,
"JobNumberRequiredOrderTypes": "",
"JobNumberRule": "",
"JobNumberBlanketValue": "",
"JobValidationCode": "",
"ReferenceRequired": false,
"ReferenceRequiredOrderTypes": "",
"ReferenceValidationCode": "",
"PickDelvPricedTicket": false,
"PickPrintDetailPrices": false,
"PickPrintPriceAsNet": false,
"PickPrintExtendedPrice": false,
"PickPrintDimExtendedPrice": false,
"DelvPrintDetailPrices": false,
"DelvPrintPriceAsNet": false,
"DelvPrintExtendedPrice": false,
"DelvPrintDimExtendedPrice": false,
"AdditionalCODBasis": "",
"CODAmount": 0.0,
"CODNotToExceedBasis": "",
"CODNotToExceedFixedAmount": 0.0,
"PrintBOMLabels": false,
"BOMLabelFormat": "",
"PrintStockLabels": false,
"StockLabelFormat": "",
"PrintNonStockLabels": false,
"NonstockLabelFormat": "",
"QuotePrintPriceAsNet": false,
"QuotePrintPriceOnly": false,
"QuotePrintExtendedPrice": false,
"QuotePrintDimExtendedPrice": false,
"OrderAckFormTitle": "",
"OrdAckPrintDetailPrices": false,
"OrdAckPrintPriceAsNet": false,
"OrdAckPrintExtendedPrice": false,
"OrdAckPrintDimExtendedPrice": false,
"OrdAckPrintTotals": false,
"OrdAckDispGroupOptions": false,
"OrdAckGroupDefault": "",
"ASNPrintDefault": "",
"ASNAutoSendWithWMS": false,
"InvPrintDetailPrices": false,
"InvPrintPriceAsNet": false,
"InvPrintExtendedPrice": false,
"InvPrintDimExtendedPrice": false,
"InvPrintPayTerm": false,
"InvPrintADFAmount": false,
"InvDispGroupOptions": false,
"InvGroupDefault": "",
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"MinimumFinanceCharge": 0.0,
"FinanceChargeThreshold": 0.0,
"IncludeFinanceChargeInvoices": false,
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"ReleaseOrdersUponCreditChange": false,
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"UpdAddressOnNonOverriddenTrans": "",
"UpdAddressOnOverriddenTrans": false,
"UpdSalesAgentOpenSO": false,
"UpdSalesAgentOpenQuote": false,
"UpdSalesAgentOpenCM": false,
"UpdSalesAgentOpenPOSSO": false,
"UpdSalesAgentOpenPOSQuote": false,
"UpdSalesAgentOpenPOSCM": false,
"UpdSalesAgentOpenTranNotOverride": false,
"UpdPayTermOpenSO": false,
"UpdPayTermOpenQuote": false,
"UpdPayTermOpenCM": false,
"UpdPayTermOpenTranNotOverride": false,
"UpdMinOrderHoldAmtOpenSO": false,
"SetNonSalableWithOpen": false,
"HomeBranch": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates a ship-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ShiptoJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The ship-to customer must exist
- Any fields not included in the
ShiptoJSON
assume the default values of the existing customer ship-to record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value PriceGroupsAction
has four valid values:- Add – Adds values from
PriceGroups
to the end of the existing price groups in rank order - Replace – Replaces all current price groups with the values from
PriceGroups
. If there are no values inPriceGroups
, a warning is given and the price groups are not updated. - Delete – Deletes price groups specified in
PriceGroups
- Delete all – Deletes all current price groups.
- Add – Adds values from
- This method includes actions that are performed after the record is updated.
When an action updates transaction(s), the field(s) being updated on the transaction must match the original value on the customer record to perform the update.
UpdAddressOnNonOverriddenTrans
– Update address for non-overridden transaction. Valid values: Open and invoiced, Open only, Do not update.
- During processing of the request, if the 'Release eligible orders upon credit criteria change' field is set to 'Prompt' on the Agility A/R Parameters record and the new
ReleaseOrdersUponCreditChange
field is set to 'True', the system automatically rechecks credit and releases orders based on credit criteria changes received from the API request for the customer ship-to record.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Nonsalable
field v548; Updated with Email
, EDISpecialOrdersCreatedInBranch
, and SalesAgent#PctOfOrder
fields v550; Updated with PORule
, POBlanketValue
, JobNumberRule
, and JobNumberBlanketValue
fields v551; updated with AllowCreditBalanceAsPaymet
field v556; Updated with credit release processing v603; Updated with FullPaymentReqPartialShipment field v611
CustomerShiptosList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "12345",
"ShiptoSequence": 1,
"FetchOnlyChangedSince": null,
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"CustomerShipToResponse": {
"dsCustomerShipToResponse": {
"dtCustomerShipToResponse": [
{
"CustomerID": "12345",
"CustomerName": "DS SUPPLY",
"ShiptoName": "DS SUPPLY",
"ShiptoSequence": 1,
"Address1": "123 Any Street",
"Address2": "",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "68122",
"Country": "USA",
"Phone": "(402)-555-9585",
"Fax": "( )- - ",
"PriceLevel": 1,
"Active": true,
"NonSaleable": false,
"SalesAgent1": "1001",
"SalesAgent2": "",
"PayTermsCode": "NET20",
"LastChanged": "2019-01-22T11:45:24.000",
"Taxable": false,
"Misc1Label": "MISC 1",
"Misc1Value": "",
"Misc2Label": "MISC 2",
"Misc2Value": "",
"Misc3Label": "MISC 3",
"Misc3Value": "",
"Misc4Label": "MISC 4",
"Misc4Value": "",
"Misc5Label": "MISC 5",
"Misc5Value": "",
"Misc6Label": "MISC 6",
"Misc6Value": "",
"Misc7Label": "MISC 7",
"Misc7Value": "",
"Misc8Label": "MISC 8",
"Misc8Value": "",
"Misc9Label": "MISC 9",
"Misc9Value": "",
"Misc10Label": "MISC 10",
"Misc10Value": "",
"Misc11Label": "MISC 11",
"Misc11Value": "",
"Misc12Label": "MISC 12",
"Misc12Value": "",
"OrderEntryBranchOption": "Current",
"OrderEntryBranchPrompt": true,
"DefaultBranch": "",
"SaleType": "Transfer",
"ECommerceSaleType": "",
"Prospect": false,
"Email": "test@test.com",
"SalesAgent1PctOfOrder": 0.0,
"SalesAgent2PctOfOrder": 0.0,
"SalesAgent3PctOfOrder": 0.0,
"ShipVia": "Flatbed",
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"MobilePhone": "(402)-555-1234",
"HomeBranch": "WESTON",
"FullPaymentRequired": false,
"FullPaymentRequiredOrderTypes": "CM's Only",
"FullPaymentReqPartialShipment": false,
"BilltoSequence": 1,
"CreatedDate": "YYYY-MM-DD",
"AllowAsTemplate": false,
"CreditLimitAmount": 0
}
]
}
},
"MoreResultsAvailable": false,
"TotalRowsFetched": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of customer ship-tos available to the user and available in the current branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
SearchBy
SearchValue
CustomerID
ShiptoSequence
FetchOnlyChangedSince
RecordFetchLimit
Response
- ReturnCode
MessageText
MoreResultsAvailable
TotalRowsFetched
- list of customer ship-to records
Notes
- This method allows a user to request customer ship-tos that have changed since a particular date and time.
- This method allows the user to search for specific customer ship-tos with limited criteria. Please see the Searchby topic for more information
- This method allows a user to request a specific number of records. Please see the Chunking topic for more information
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid
SearchBy
values:- Ship-to Name
- Ship-to Address 1
- Ship-to Address 2
- Ship-to City
- Ship-to State
- Ship-to ZIP
- Ship-to Phone
- Keyword
- Valid values for
CustomerID
come from CustomersList - Valid values for
ShiptoSequence
come from CustomerShiptoList
Version Deployed
v539; Updated with Full payment required fields v611
CustomerUpdate
Sample Request
{
"request": {
"CustomerID": "",
"CustomerJSON": {
"dsCustomer": {
"dtCustomer": [
{
"Name": "",
"DivisionID": "",
"GroupID": "",
"Address1": "",
"Address2": "",
"Address3": "",
"City": "",
"State": "",
"ZIP": "",
"Country": "",
"PhoneFormat": "",
"Fax": "",
"Phone": "",
"MobilePhone": "",
"Email": "",
"Website": "",
"DefaultCurrency": "",
"PrintCurrency": "",
"FormPrefix": "",
"FirstInvoiceDate": "2018-05-23",
"StartDate": "2018-05-23",
"FirstOrderDate": "2018-05-23",
"LastInvoiceDate": "2018-05-23",
"Active": false,
"FinanceCharge": false,
"Nonsaleable": false,
"Prospect": false,
"CopyPriceGroupsFromShiptoSeq": 0,
"CreditCardStorageOption": "",
"CheckSoldtoCredit": false,
"CheckBilltoCredit": false,
"CheckShiptoCredit": false,
"PrintSoldtoStatement": false,
"PrintBilltoStatement": false,
"PrintShiptoStatement": false,
"StatementType": "",
"CycleCode": "",
"StatementPrintSummaryOnly": false,
"StatementPrintDiscDate": false,
"StatementPrintDiscAmt": false,
"StatementPrintDueDate": false,
"StatementPrintInvoices": false,
"TargetCustomer": false,
"RequireInvoice": false,
"RequireOrderAcknowledgment": false,
"ReferenceNum": "",
"ParentCustomerID": "",
"FederalTaxNum": "",
"StateTaxNum": "",
"MunicipalTaxNum": "",
"CertificateAppliesTo": "",
"AllowCashPayments": false,
"AllowCheckPayments": false,
"AllowCreditCardPayments": false,
"DisplayPriceOnCCDevice": "",
"CheckCredit": "",
"DontCheckCreditThru": "2018-05-23",
"CreditBypassAmt": 0.0,
"CreditLimitAmt": 0.0,
"OverdueAmt": 0.0,
"OverduePercentage": 0.0,
"OverdueDays": 0,
"DUNNNumber": "",
"CreditManager": "",
"CreditLimitExpDate": "2018-05-23",
"CreditScore": 0.0,
"CreditRating": "",
"CreditReviewDate": "2018-05-23",
"ReleaseOrdersUponCreditChange": false,
"BureauNum1Rating": "",
"BureauNum1EffectiveDate": "2018-05-23",
"BureauNum2Rating": "",
"BureauNum2EffectiveDate": "2018-05-23",
"LastReviewDate": "2018-05-23",
"LastApplicationDate": "2018-05-23",
"TradeClass": "",
"Class": "",
"ConsigneeCode": "",
"IndustryCode": "",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"UpdShiptoActiveWhenSetActive": false,
"UpdShiptoProspectWhenSetProspect": false,
"SetShipToBillToAddresses": "",
"UpdAddressOnNonOverriddenTrans": "",
"UpdAddressOnOverriddenTrans": false,
"SetAllShiptosNonSalable": false,
"SetNonSalableWithOpen": false,
"SecondaryGroupsAction": "Replace",
"SecondaryGroups": "Drywall",
"HomeBranch": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates a sold-to customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
CustomerJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The sold-to customer must exist
- Any fields not included in the
CustomerJSON
assume the default values of the existing customer record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - This method includes actions that are performed after the record is updated. When an action updates transaction(s), the field(s) being updated on the transaction must match the original value on the customer record to perform the update.
SetShipToBillToAddresses
: Update account info on single customer ship-to and bill-to records when customer account info changes. Valid values: Do not update, Update all, Update customer bill-to account info, and Update customer ship-to account infoUpdAddressOnNonOverriddenTrans
: Update address for non-overridden transactions. Valid values: Open and invoiced, Open onlyUpdAddressOnOverriddenTrans
: Update address for overridden transactions
SecondaryGroupAction
has four valid values:- Add – Adds values from
SecondaryGroups
to the end of the existing secondary customer groups in rank order - Replace – Replaces all current secondary customer groups with the values from
SecondaryGroups
. If there are no values inSecondaryGroups
, a warning is given and the secondary customer groups are not updated. - Delete – Deletes secondary customer groups specified in
SecondaryGroups
- Delete all – Deletes all current secondary customer groups.
- Add – Adds values from
- During processing of the request, if the 'Release eligible orders upon credit criteria change' field is set to 'Prompt' on the Agility A/R Parameters record and the new
ReleaseOrdersUponCreditChange
field is set to 'True', the system automatically rechecks credit and releases orders based on credit criteria changes received from the API request for the customer sold-to record.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; Updated with Nonsalable
fields v548; Updated with Email
field v550; Updated with credit release processing v603
CustomersList
Sample Request
{
"request": {
"SearchBy": "Customer ID",
"SearchValue": "12345",
"FetchOnlyChangedSince": null,
"ChunkStartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"CustomerResponse": {
"dsCustomerResponse": {
"dtCustomerResponse": [
{
"CustomerID": "12345",
"CustomerName": "DS SUPPLY",
"Address1": "123 Any Street",
"Address2": "",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "68122",
"Country": "USA",
"Phone": "(402)-555-9585",
"Fax": " ",
"Active": true,
"LastChanged": "2019-01-22T11:45:24.000",
"CreditLimit": 0,
"CreditLimitExpDate": null,
"HighBalanceYTD": 3000,
"HighBalanceDate": "2019-01-22",
"HighBalanceLYR": 0,
"HighBalanceLYRDate": null,
"LastPaymentDate": null,
"OpenSOAmt": 12.49,
"ReleasedSOAmt": 12.49,
"DepositAmt": 0,
"OpenAR": 3000,
"DisputedAR": 0,
"Prospect": false,
"Email": "test@test.com",
"GroupID": "Drywall",
"SecondaryGroups": "Midwest",
"HomeBranch": "WESTON",
"MobilePhone": "(402)-555-1234",
"CreatedDate": "YYYY-MM-DD",
"StartDate": "YYYY-MM-DD",
"LastApplicationDate": "YYYY-MM-DD",
"FirstInvoiceDate": "YYYY-MM-DD",
"CreditManager": """",
"CreditScore": 0,
"CreditReviewDate": "YYYY-MM-DD"
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of customers available to the user
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
SearchBy
SearchValue
FetchOnlyChangedSince
ChunkStartPointer
RecordFetchLimit
Response
- ReturnCode
MessageText
CustBranchShiptoResults
Notes
- The
FetchOnlyChangedSince
parameter allows the user to determine if they would like records returned that have been modified since a particular date/time. This parameter is evaluated against the update date/time on the record. - This method allows a user to request a specific number of records. Please see the Chunking topic for more information
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid
SearchBy
options:- Customer Name
- Customer ID
- Customer Address 1
- Customer Address 2
- Customer City
- Customer State
- Customer ZIP
- Customer Phone
- Group ID
- Secondary Group ID
Version Deployed
v539
DefaultCustomerShipto
Sample Request
{
"request": {
"LoginID": "asmith"
}
}
Sample Response
{
"response": {
"CustomerID": "12345",
"ShiptoSequence": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the default customer and ship-to assigned to the user in Agility
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
LoginID
Optional Inputs
- N/A
Response
CustomerID
CustomerShiptoSequence
- ReturnCode
MessageText
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
AgilityPublic/DataFiles Service
This AgilityPublic service contains methods releated to data and data files.
SaleTypesList
Sample Request
"n/a"
Sample Response
{
"response": {
"SaleTypesListResponse": {
"dsSaleTypesListResponse": {
"dtSaleTypesListResponse": [
{
"SaleType": "WH",
"Description": "Warehouse",
"AffectInventory": true,
"Transfer": false,
"AllowInPartnerView": false,
"ShipVia": "Truck",
"Route": "",
"FreightTerms": ""
},
{
"SaleType": "WC",
"Description": "Will Call",
"AffectInventory": true,
"Transfer": false,
"AllowInPartnerView": false,
"ShipVia": "",
"Route": "",
"FreightTerms": ""
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of sale types
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- list of sale types
Notes
- The
AllowInPartnerView
setting is shared between PartnerView and the API and indicates whether or not the sale type is a valid input to methods that create orders or quotes. Only those withAllowInPartnerView
= true are valid for those methods. Any valid sale type can be used in other methods - Only sale types having the Affects Inventory flag set are returned with this method
- Only sale types marked as Active are returned with this method
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v542
AgilityPublic/Dispatch Service
This AgilityPublic service contains methods related to dispatch.
DispatchCancel
Sample Request
{
"request": {
"DispatchID": "12267"
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Cancels dispatch header on an existing, open dispatch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
- Dispatch details and dispatch transactions are not removed when the dispatch is cancelled
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchCostPacketsDelete
Sample Request
{
"request": {
"DispatchID": 12648,
"DispatchCostPacketsJSON": {
"dsDispatchCostPacket": {
"dtDispatchCostPacket": [
{
"CostType": "Broker Fees",
"SupplierID": "HTL"
},
{
"CostType": "Ocean Frt"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes dispatch cost packet information on an existing dispatch with PO transactions
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
CostType
Optional Inputs
SupplierID
Response
- ReturnCode
Message Text
Notes
- For a supplier-specific cross reference to be sent in the
CostType
field, the related supplier must be specified in theSupplierID
field.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchCostPacketsGet
Sample Request
{
"request": {
"DispatchID": 12648
}
}
Sample Response
{
"response": {
"CostPacketResponse": {
"dsCostPacketsResponse": {
"dtCostPacketsResponse": [
{
"AllocateBy": "Load",
"FixedAmount": 1300,
"CostType": "Ocean Frt",
"CreatedBy": "MSWAPI",
"CreatedDate": "2019-03-05",
"CreatedTime": "12:14:04",
"SupplierID": "900",
"AssignAPReconBasedOnPO": false,
"Currency": "YEN",
"UpdateBy": "MSWAPI",
"UpdateDate": "2019-03-05",
"UpdateTime": "12:14:04"
},
{
"AllocateBy": "Ext cost",
"FixedAmount": 650,
"CostType": "Broker Fees",
"CreatedBy": "MSWAPI",
"CreatedDate": "2019-03-05",
"CreatedTime": "10:31:11",
"SupplierID": "HTL",
"AssignAPReconBasedOnPO": false,
"Currency": "USD",
"UpdateBy": "MSWAPI",
"UpdateDate": "2019-03-05",
"UpdateTime": "12:14:05"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns dispatch cost packet information on an existing dispatch with PO transactions
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- dispatch cost packet information
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchCostPacketsUpdate
Sample Request
{
"request": {
"DispatchID": 12648,
"DispatchCostPacketsJSON": {
"dsDispatchCostPacket": {
"dtDispatchCostPacket": [
{
"AllocateBy": "Ext cost",
"AssignAPReconBasedOnPO": false,
"CostType": "Broker Fees",
"Currency": "USD",
"FixedAmount": 650.0,
"SupplierID": "HTL"
},
{
"AllocateBy": "Load",
"AssignAPReconBasedOnPO": false,
"CostType": "Ocean Frt",
"Currency": "YEN",
"FixedAmount": 1300.0,
"SupplierID": "900"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates dispatch cost packet information on an existing dispatch with PO transactions
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
CostType
Optional Inputs
AllocateBy
AssignAPReconBasedOnPO
Currency
FixedAmount
SupplierID
Response
- ReturnCode
MessageText
Notes
- Valid values for
AssignAPReconBasedOnPO
are true and false. IfAssignAPReconBasedOnPO
is set to false, AP Recon is assigned based on the Dispatch ID. IfAssignAPReconBasedOnPO
is set to true, AP Recon is assigned based on the Purchase Order ID. IfAssignAPReconBasedOnPO
is not sent in the request, this defaults to a value of false. - Any fields not included in the
DispatchCostPacketsUpdateJSON
assume the default values on a creating a new cost type. - Any fields not included in the
DispatchCostPacketsUpdateJSON
assume the existing values on updating an existing cost type. - For a supplier-specific cross reference to be sent in the
CostType
field, the related supplier must be specified in theSupplierID
field.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchDetailsCreate
Sample Request
{
"request": {
"DispatchID": "12576",
"OrderType": "SO",
"OrderID": 302148,
"SubID": 0,
"DispatchDetailJSON": {
"dsDispatchDetail": {
"dtDispatchDetail": [
{
"OrderDetailSequence": "1",
"Quantity": 2,
"ContainerID": "GTM-TRWNQCM",
"PalletID": "150120251",
"DispatchAllQuantity": false
},
{
"OrderDetailSequence": "2",
"ContainerID": "GTM-TRWNQSO",
"PalletID": "150120252",
"DispatchAllQuantity": true
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Create dispatch details and related dispatch tran on an existing dispatch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
OrderID
OrderType
SubID
OrderDetailSequence
;Quantity
orDispatchAllQuantity
Optional Inputs
ContainerID
PalletID
Quantity
DispatchAllQuantity
Response
- ReturnCode
MessageText
Notes
- Valid values for
DispatchAllQuantity
are true and false. IfDispatchAllQuantity
is set to false,Quantity
is required. IfDispatchAllQuantity
is set to true, all quantity for theOrderDetailSequence
is dispatched unlessQuantity
is specified.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchDetailsDelete
Sample Request
{
"request": {
"DispatchID": 12576,
"OrderType": "SO",
"OrderID": 302191,
"SubID": 0,
"DispatchDetailJSON": {
"dsDispatchDetail": {
"dtDispatchDetail": [
{ "OrderDetailSequence": 1 },
{
"OrderDetailSequence": 2,
"ContainerID": "GTM-TJPNWLFYM",
"PalletID": "5518019"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes dispatch details on an existing dispatch transaction
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
OrderID
OrderType
SubID
OrderDetailSequence
Optional Inputs
ContainerID
PalletID
Response
- ReturnCode
- MessageText
Notes
- If
ContainerID
and/orPalletID
exist on the order detail sequence that is being deleted, you must include the relatedContainerID
and/orPalletID
in the request to delete. Branch
must be the branch of the detail transaction
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchGet
Sample Request
{
"request": {
"DispatchID": "12279"
}
}
Sample Response
{
"response": {
"DispatchResponse": {
"dsDispatchResponse": {
"dtDispatchHeader": [
{
"AdditionalCost": 20,
"CalcFirstPickupDate": false,
"CalcLastDeliveryDate": false,
"Canceled": false,
"Contact": "Jeff Pilot",
"CarrierFax": "(402)-564-3321",
"CarrierPhone": "(402)-564-3321",
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-02-12",
"CreatedTime": "10:10:43",
"Currency": "USD",
"DispatchedBy": "mwellensiek",
"DispatcherFax": "(402)-957-9990",
"DispatcherPhone": "(402)-957-9999",
"DispatchID": 12279,
"DispatchStatus": "Open",
"Driver": "apotter",
"ExportSendStatus": "",
"ExportStatus": "",
"FinalDeliveryDate": "2019-02-13",
"FinalDeliveryTime": "08:00",
"FirstPickUpDate": "2019-02-12",
"FirstPickUpTime": "08:00",
"FreightAllocateBy": "Weight",
"FreightChargeorCost": "",
"FreightChargeorCostType": "",
"FreightCostApplied": false,
"CleanDry": false,
"Tarp": true,
"TarpSize": "1234567890123456",
"MinimumFreightperStop": 0,
"MinimumFreightTotal": 0,
"PerRateLabel": "Mile",
"PerRateMultiplier": 575,
"Printed": false,
"EstimatedRate": 0.25,
"EstimatedRateType": "Per",
"SentToWMS": false,
"StagingLoc": "",
"TotalDistance": 0,
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-12",
"UpdateTime": "10:14:30",
"WeightLimit": 1000,
"CarrierID": "AMT001",
"ShipFromSequence": 1,
"LoadPriority": "",
"LoadTimeframe": "",
"LoadType": "",
"PackingSlip": "2138189",
"RailRoute": "",
"Reference": "190212023",
"Released": false,
"SCACCode": "3505",
"STCCCode": "4590234",
"TransportNumber": "212190023",
"TransportType": "Rail Car",
"dtDispatchTran": [
{
"DispatchID": 12279,
"ASNPrinted": false,
"BillofLading": "WEST00157425-000",
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-02-12",
"CreatedTime": "10:11:03",
"DeliveryID": "WEST00157425",
"DestCallAppt": true,
"DestinationContact": "Sherry Woods",
"DestLoadUnloadHours": "16:00",
"DestinationFax": " ",
"DestinationID": "00002859",
"DestinationPhone": "(333)-333-3333",
"DestinationSeq": 1,
"DestStartLoadHours": "12:00",
"DestinationType": "Customer",
"Distance": 100,
"OriginCallAppt": true,
"OriginContact": "Justin Driever",
"OriginEndLoadHours": "12:00",
"OriginFax": "(402)-351-2682",
"OriginID": " 1030",
"OriginPhone": "(402)-351-2300",
"OriginSeq": 1,
"OriginLoadUnloadHours": "08:00",
"OriginType": "Supplier",
"PickUpID": "1012021219",
"ProNumber": "WESTONBRANCH022019",
"Reference": "190212023",
"ShipmentDeliveryDate": "2019-02-13",
"ShipmentDeliveryTime": "16:00",
"SubID": 0,
"StopSequence": 1,
"OrderID": 157425,
"OrderBranch": "WESTON",
"OrderType": "PO",
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-12",
"UpdateTime": "11:14:12",
"dtDispatchDetail": [
{
"ASNSequence": 0,
"ContainerID": "3215112729",
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-02-12",
"CreatedTime": "10:13:47",
"PalletID": "8560",
"Qty": 100,
"SubID": 0,
"OrderID": 157425,
"OrderDetailSequence": 1,
"OrderType": "PO",
"UOM": "EA",
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-12",
"UpdateTime": "11:14:12",
"WMSSequence": 0
}
]
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of dispatch fields related to a specific dispatch ID
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- list of dispatch fields
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchHeaderCreate
Sample Request
{
"request": {
"CarrierID": "AMT001",
"ShipFromSequence": 1,
"DispatchHeaderJSON": {
"dsDispatchHeader": {
"dtDispatchHeader": [
{
"AdditionalCost": 15,
"CarrierFax": "(402)-555-6620",
"CarrierPhone": "(402)-555-6629",
"CleanDry": "Yes",
"Contact": "Jeff Pilot",
"DispatchedBy": "mwellensiek1",
"DispatcherFax": "(402)-555-3479",
"DispatcherPhone": "(402)-555-3470",
"Driver": "apotter",
"EstimatedRate": 0.5,
"EstimatedRateType": "Per",
"FirstPickUpDate": "2019-02-19",
"FirstPickUpTime": "08:00",
"FinalDeliveryDate": "2019-02-22",
"FinalDeliveryTime": "16:45",
"PackingSlip": "9918546819972039",
"PerRateLabel": "Mile",
"PerRateMultiplier": 650,
"Reference": "Hillcrest Apts",
"Released": "No",
"SCACCode": "CENF",
"STCCCode": "0112915",
"Tarp": "Yes",
"TarpSize": "1234567890123456",
"TotalDistance": 1000,
"TransportNumber": "21520190001",
"TransportType": "Rail Car",
"WeightLimit": 10000
}
]
}
}
}
}
Sample Response
{
"response": {
"DispatchID": 162508,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates dispatch header fields
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CarrierID
ShipFromSequence
Optional Inputs
- N/A
Response
DispatchID
- ReturnCode
MessageText
Notes
- Any fields not included in the
DispatchHeaderCreateJSON
assume the default values. - If
EstimatedRate
is sent in withoutEstimatedRateType
,EstimatedRateType
value defaults as “Total”
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchHeaderUpdate
Sample Request
{ "request": {
"DispatchID": {{DispatchID}},
"DispatchHeaderJSON": {
"dsDispatchHeader":{
"dtDispatchHeader":[{
"AdditionalCost": 15,
"CarrierFax": "(402)-555-6620",
"CarrierID": "AMT001",
"CarrierPhone": "(402)-555-6629",
"CleanDry": "Yes",
"Contact": "Jeff Pilot",
"DispatchedBy": "mwellensiek",
"DispatcherFax": "(402)-555-7272",
"DispatcherPhone": "(402)-555-7279",
"Driver": "apotter",
"EstimatedRate": 0.50,
"EstimatedRateType": "Per",
"FirstPickUpDate": "2019-02-19",
"FirstPickUpTime": "08:00",
"FinalDeliveryDate": "2019-02-22",
"FinalDeliveryTime": "16:45",
"PackingSlip": "9918546819972039",
"PerRateLabel": "Mile",
"PerRateMultiplier": 650,
"Reference": "Hillcrest Apts",
"Released": "Yes",
"SCACCode": "CENF",
"ShipFromSequence": 1,
"STCCCode": "0112915",
"Tarp": "Yes",
"TarpSize": "1234567890123456",
"TotalDistance": 500,
"TransportNumber": "21520190001",
"TransportType": "Rail Car",
"WeightLimit": 60000
}]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates dispatch header fields
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
- Any fields not included in the
DispatchHeaderUpdateJSON
assume the default values of the existing dispatch ID
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 1000115076,
"ShipmentNum": 1,
"TranSeq": 1,
"MessageText": "Message Text Here",
"MessageType": "H",
"PrintOnForms": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a dispatch transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
Optional Inputs
PrintOnForms
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
DispatchSendASNToWMS
Sample Request
{
"request": {
"DispatchID": 3846
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Sends ASN to the WMS for a dispatch with PO transactions that affect inventory
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
- The purchase orders on the ASN must be set to affect inventory.
- The items must be set to send to WMS.
- The dispatch must be in a branch that uses WMS.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchTranDelete
Sample Request
{
"request": {
"DispatchID": "12548",
"OrderType": "SO",
"OrderID": 1768,
"SubID": 1
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes a transaction from an existing, open dispatch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
OrderType
OrderID
SubID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
- The branch variable for this method is the branch of the dispatch transaction, not the dispatch itself. For example: the dispatch is in Branch A, and it includes a dispatch tran in Branch B. To delete the tran, the branch variable must be specified as Branch B
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
DispatchTranUpdate
Sample Request
{
"request": {
"DispatchID": 12608,
"OrderType": "PO",
"OrderID": 158805,
"SubID": 0,
"DispatchTranJSON": {
"dsDispatchTran": {
"dtDispatchTran": [
{
"BillofLading": "2020",
"DeliveryID": "WEST00158805",
"DestinationCallAppt": true,
"DestinationEndLoadHours": "16:00",
"DestinationID": "VMWC-A1",
"DestinationSeq": 1,
"DestinationStartLoadHours": "08:00",
"DispatchAllQuantity": true,
"Distance": 65,
"OriginCallAppt": true,
"OriginEndLoadHours": "12:00",
"OriginID": "LMC",
"OriginSeq": 1,
"OriginStartLoadHours": "07:00",
"PickUpID": "022820190063",
"ProNumber": "GTM001843",
"Reference": "Hillcrest Apartments",
"ShipmentDeliveryDate": "2019-03-15",
"ShipmentDeliveryTime": "12:00",
"StopSequence": 1
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates dispatch transaction information on an existing dispatch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
DispatchID
OrderID
OrderType
SubID
Optional Inputs
BillofLading
DeliveryID
DestinationCallAppt
,DestinationEndLoadHours
DestinationID
DestinationSeq
DestinationStartLoadHours
Distance
DispatchAllQuantity
OriginCallAppt
OriginEndLoadHours
OriginID
OriginSeq
OriginStartLoadHours
PickUpID
ProNumber
Reference
ShipmentDeliveryDate
ShipmentDeliveryTime
StopSequence
Response
- ReturnCode
MessageText
Notes
- Valid values for
DispatchAllQuantity
are true and false. IfDispatchAllQuantity
is set to false, dispatch details are not created. IfDispatchAllQuantity
is set to true, dispatch details are created for remaining quantity not yet dispatched on all related order sequences. - If the dispatch includes dispatch cost packets, only transactions with an
OrderType
of PO can be added to the dispatch.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
AgilityPublic/Inventory Service
This AgilityPublic service contains methods related to Inventory.
BranchInventoryList
Sample Request
{
"request": {
"ItemCode": "148-7",
"Thickness": 1,
"Width": 6,
"Length": 10
}
}
Sample Response
{
"response": {
"BranchInventoryResponse": {
"dsBranchInventoryResponse": {
"dtBranchInventoryResponse": [
{
"BranchId": "CENTRAL",
"AvailableQty": 0,
"SurplusQty": 0,
"NetQty": 0,
"OnHandQty": 0,
"OnOrderQty": 0,
"ReturnQty": 0,
"BackOrderedQty": 0,
"CommittedQty": 0,
"UOM": "BF",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
},
{
"BranchId": "WESTON",
"AvailableQty": 64050,
"SurplusQty": 64210,
"NetQty": 64210,
"OnHandQty": 64220,
"OnOrderQty": 0,
"ReturnQty": 0,
"BackOrderedQty": 0,
"CommittedQty": 170,
"UOM": "BF",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns various quantity totals by branch for a specific item/dimension; similar to what is displayed in stock status
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemCode
Optional Inputs
Thickness
Width
Length
Response
- ReturnCode
MessageText
- Quantity totals by branch for the specified item/dimension
Notes
- The initial branch returned with the Login method indicates which branch that context is originally positioned in
- Once changed, the branch associated with the context is changed and all subsequent calls using that context are positioned in the new branch
- If Thickness, Width, and/or Length are excluded from the request, the system assumes a value of zero (0).
Relationships
ContextId
andBranch
come from Login- Valild values for
ItemCode
,Thickness
,Width
, andLength
come fromItemsList
orItemsInChunksList
Version Deployed
v554
CatalogImageDocCreate
Sample Request
{
"request": {
"ImageOrDocumentID": "IPSH5",
"CatalogImageDocJSON": {
"dsCatalogImageDoc": {
"dtCatalogImageDoc": [
{
"ImageFile": " https://www.dmsi.com/content/uploads/2021/11.jpg",
"DisplayText": "Fan control",
"Type": "Image"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new image or document record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ImageOrDocumentID
ImageFile
Type
Optional Inputs
DisplayText
Response
- ReturnCode
MessageText
Notes
- Valid values for
Type
areDocument
andImage
DisplayText
can send a maximum of 100 characters
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v556
CatalogImageDocUpdate
Sample Request
{
"request": {
"ImageOrDocumentID": "IPSH5",
"CatalogImageDocJSON": {
"dsCatalogImageDoc": {
"dtCatalogImageDoc": [
{
"ImageFile": "https://www.dmsi.com/content/uploads/2021/11.jpg",
"DisplayText": "Sensor fan control",
"Type": "Image"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates an image or document record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ImageOrDocumentID
Optional Inputs
DisplayText
Type
Response
- ReturnCode
MessageText
Notes
- Valid values for
Type
areDocument
andImage
DisplayText
can send a maximum of 100 characters
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v556
ItemCreateFromTemplate
Sample Request
{
"request": {
"Item": "1702676",
"CopyFromItem": "917-RL",
"ItemCreateFromTemplateJSON": {
"dsItemCreateFromTemplate": {
"dtItemCreateFromTemplate": [
{
"ItemGroupMajor": "00",
"ItemGroupMinor": "PINE",
"PriceCodeMajor": "00",
"PriceCodeMinor": "PINE",
"StockingUOM": "BF",
"CostingUOM": "BF",
"StockingToCostingConvFactor": 1,
"Size": "2x4",
"ItemDescription": "2x4 Pine Stud",
"ExtDescription": "2x4 KD Pine Stud",
"PieceReference": "PC",
"StockingToPieceCalculation": "Qty/(TxWxL/12)",
"StandardThickness": 0,
"Thickness": 2,
"ThicknessUOM": "Inches",
"StandardWidth": 0,
"Width": 4,
"WidthUOM": "Inches",
"LengthUOM": "Feet",
"AlternateUOM1": "MBF",
"AlternateUOM1ConvFactor": 1000,
"AlternateUOM2": "CAR",
"AlternateUOM2ConvFactor": 20000,
"AlternateUOM3": "TRCK",
"AlternateUOM3ConvFactor": 1500,
"StockItem": 1,
"Active": 1,
"TemplateForNonStocks": "No",
"NonSaleable": "No",
"Discontinued": "No",
"AllowInPartnerview": "Yes",
"AllowInAgilityConfigurator": "No",
"AllowInMobileApps": "Yes",
"AllowInECommerceAndAPI": "Yes",
"UserDefinedKeywords": "Pine Stud",
"ShippingBOLCode": "ABC",
"ShippingMSDS": "123",
"TaxCategory": "NT",
"ItemSupplierCode": "WIN01",
"ItemSupplierShipFromSequence": 1,
"ItemSupplierPartNumber": "789712",
"ItemSupplierWeight": 8.5,
"ItemSupplierWeightUOM": "EA",
"ItemSupplierLoad": 7,
"ItemSupplierLoadUOM": "EA",
"AllowBrokenUOMInCountEntry": true,
"BrokenUOM": "BF",
"DisplayUOM": "BF",
"PickingTallyUOM": "From order",
"DWReportUOM": "BF",
"SOQuoteUOM": "BF",
"CMUOM": "BF",
"PickingUOM": "BF",
"DeliveryUOM": "BF",
"InvoiceUOM": "BF",
"UpdateTranFormUOMs": true,
"CountUOM": "BF",
"AllowDescOverride": true,
"TaxableForSales": true,
"TaxableForTaxCost": true,
"DisplayMarket": true,
"PrintItemExtDesc": true,
"EcommerceDesc": "2 x 4 Pine Stud"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Warning",
"AuditText": "Invalid AlternateUOM3"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a single item and associated item_branch record(s)
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CopyFromItem
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The initial branch returned with the Login method indicates which branch that context is originally positioned in
- Once changed, the branch associated with the context is changed and all subsequent calls using that context are positioned in the new branch
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - Any fields not included in the
ItemCreateFromTemplateJSON
assume the default values of the copy from item and item_branch record(s)- Exception: The 'Discontinued' field is unset when it is not included in the file
- The item type assigned to an item cannot be changed using the API. It is copied from the template item.
- The
CopyFromItem
input is required - The
StockingToCostingConvFactor
is required when either theStockingUOM
orCostingUOM
is specified and the assigned Stocking and Costing UOMs are not the same - New UOM conversions are auto created in Agility when the
StockingToCostingConvFactor
,AlternateUOM1ConvFactor
,AlternateUOM2ConvFactor
, orAlternateUOM3ConvFactor
inputs are not already defined - When the
AlternateUOM1
,AlternateUOM2
, orAlternateUOM3
inputs are assigned to theCopyFromItem
with a single conversion factor, the conversion factor is updated per the associated input value. - When the
AlternateUOM1
,AlternateUOM2
, orAlternateUOM3
inputs are assigned to theCopyFromItem
with multiple conversion factors, theAlternateUOM
and conversion factor inputs are added to the item as new UOM conversions - When creating a new item, the system does not copy BOM, attribute, rough opening, schedule rules, image, or document records from the
CopyFromTemplateItem
- Upon creation of a new item, reorder fields are cleared regardless of the
CopyFromTemplateItem
values - Item suppliers are not copied from the template item to the new item
- The
ItemSupplierCode
is always processed as being the primary item supplier assigned to an item. - When creating dimension type items, dimension records assigned to the template item are copied to the new item.
TheEcommerceDescription
can be sent in plain text or html
Relationships
ContextId
andBranch
come from Login
Version Deployed
v548
ItemCustomFieldsList
Sample Request
{
"request": {
"dsItemCustomFieldsListRequest": {
"dtItemCustomFieldsListRequest": [
{
"ItemCode": "c10",
"Thickness": 0,
"Width": 0,
"Length": 0
}
]
}
}
}
Sample Response
{
"response": {
"ItemCustomFieldsListResponse": {
"dsItemCustomFieldsListResponse": {
"dtItemCustomFieldsListResponse": [
{
"ItemCode": "c10",
"Thickness": 0,
"Width": 0,
"Length": 0,
"FieldLabel": "Buyer",
"DataType": "Text",
"CharacterData": "",
"DateData": null,
"DecimalData": 0,
"IntegerData": 0,
"LogicalData": false,
"CopyField": false
},
{
"ItemCode": "LL-NAILS",
"Thickness": 0,
"Width": 0,
"Length": 0,
"FieldLabel": "Supplier",
"DataType": "Text",
"CharacterData": "",
"DateData": null,
"DecimalData": 0,
"IntegerData": 0,
"LogicalData": false,
"CopyField": false
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the custom fields for a specified set of items/dimensions
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemCode
for each input record
Optional Inputs
Thickness
Width
Length
Response
- ReturnCode
MessageText
- list of custom fields and their values for each item/dimension specified
Notes
- The
DataType
returned indicates which related Data field should be used to find the appropriate value. For example, if theDataType
= Text, the appropriate value is in theCharacterData
- For data types of decimal, integer or logical, a default value of 0.0, 0 or false is returned if there is no data. This result does not necessarily mean this represents the data entered in the system, but is what users would see in the Agility application if there was no entry as well
- All custom fields available for the item requested are returned regardless of whether the custom field has a value entered
- For dimension specific item custom fields, you must include the appliable Thickness, Width, and Length
- For the main item record, set the
Thickness
,Width
, andLength
to 0 to return the main item record for a dimension item
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemCode
and related Thickness, Width and Length come fromItemsList
orItemsInChunksList
Version Deployed
v542
ItemCustomFieldsUpdate
Sample Request
{
"request": {
"UpdateCustomFieldsJSON": {
"dsItemCustomFieldsRequest": {
"dtItemCustomFieldsRequest": [
{
"ItemCode": "c10",
"AllSharedBranches": true,
"Thickness": null,
"Width": null,
"Length": null,
"FieldLabel": "Cut",
"DataType": "Text",
"CharacterData": "Cutting",
"DateData": null,
"DecimalData": 0.0,
"IntegerData": 0,
"LogicalData": false
}
]
}
}
}
}
Sample Response
{
"response": {
"UpdateCustomFieldsResponse": {
"dsItemCustomFieldsResponse": {
"dtItemCustomFieldsResponse": [
{
"ItemCode": "812-1",
"Thickness": 0,
"Width": 0,
"Length": 0,
"FieldLabel": "Color",
"DataType": "Text",
"CharacterData": "Goldenrod",
"DateData": null,
"DecimalData": 0,
"IntegerData": 0,
"LogicalData": false,
"AllSharedBranches": true,
"Failures": "",
"Warnings": "Custom field was not updated."
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates custom field values associated for a set of items and/or dimensions
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemCode
Optional Inputs
DataTypeCharacterData
DateData
DecimalData
IntegerData
LogicalData
Thickness
Width
Length
Response
- ReturnCode
MessageText
- dataset of results under specific conditions
Notes
- The data type associated with the custom field in Agility dictates which of the
<x>
Data fields should contain the data to be saved to the record. Please see Relationship notes below - Values provided in irrelevant fields are ignored
- To update custom fields for a dimension,
Thickness
,Width
andLength
fields based on item type are necessary inputs - To update the main record for a dimension item, set the
Thickness
,Width
, andLength
to zero - If there are failures or warnings due to business logic, the method will have a
ReturnCode
= 0, but will also returndtItemCustomFieldResults
.dtItemCustomFieldResults
is returned as an output for the method IF the Failures and/or Warnings field are/is not empty. Those fields contain more information about what may not have processed as expected - To update an item across all shared branches, the item must be active and valid in the login branch
Relationships
ContextId
andBranch
come from Login- Valid values for
FieldLabel
for each come fromItemCustomFieldsList
, including the current value associated
Version Deployed
v543; AllSharedBranches
field added v548
ItemGroupMajorList
Sample Request
"n/a"
Sample Response
{
"response": {
"ItemGroupMajorResponse": {
"dsItemGroupMajorResponse": {
"dtItemGroupMajorResponse": [
{
"ItemGroupMajor": "00",
"Description": "MISC"
},
{ "ItemGroupMajor": "01", "Description": "BULK" }
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of item/product group majors
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- list of item/prodcut group majors
Notes
- N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v542
ItemGroupMinorList
Sample Request
{
"request": {
"ItemGroupMajor": "00"
}
}
Sample Response
{
"response": {
"ItemGroupMinorResponse": {
"dsItemGroupMinorResponse": {
"dtItemGroupMinorResponse": [
{
"ItemGroupMajor": "00",
"ItemGroupMinor": "00",
"Description": "Tape"
},
{
"ItemGroupMajor": "00",
"ItemGroupMinor": "01",
"Description": "Cleaners"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
returns a list of item/product group minors associated with a specified item/product group major
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemGroupMajor
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- list of item/product group minors for the specified major
Notes
- N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemGroupMajor
come from ItemGroupMajorList
Version Deployed
v542
ItemImageDocCreate
Sample Request
{
"request": {
"ImageOrDocumentID": "IPSH5",
"Item": "IPSH5FAN",
"ItemImageDocCreateJSON": {
"dsItemImageDocCreate": {
"dtItemImageDocCreate": [
{
"Primary": "True"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Assigns an image or document to an item record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ImageOrDocumentID
Item
Optional Inputs
N/A
Response
- ReturnCode
MessageText
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v556
ItemImageDocDelete
Sample Request
{
"request": {
"ImageOrDocumentID": " IPSH5",
"Item": "IPSH5FAN"
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes the assignment of an image or document to an item record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ImageOrDocumentID
Item
Optional Inputs
N/A
Response
- ReturnCode
MessageText
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v556
ItemsInChunksList
Sample Request
{
"request": {
"dsItemsInChunksListRequest": {
"dtItemsInChunksListRequest": [
{
"SearchBy": "Item Code",
"SearchValue": "97114",
"ChunkStartPointer": 0,
"IncludeNonStock": true,
"IncludeNonSaleable": true,
"IncludePriceData": true,
"IncludeQuantityData": true,
"RecordFetchLimit": 3
}
]
}
}
}
Sample Response
{
"response": {
"ItemsInChunksListResponse": {
"dsItemsInChunksListResponse": {
"dtItemsInChunksListResponse": [
{
"ItemCode": "97114",
"ItemXref": "",
"ItemSize": "SIZE",
"ItemDescription": "DESCRIPTION",
"ExtendedDescription": "EXT DESCRIPTION",
"ItemGroupMajor": "BH",
"ItemGroupMinor": "1",
"GrossPrice": 0.35,
"NetPrice": 0.35,
"DiscountDescription": "",
"MinPackQuantity": 0,
"OnHandQuantity": 1902,
"AvailableQuantity": 80,
"UOM": "LF",
"NonSaleable": false,
"Stock": true,
"Discontinued": "No",
"ItemTypeName": "EWP",
"ImageURL": "",
"MinPackType": "Allow - Question",
"PriceUOM": "LF",
"PriceUOMGrossPrice": 0.35,
"PriceUOMNetPrice": 0.35,
"SpecialItemType": "",
"HazardousMaterial": false,
"BOLCode": "",
"MSDS": "",
"PrimarySupplierID": "Central",
"ECommerceDescription": null,
"OnOrderQuantity": 92,
"ReturnQuantity": 1870,
"BackorderedQuantity": 92,
"CommittedQuantity": 1822,
"DefaultWeight": 1,
"DefaultWeightUOM": "LF",
"DefaultLoad": 1,
"DefaultLoadUOM": "LF",
"PrimarySupplierWeight": 1,
"PrimarySupplierWeightUOM": "LF",
"PrimarySupplierLoad": 1,
"PrimarySupplierLoadUOM": "LF",
"StockingUOM": "LF",
"StockingMinPackQuantity": 0,
"StockingAvailableQuantity": 3060,
"StockingOnHandQuantity": 5000,
"StockingOnOrderQuantity": 200,
"StockingReturnQuantity": 280,
"StockingBackorderedQuantity": 350,
"StockingCommittedQuantity": 1940,
"HandlingCode": "EWP",
"MinPackHandlingCode": "Lumber",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
"dtItemsInChunksListDimResponse": [
{
"ItemCode": "97114",
"ItemXref": "",
"DimensionSize": "",
"Thickness": 2,
"ThicknessUOM": "Inches",
"Width": 4,
"WidthUOM": "Inches",
"Length": 2,
"LengthUOM": "Feet",
"GrossPrice": 0.35,
"NetPrice": 0.35,
"DiscountDescription": "",
"MinPackQuantity": 0,
"OnHandQuantity": 0,
"AvailableQuantity": 0,
"UOM": "LF",
"MinPackType": "Allow - Question",
"PriceUOM": "LF",
"PriceUOMGrossPrice": 0.35,
"PriceUOMNetPrice": 0.35,
"OnOrderQuantity": 0,
"ReturnQuantity": 0,
"BackorderedQuantity": 0,
"CommittedQuantity": 0,
"StockingUOM": "LF",
"StockingMinPackQuantity": 0,
"StockingAvailableQuantity": 500,
"StockingOnHandQuantity": 1000,
"StockingOnOrderQuantity": 200,
"StockingReturnQuantity": 0,
"StockingBackorderedQuantity": 0,
"StockingCommittedQuantity": 500
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns item related information for a group of items; optionally, results can include quantity and price information; this method is basically the same as ItemsList, but is specifically made for returning larger chunks of items
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
SearchBy
SearchValue
ChunkStartPointer
IncludeNonStock
IncludeNonsaleable
IncludePriceData
IncludeQuantityData
RecordFetchLimit
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- list of items with details and some price information
Notes
- The method allows the user to search for and select items based on
SearchBy
or to request the information for all items. - Valid
SearchBy
option is Item Code - This method allows a user to request a specific number of records. Please see the Data chunking topic for more information
- The method returns item information in the Display UOM and Stocking UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- For dimensional item types, the main item will be represented in
dtItemResponse
with the related dimensions represented indtItemDimensionResponse
. The relationship between the tables is found with theItemCode
. There can be a one to many relationship betweendtItemResponse
anddtItemDimensionResponse
with the Thickness, Width, Length fields distinguishing between records indtItemDimensionResponse
Version Deployed
v542; Handling code fields added in v600
ItemsList
Sample Request
{
"request": {
"dsItemsListRequest": {
"dtItemsListRequest": [
{
"SearchBy": "Size",
"SearchValue": "sizzzzzzzzzzzzzzzzzzze",
"ItemGroupMajor": "00",
"ItemGroupMinor": "00",
"IncludeNonStock": true,
"IncludePriceData": true,
"IncludeQuantityData": true,
"IncludeNonSaleable": true,
"RecordFetchLimit": 5
}
]
}
}
}
Sample Response
{
"response": {
"ItemsListResponse": {
"dsItemsListResponse": {
"dtItemsListResponse": [
{
"ItemCode": "c10",
"ItemXref": "",
"ItemSize": "2d",
"ItemDescription": "1 inch nails",
"ExtendedDescription": "",
"ItemGroupMajor": "MISC",
"ItemGroupMinor": "NAILS",
"GrossPrice": 0,
"NetPrice": 0,
"DiscountDescription": "",
"MinPackQuantity": 1,
"OnHandQuantity": 0,
"AvailableQuantity": 0,
"UOM": "PC",
"Nonsaleable": false,
"Stock": true,
"Discontinued": "No",
"ItemTypeName": "",
"ImageUrl": "",
"MinPackType": "",
"PriceUOM": "",
"PriceUOMGrossPrice": 0,
"PriceUOMNetPrice": 0,
"SpecialItemType": "",
"HazardousMaterial": true,
"BOLCode": "BOL1",
"MSDS": "",
"PrimarySupplierID": "",
"ECommerceDescription": "",
"OnOrderQuantity": 0,
"ReturnQuantity": 0,
"BackorderedQuantity": 0,
"CommittedQuantity": 0,
"DefaultWeight": 4.5,
"DefaultWeightUOM": "box",
"DefaultLoad": 1.1,
"DefaultLoadUOM": "box",
"PrimarySupplierWeight": 4.5,
"PrimarySupplierWeightUOM": "box",
"PrimarySupplierLoad": 1.1,
"PrimarySupplierLoadUOM": "box",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
},
{
"ItemCode": "c10a",
"ItemXref": "",
"ItemSize": "5d",
"ItemDescription": "1.75 inch nails",
"ExtendedDescription": "",
"ItemGroupMajor": "MISC",
"ItemGroupMinor": "NAILS",
"GrossPrice": 0,
"NetPrice": 0,
"DiscountDescription": "",
"MinPackQuantity": 1,
"OnHandQuantity": 0,
"AvailableQuantity": 0,
"UOM": "EA",
"Nonsaleable": false,
"Stock": true,
"Discontinued": "No",
"ItemTypeName": "",
"ImageUrl": "",
"MinPackType": "",
"PriceUOM": "",
"PriceUOMGrossPrice": 0,
"PriceUOMNetPrice": 0,
"SpecialItemType": "",
"HazardousMaterial": false,
"BOLCode": "",
"MSDS": "",
"PrimarySupplierID": "",
"ECommerceDescription": "",
"OnOrderQuantity": 0,
"ReturnQuantity": 0,
"BackorderedQuantity": 0,
"CommittedQuantity": 0,
"DefaultWeight": 1.25,
"DefaultWeightUOM": "Box",
"DefaultLoad": 1.1,
"DefaultLoadUOM": "Box",
"PrimarySupplierWeight": 1.25,
"PrimarySupplierWeightUOM": "Box",
"PrimarySupplierLoad": 1.1,
"PrimarySupplierLoadUOM": "Box",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
}
]
}
},
"MoreResultsAvailable": false,
"TotalRowsFetched": 284,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns item related information for a group of items; optionally, results can include quantity and price information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
SearchBy
SearchValue
ItemGroupMajor
ItemGroupMino
IncludeNonStock
IncludeNonsaleable
IncludePriceData
IncludeQuantityData
RecordFetchLimit
Response
- ReturnCode
MessageText
MoreResultsAvailable
TotalRowsFetched
- list of items with details and some price information based on the default customer assigned to the user in User Profiles
Notes
- The method allows the user to search for and select items based on
ItemGroupMajor
,ItemGroupMajor
andItemGroupMinor
combination,SearchBy
, or to request the information for all items. - Valid
SearchBy
options are Item Code, Size, Description, Ext. Description Contains, and Keyword Search - This method allows a user to request a specific number of records. Please see the Data chunking topic for more information
- The method returns item information in the Display UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemGroupMajor
come from ItemGroupMajorList or ItemGroupMinorList - Valid values for
ItemGroupMinor
come from ItemGroupMinorList - For dimensional item types, the main item will be represented in
dtItemResponse
with the related dimensions represented indtItemDimensionResponse
. The relationship between the tables is found with theItemCode
. There can be a one to many relationship betweendtItemResponse
anddtItemDimensionResponse
with theThickness
,Width
,Length
fields distinguishing between the records indtItemDimensionResponse
Version Deployed
v542
ItemPriceAndAvailabilityList
Sample Request
{
"request": {
"dsItemPriceAndAvailRequest": {
"dtPriceAndAvailRequest": [
{
"CustomerID": "123456",
"ShiptoSequence": 1,
"SaleType": "WH",
"DateToCalculatePriceFor": "2019-08-15",
"UseOrderRestrictions": true
}
],
"dtItemToProcessRequest": [
{
"ItemCode": "419147",
"PartNumber": "P-124",
"OrderQuantity": 7,
"UOM": "BF"
}
],
"dtItemDimensionToProcessReq": [
{
"ItemCode": "419147",
"PartNumber": "P-124",
"Thickness": 2,
"Width": 6,
"Length": 8,
"OrderQuantity": 10,
"UOM": "PC"
}
]
}
}
}
Sample Response
{
"response": {
"ItemPriceAndAvailResponse": {
"dsItemPriceAndAvailResponse": {
"dtItemPriceAndAvailResponse": [
{
"ItemCode": "16RDOAK",
"OrderQuantity": 5,
"GrossPrice": 3.1,
"NetPrice": 3.1,
"DiscountDescription": "",
"OnHandQuantity": 77843,
"AvailableQuantity": 72949,
"UOM": "BF",
"ExtendedDescription": "",
"PriceUOM": "BF",
"PriceUOMGrossPrice": 3.1,
"PriceUOMNetPrice": 3.1,
"PriceType": "Level 1, Qty Break 0 BF",
"PriceMargin": 18,
"PriceMultiplier": 0,
"PriceAdditionalAmount": 0,
"Promo": false,
"NonSaleable": false,
"Stock": true,
"MinPackType": "Allow - Question",
"MinPackQuantity": 0,
"MaxProductionUnits": 0,
"ItemXref": "16rdoak-har01-All",
"ItemSize": "1x6",
"ItemDescription": "RED OAK",
"ItemGroupMajor": "Pool",
"ItemGroupMinor": "Ladder",
"Discontinued": "No",
"ItemTypeName": "Specific Length Lumber",
"ImageUrl": "",
"SpecialItemType": "",
"HazardousMaterial": false,
"BOLCode": "110",
"MSDS": "123",
"EcommerceDescription": null,
"OnOrderQty": 2930,
"ReturnQty": 0,
"BackorderedQty": 2677,
"CommittedQty": 4894,
"HandlingCode": "label test",
"AutoCompleteWO": false,
"DefaultWeight": 6,
"DefaultWeightUOM": "BF",
"DefaultLoad": 8,
"DefaultLoadUOM": "BF",
"PrimarySupplierID": "ESM",
"PrimarySupplierWeight": 2,
"PrimarySupplierWeightUOM": "BF",
"PrimarySupplierLoad": 3,
"PrimarySupplierLoadUOM": "BF",
"PrimarySupplierContainerLength": 21,
"PrimarySupplierContainerWidth": 43,
"PrimarySupplierContainerHeight": 5345,
"PrimarySupplierPartNumber": "15RDOAK-ESM-PART",
"PrimarySupplierUPC": "",
"Misc1Label": "Manufacturer Cost",
"Misc1Value": 1,
"Misc2Label": "Replacement Cost",
"Misc2Value": 2,
"Misc3Label": "Misc cost",
"Misc3Value": 3,
"Misc4Label": "Retail",
"Misc4Value": 4,
"Misc5Label": "Last Purchased Cost",
"Misc5Value": 5,
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
"dtItemPriceAndAvailDimResponse": [
{
"ItemCode": "16RDOAK",
"Thickness": 1,
"Width": 6,
"Length": 8,
"OrderQuantity": 100,
"GrossPrice": 12.4,
"NetPrice": 12.4,
"DiscountDescription": "",
"OnHandQuantity": 1520,
"AvailableQuantity": 1500,
"UOM": "PC",
"PriceUOM": "BF",
"PriceUOMGrossPrice": 3.1,
"PriceUOMNetPrice": 3.1,
"PriceType": "Level 1, Qty Break 0 BF",
"PriceMargin": 18,
"PriceMultiplier": 0,
"PriceAdditionalAmount": 0,
"Promo": false,
"MinPackType": "Allow and set as broken min pack",
"MinPackQuantity": 20,
"ItemXref": "16rdoak-har01-All",
"OnOrderQty": 20,
"ReturnQty": 0,
"BackorderedQty": 0,
"CommittedQty": 20,
"Misc1Label": "Manufacturer Cost",
"Misc1Value": 1.111,
"Misc2Label": "Replacement Cost",
"Misc2Value": 2.111,
"Misc3Label": "Misc cost",
"Misc3Value": 3.111,
"Misc4Label": "Retail",
"Misc4Value": 4.111,
"Misc5Label": "Last Purchased Cost",
"Misc5Value": 5.111
},
{
"ItemCode": "16RDOAK",
"Thickness": 1,
"Width": 6,
"Length": 10,
"OrderQuantity": 100,
"GrossPrice": 15.5,
"NetPrice": 15.5,
"DiscountDescription": "",
"OnHandQuantity": 3508,
"AvailableQuantity": 3333,
"UOM": "PC",
"PriceUOM": "BF",
"PriceUOMGrossPrice": 3.1,
"PriceUOMNetPrice": 3.1,
"PriceType": "Level 1, Qty Break 0 BF",
"PriceMargin": 18,
"PriceMultiplier": 0,
"PriceAdditionalAmount": 0,
"Promo": false,
"MinPackType": "Allow and set as broken min pack",
"MinPackQuantity": 0,
"ItemXref": "16rdoak-har01-All",
"OnOrderQty": 274,
"ReturnQty": 0,
"BackorderedQty": 243,
"CommittedQty": 175,
"Misc1Label": "Manufacturer Cost",
"Misc1Value": 1.1,
"Misc2Label": "Replacement Cost",
"Misc2Value": 2.1,
"Misc3Label": "Misc cost",
"Misc3Value": 3.1,
"Misc4Label": "Retail",
"Misc4Value": 4.1,
"Misc5Label": "Last Purchased Cost",
"Misc5Value": 5.1
}
]
}
]
}
},
"ItemAuditResults": {
"dsItemAuditResults": {
"dtItemAuditResults": [
{
"AuditSequence": 1,
"ItemCode": "X90645",
"PartNumber": "X90645-All",
"Thickness": 0,
"WIDTH": 0,
"LENGTH": 0,
"AuditType": "Warning",
"AuditText": "Invalid Item X90645"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns specific price information for an item or set of items based on a specific customer and sale type with related quantities
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
dtItemToProcessRequest
anddtItemDimensionToProcessReq
information
Optional Inputs
ShiptoSequence
SaleType
DateToCalculatePriceFor
Response
- ReturnCode
MessageText
ItemAuditResults
- list of items with details and the specific price information based on the customer and ship-to specified
Notes
- If
DateToCalculatePriceFor
is left blank, the current date is used - DMSi strongly recommends reviewing the
ItemAuditResults
regardless of theReturnCode
value - If requesting dimension information, the
ItemCode
andPartNumber
in thedtItemDimensionToProcessReq
must be identical to those sent in thedtItemToProcessRequest
- The system does not search dimension specific cross reference records when locating an item when a
PartNumber
is included in the request - The method returns item information in the Display UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply
- The system includes quantities for alternate items assigned to component items when calculating the
MaxProductionUnits
value for a BOM Parent item when all of the following conditions are met:- Branch Parameter Include alternates when calculating maximum production units on the Inventory tab is set.
- If the alternate item has the Applies to work orders from sales orders option set and the Auto order option is set to ‘Auto order at work order entry’ in Alternates Maintenance.
- If the Stocking UOM on the component item and alternate item are not the same, there must be a UOM conversion setup on the alternate item to get back to the stocking UOM on the component item.
- If the component is a dimension type item, the alternate item must be setup for the overall 00x00x00 record
- The
PriceMargin
,PriceMultiplier
, andPriceAdditionalAmount
tags return a 0 if the price is not calculated using the margin percent, multiplier, or additional amount formula, respectively.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemCode
come from ItemsList or ItemsInChunksList. Additionally, Width and Length come from ItemsList or ItemsInChunksList
Version Deployed
v542; updated with ItemAuditResults
in v553; PartNumber
, MaxProductionUnits
, UseOrderRestrictions
added in v600;
PriceType
, PriceMargin
, PriceMultiplier
, and PriceAdditionalAmount
added in v612
ItemTalliesList
Sample Request
{
"request": {
"dsItemTalliesListRequest": {
"dtItemTalliesListRequest": [
{
"ItemCode": "419417",
"Location": "Yard",
"Lot": "100",
"Tag": "T0112616",
"Content": "1X6X24",
"Width": 6,
"Length": 24,
"LevelOfInformation": "Content"
}
]
}
}
}
Sample Response
{
"response": {
"ItemTalliesListResponse": {
"dsItemTalliesListResponse": {
"dtItemTalliesListResponse": [
{
"ItemCode": "419417",
"Location": "Yard",
"SubLocation": "001",
"Lot": "100",
"Tag": "T0112616",
"Content": "1X6X24",
"Thickness": 1,
"Width": 6,
"Length": 24,
"Description": "",
"Description2": "",
"SupplierName": "",
"PieceCount": 0,
"StockQuantity": 120,
"StockUOM": "BF",
"DisplayQuantity": 120,
"DisplayUOM": "BF",
"PieceQuantity": 0,
"PieceUOM": "",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns tally information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemCode
LevelOfInformation
Optional Inputs
Location
Lot
Tag
Content
Width
Length
Response
- ReturnCode
MessageText
- list of items with details and the specific price information based on the customer and ship-to specified
Notes
- Valid values for
LevelOfInformation
areBranch
,Location
,Lot
,Tag
, andContent
and are directly related to the Quantity Carried on the item - Enter values for
Location
,Lot
,Tag
and/orContent
to refine the results to be more specific as needed - The method returns item information in the Display UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemCode
come from ItemsList or ItemsInChunksList. Additionally, Width and Length come from ItemsList or ItemsInChunksList
Version Deployed
v542
ItemUOMsList
Sample Request
{
"request": {
"dsItemUOMsListRequest": {
"dtItemUOMsListRequest": [
{
"ItemCode": "419147"
}
]
}
}
}
Sample Response
{
"response": {
"ItemUOMsListResponse": {
"dsItemUOMsListResponse": {
"dtItemUOMsListResponse": [
{
"ItemCode": "419147",
"StockingUOM": "BF",
"UOM": "BF",
"FromStocking": 1,
"ToStocking": 1
},
{
"ItemCode": "419147",
"StockingUOM": "BF",
"UOM": "LF",
"FromStocking": 1,
"ToStocking": 1
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns UOM information for a specified set of items
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ItemCode
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- list of valid UOMs per item and information about the conversion factors to and from the stocking UOM
Notes
- N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
ItemCode
come from ItemsList or ItemsInChunksList. - There can be more than one record in the
dtItemUOMResponse
for eachItemCode
requested
Version Deployed
v542
ItemUpdate
Sample Request
{
"request": {
"Item": "917-RL",
"ItemUpdateJSON": {
"dsItemUpdate": {
"dtItemUpdate": [
{
"AllSharedBranches": 1,
"ItemGroupMajor": "00",
"ItemGroupMinor": "PINE",
"PriceCodeMajor": "00",
"PriceCodeMinor": "PINE",
"StockingUOM": "BF",
"CostingUOM": "BF",
"StockingToCostingConvFactor": 1,
"Size": "2x4",
"ItemDescription": "2 x 4 Pine Stud",
"ExtDescription": "2 in. X 4 in. KD Pine Stud",
"PieceReference": "PC",
"StockingToPieceCalculation": "Qty/(TxWxL/12)",
"StandardThickness": 0,
"Thickness": 2,
"ThicknessUOM": "Inches",
"StandardWidth": 0,
"Width": 4,
"WidthUOM": "Inches",
"LengthUOM": "Feet",
"AlternateUOM1": "MBF",
"AlternateUOM1ConvFactor": 1000,
"AlternateUOM2": "CAR",
"AlternateUOM2ConvFactor": 20000,
"AlternateUOM3": "TRCK",
"AlternateUOM3ConvFactor": 1500,
"StockItem": 1,
"Active": 1,
"TemplateForNonStocks": "No",
"NonSaleable": "No",
"Discontinued": "No",
"AllowInPartnerview": "Yes",
"AllowInAgilityConfigurator": "No",
"AllowInMobileApps": "Yes",
"AllowInECommerceAndAPI": "Yes",
"UserDefinedKeywords": "Pine Stud",
"ShippingBOLCode": "ABC",
"ShippingMSDS": "123",
"TaxCategory": "NT",
"ItemSupplierCode": "WIN01",
"ItemSupplierShipFromSequence": 1,
"ItemSupplierPartNumber": "789712",
"ItemSupplierWeight": 8.5,
"ItemSupplierWeightUOM": "EA",
"ItemSupplierLoad": 7,
"ItemSupplierLoadUOM": "EA",
"AllowBrokenUOMInCountEntry": true,
"BrokenUOM": "BF",
"DisplayUOM": "BF",
"PickingTallyUOM": "From order",
"DWReportUOM": "BF",
"SOQuoteUOM": "BF",
"CMUOM": "BF",
"PickingUOM": "BF",
"DeliveryUOM": "BF",
"InvoiceUOM": "BF",
"UpdateTranFormUOMs": true,
"CountUOM": "BF",
"AllowDescOverride": true,
"TaxableForSales": true,
"TaxableForTaxCost": true,
"DisplayMarket": true,
"PrintItemExtDesc": true,
"EcommerceDesc": "2 x 4 Pine Stud"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Warning",
"AuditText": "Invalid AlternateUOM2"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates a single item and associated item_branch record(s)
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Item
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - Any fields not included in the
ItemUpdateJSON
will not be updated - The
AllSharedBranches
must be set for updates across all shared branches. New item branch records are not created when performing updates across shared branches. - The item type assigned to an item cannot be changed using the API.
- When performing updates across shared branches, the update must be successfully performed in the login branch before being applied to any shared branches. An existing item code cannot be activated in a shared branch using this API.
- The
StockingToCostingConvFactor
is required if changing either theStockingUOM
orCostingUOM
and the assigned Stocking and Costing UOMs are not the same - New UOM conversions are auto created in Agility when the
StockingToCostingConvFactor
,AlternateUOM1ConvFactor
,AlternateUOM2ConvFactor
, orAlternateUOM3ConvFactor
inputs are not already defined - When the
AlternateUOM1
,AlternateUOM2
, orAlternateUOM3
inputs are already assigned to the item with a single conversion factor, the conversion factor is updated per the associated input value. - When the
AlternateUOM1
,AlternateUOM2
, orAlternateUOM3
inputs are already assigned to the item with multiple conversion factors, the AlternateUOM# and conversion factor inputs are added to the item as new UOM conversions - When inactivating an item (Active value = “NO”), the
TemplateForNonStocks
field is not processed. - The
ItemSupplierCode
is always processed as being the primary item supplier assigned to an item. Any pre-existing item supplier assigned to an item is auto unset as being the primary supplier. - The
ItemSupplierCode
andItemSupplierShipFromSequence
are required to update any of the associated item supplier fields. - The
EcommerceDescription
can be sent in plain text or html.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v548
PreReceiptSave
Sample Request
{
"request": {
"PreReceiptSaveJSON": {
"dsPreReceiptSave": {
"dtPreReceiptHeader": [
{
"FileSequence": 1,
"TranType": "PO",
"TranID": "11448430",
"ShipmentNum": 0,
"dtPreReceiptItem": [
{
"FileSequence": 1,
"ItemSequence": 1,
"TranSequence": 0,
"ItemCode": "WENGE44FASBF",
"ItemXREF": "",
"ItemSpecies": "",
"ItemGrade": "",
"ItemSubGrade": "",
"ItemThickness": "",
"ItemSurface": "",
"ItemDryness": "",
"ActivateItemsNotInBranch": false,
"AddItem": false,
"MarkTagsAsPrinted": false,
"DefaultRMKey": "",
"DeleteRemaining": false,
"dtPreReceiptStorage": [
{
"FileSequence": 1,
"ItemSequence": 1,
"StorageSequence": 1,
"Location": "WHSE",
"Lot": "A",
"Tag": "",
"Content": "",
"Thickness": 1.25,
"Width": 10.00,
"Length": 4.0,
"NominalLength": 0.0,
"PieceCount": 30,
"Comments": "",
"Quantity": 1.0,
"UOM": "UNIT"
}
]
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"PreReceiptSaveResponseJSON": {
"dsPreReceiptSaveResponse": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Allows pre-receipt records to be saved for purchase orders and reman orders
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
FileSequence
TranType
TranID
ItemSeqence
TranSequence
ItemCode
ActivateItemsNotInBranch
AddItem
MarkTagsAsPrinted
DeleteRemaining
Location
Quantity
UOM
Optional Inputs
- Remaining fields in
dtPreReceiptItem
- Remaining items in
dtPreReceiptStorage
Response
- ReturnCode
MessageText
Notes
- Valid values for
TranType
are PO and RM - When
ActivateItemsNotInBranch
istrue
the system will activate the item being added to the transaction that is currently not active or will create the item branch record if one does not exist - For system-generated tags leave the
Tag
field blank Content
field is optional for dimensional items- Leave
Location
,Lot
, orContent
fields blank when defaults are setup and that’s the value to be used ShipmentNum
is an optional field that can be used forTranType
PO to adjust prereceicpts on transfer purchase orders`
Relationships
ContextId
andBranch
come from Login
Version Deployed
v600
TagInfoGet
Sample Request
{
"request": {
"Tag": "T0000002"
}
}
Sample Response
{
"response": {
"TagInfoGetResponse": {
"dsTagInfoGetResponse": {
"dtTagInfoGetResponse": [
{
"ItemCode": "SheetGood",
"ItemPtr": 103964,
"StockingUOM": "SF",
"ItemSize": "",
"ItemDescription": "Sheet good item",
"ItemExtDescription": "",
"Location": "FL01 A1-100",
"LocationPtr": 17,
"Lot": "100",
"Tag": "T0000002",
"Content": "30\"X60\"",
"Thickness": 0,
"WIDTH": 30,
"LENGTH": 60,
"PieceCount": 0,
"CommitInfo": "",
"TallyString": "40/30\"x60\"",
"OnHandQty": 500,
"HasMultipleContents": false,
"DimensionString": "30X60",
"DisplayUOM": "SF",
"DisplayUOMQuantity": 40,
"DisplayUOMConvFactor": 0.08,
"PieceReference": "SH",
"PieceQty": 40,
"PieceConvFactor": 0.08,
"InvTagType": "Sngl Unit, PC Cnt, & Length",
"QtyCarriedAtLot": true,
"QtyCarriedAtContent": true,
"QtyOnHold": 0,
"QtyToBeReturned": 0
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the information related to a specified inventory tag or tags
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Tag
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsTagInfoGetResponse
containing tag information
Notes
- N/A
Relationships
- N/A
Version Deployed
v545
TagValuesList
Sample Request
{
"request": {
"dsTagValuesListRequest": {
"dtTagValuesListRequest": [
{
"NumberOfTagSequences": 2
}
]
}
}
}
Sample Response
{
"response": {
"TagValuesListResponse": {
"dsTagValuesListResponse": {
"dtTagValuesListResponse": [
{
"Tag": "T0113334"
},
{
"Tag": "T0113335"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the next available inventory tag sequences
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
NumberOfTagSequences
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsTagValuesListResponse
containing tag numbers created
Notes
- Use inventory tagging must be set in Branch Parameters for the branch you are sending in the header
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v545
TagsPrint
Sample Request
{
"request": {
"dsTagsPrintRequest": {
"dtTagsPrintRequest": [
{
"Sequence": 2,
"Tag": "Tag 1",
"PrinterID": "LABEL"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Prints inventory tags to a specified printer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Tag
Optional Inputs
Sequence
PrinterID
Response
- ReturnCode
MessageText
Notes
- When printing multiple tags, you can include an optional print sequence,
Sequence
, in the request - If
PrinterID
is not specified, the tag prints to the Forms Assignment default printer for Inventory Tags
Relationships
- N/A
Version Deployed
v545
AgilityPublic/Orders Service
This AgilityPublic service contains methods related to customer transactions and orders.
CreditMemoCreateFromHistory
Sample Request
{
"request": {
"OriginalSOID": 2226,
"OriginalShipmentNumber": 2,
"OrderHeaderJSON": {
"dsOrderHeaderRequest": {
"dtOrderHeaderRequest": [
{
"ExpectedPickUp": "2021-11-30",
"RMAFlag": true,
"OrderedBy": "J. Smith",
"OrderMessage": "Created through API",
"PlaceOnHold": true,
"MiscField1": "Sales project 11821-A",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": "2021-12-01",
"MiscDate2": "2021-12-31",
"ShipmentTrackingNumber": "93993",
"ShipmentTrackingDate": "11/19/21"
}
]
}
},
"OrderItemJSON": {
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"OriginalSequence": 1,
"OrderQty": 1,
"UOM": "SF",
"ReasonCode": "Price Only",
"PurchaseOrderID": 0,
"ItemMessage": "Monthly special not applied",
"PrintMsgOnForms": true,
"PrintMsgOnFormsOverride": true,
"WorkOrderID": 0,
"CompletionSeq": 0,
"UseDefaultLocation": false,
"dtOrderItemDimensionRequest": [
{
"OriginalSequence": 1,
"Thickness": 0,
"Width": 24,
"Length": 36,
"PieceCount": 0,
"OrderQty": 1,
"UOM": "PC"
}
]
},
{
"OriginalSequence": 2,
"OrderQty": 1,
"UOM": "BF",
"ReasonCode": "Return to Stock",
"PurchaseOrderID": 0,
"ItemMessage": "Wrong item delivered",
"PrintMsgOnForms": true,
"PrintMsgOnFormsOverride": true,
"WorkOrderID": 0,
"CompletionSeq": 0,
"UseDefaultLocation": true,
"dtOrderItemDimensionRequest": [
{
"OriginalSequence": 2,
"Thickness": 2,
"Width": 4,
"Length": 8,
"PieceCount": 0,
"OrderQty": 2,
"UOM": "PC"
},
{
"OriginalSequence": 2,
"Thickness": 2,
"Width": 4,
"Length": 10,
"PieceCount": 0,
"OrderQty": 2,
"UOM": "PC"
}
]
},
{
"OriginalSequence": 5,
"OrderQty": 2,
"UOM": "EA",
"ReasonCode": "Debit Memo",
"PurchaseOrderID": 0,
"ItemMessage": "Billing errors",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"WorkOrderID": 0,
"CompletionSeq": 0,
"UseDefaultLocation": false
}
]
}
}
}
}
Sample Response
{
"response": {
"NewOrderID": 2229,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new credit memo from an invoiced shipment, which can include BOM parent items and dimensional items with tallies specified.
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OriginalSOID
OriginalShipmentNumber
OriginalSequence
OrderQty
UOM
ReasonCode
Optional Inputs
- Remaining fields in the
dtOrderHeaderRequest
,dtOrderItemRequest
,dtOrderItemDimensionRequest
not already referenced
Response
- ReturnCode
MessageText
NewOrderID
Notes
- This method allows parent items to be returned on a credit memo. You must specify the
WorkOrderID
andCompletionSeq
tags in thedtOrderItemRequest
to successfully add a BOM parent item to the credit memo. - At least one item or dimension must be sent in.
- When adding a dimensional item, the
Thickness
,Width
and/orLength
are required based on item type. In addition, theOrderQty
andUOM
must be specified at the dimension level.
Relationships
ContextId
andBranch
come from Login- Valid values for
OriginalSOID
,OriginalShipmentNumber
,OriginalSequence
,OrderQty
, andUOM
come fromShipmentList
. - The
NewOrderID
returned from this method can be used in conjunction with theCreditMemoList
to verify the new credit memo was created as expected - When
PlaceOnHold
is set to true, the transaction is created with a Hold approval status. WhenPlaceOnHold
is set to false, the transaction is created with a Does Not Apply approval status. - The
ReasonCode
determines whether the item detail is a debit or a credit, regardless of the positive or negative value sent in theOrderQty
tag. - This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see the Parent/Child relationship topic for more information. - When the
RMAFlag
is set to true, the system creates an RMA Credit Memo with a status type of RMA. When theRMAFlag
is sent to false, the system creates a Credit Memo with a status type of CM.
Version Deployed
v554
CreditMemoList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "BCH",
"ShipToSequence": 1,
"OrderDateRangeStart": "2021-11-08",
"OrderDateRangeEnd": "2021-11-10",
"FetchOnlyChangedSince": "2021-11-08",
"IncludeOpenOrders": true,
"IncludeInvoicedOrders": true,
"IncludeCanceledOrders": true,
"ChunkStartPointer": 0,
"RecordFetchLimit": 0
}
}
Sample Response
{
"response": {
"CreditMemoResponse": {
"dsCreditMemos": {
"dtCreditMemo": [
{
"BranchID": "1MELISSA",
"OrderID": 2232,
"CustomerID": "BCH",
"ShipToSequence": 2,
"OrderedBy": "Melissa",
"OrderDate": "2021-11-11",
"ExpectedDate": null,
"OrderStatus": "Open",
"OrderProcessStatus": "",
"CreditHoldStatus": "",
"ApprovalStatus": "Hold",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"RouteID": "",
"ShipVia": "FedEx",
"FreightTerms": "",
"PayTermsCode": "1%10NET20",
"OrderSubtotal": -9.01,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "AK",
"OrderTaxAmount": 0,
"OrderTotal": -9.01,
"DiscountAmount": -0.09,
"AfterDeductFreightAmt": 0,
"ShipToName": "Bret's Custom Homes",
"ShipToAddress1": "3101 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68130",
"ShipToPhone": "(402)-440-6890",
"BillToName": "Bret's Custom Homes",
"BillToAddress1": "3101 R Road",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "Cook",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68130",
"BillToPhone": "(402)-440-6890",
"SalesAgentID1": "NewSA1",
"SalesAgentName1": "Melissa",
"SalesAgentID2": "NewSA2",
"SalesAgentName2": "Charlotte ",
"SalesAgentID3": "NewSA3",
"SalesAgentName3": "Violet ",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"UpdateDate": "2021-11-11",
"UpdateTime": "09:54:39",
"ContactEmail": "",
"ContactName": "",
"ContactPhone": "",
"ShipComplete": false,
"CostTotal": -11,
"CostType": "Item default",
"TotalWeight": 1,
"TotalLoad": 1,
"StatusType": "RMA",
"dtCreditMemoDetail": [
{
"BranchID": "1MELISSA",
"OrderID": 2232,
"Sequence": 1,
"DisplaySequence": 1,
"LineType": "CM",
"ItemCode": "PI-BLANK-A100",
"ItemSize": "50ct",
"ItemDescription": "Nails",
"TotalOrderedQuantity": -1,
"QuantityUOM": "EA",
"GrossPrice": 9.01,
"NetPrice": 9.01,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": -9.01,
"TotalBackorderedQuantity": 0,
"TotalStagedQuantity": 0,
"TotalUnstagedQuantity": 0,
"TotalInvoicedQuantity": 0,
"LinkedTranType": "",
"LinkedTranID": 0,
"LinkedTranSequence": 0,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ExtCost": -10.9997,
"ExtWeight": 1,
"ExtLoad": 1
}
]
},
{
"BranchID": "1MELISSA",
"OrderID": 2233,
"CustomerID": "BCH",
"ShipToSequence": 2,
"OrderedBy": "Melissa",
"OrderDate": "2021-11-11",
"ExpectedDate": null,
"OrderStatus": "Open",
"OrderProcessStatus": "",
"CreditHoldStatus": "",
"ApprovalStatus": "Hold",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"RouteID": "",
"ShipVia": "FedEx",
"FreightTerms": "",
"PayTermsCode": "1%10NET20",
"OrderSubtotal": -9.01,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "AK",
"OrderTaxAmount": 0,
"OrderTotal": -9.01,
"DiscountAmount": -0.09,
"AfterDeductFreightAmt": 0,
"ShipToName": "Bret's Custom Homes",
"ShipToAddress1": "3101 R Road",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Cook",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68130",
"ShipToPhone": "(402)-440-6890",
"BillToName": "Bret's Custom Homes",
"BillToAddress1": "3101 R Road",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "Cook",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68130",
"BillToPhone": "(402)-440-6890",
"SalesAgentID1": "NewSA1",
"SalesAgentName1": "Melissa",
"SalesAgentID2": "NewSA2",
"SalesAgentName2": "Charlotte ",
"SalesAgentID3": "NewSA3",
"SalesAgentName3": "Violet ",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"UpdateDate": "2021-11-11",
"UpdateTime": "09:59:44",
"ContactEmail": "",
"ContactName": "",
"ContactPhone": "",
"ShipComplete": false,
"CostTotal": -11,
"CostType": "Item default",
"TotalWeight": 1,
"TotalLoad": 1,
"StatusType": "RMA",
"dtCreditMemoDetail": [
{
"BranchID": "1MELISSA",
"OrderID": 2233,
"Sequence": 1,
"DisplaySequence": 1,
"LineType": "CM",
"ItemCode": "PI-BLANK-A100",
"ItemSize": "50ct",
"ItemDescription": "Nails",
"TotalOrderedQuantity": -1,
"QuantityUOM": "EA",
"GrossPrice": 9.01,
"NetPrice": 9.01,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": -9.01,
"TotalBackorderedQuantity": 0,
"TotalStagedQuantity": 0,
"TotalUnstagedQuantity": 0,
"TotalInvoicedQuantity": 0,
"LinkedTranType": "",
"LinkedTranID": 0,
"LinkedTranSequence": 0,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ExtCost": -10.9997,
"ExtWeight": 1,
"ExtLoad": 1
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 2,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of credit memos for a specified customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Value Required
- The following inputs require a value due to data type:
OrderDateRangeStart
OrderDateRangeEnd
FetchOnlyChangedSince
IncludeOpenOrders
IncludeInvoicedOrders
IncludeCanceledOrders
ChunkStartPointer
RecordFetchLimit
Optional Inputs
SearchBy
SearchValue
ShipToSequence
Response
- ReturnCode
MessageText
- List of sale orders, including detail lines
Notes
- This method can return the list of credit memos at a sold-to or ship-to level depending on the value in
ShipToSequence
. Specify 0 as theShipToSequence
to return credit memos for the sold-to - The method allows the user to search for and select items based on
SearchBy
or to request the information for all items. Please see the SearchBy topic for more information - This method allows a user to request a specific number of records. Please see the Data chunking topic for more information
- Because the number of records to be returned based on the search criteria could be large, DMSi recommends using the chunking feature, especially when requesting the list at a sold-to level
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShipToSequence
come fromGetCustomerShiptos
- Valid values for
SearchBy
are Order ID and Customer PO - This method has a Parent/Child relationship between
dtOrder
anddtOrderDetail
throughOrderID
. This can be a one to many relationship
Version Deployed
v539; approval status added to response in v554
CreditMemoMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 300152143,
"TranSeq": 1,
"MessageText": "Message Text Here",
"MessageType": "Detail",
"PrintOnForms": true
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a credit memo transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
CustomerOrderPadAdd
Sample Request
{
"request": {
"CustomerID": "Hayes",
"ShipToSequence": 1,
"dsOrderPadItemsRequest": {
"dtOrderPadItemsRequest": [
{
"Sequence": 10,
"ItemCode": "419147",
"OrderQty": 7,
"UOM": "EA",
"Price": 15,
"PriceUOM": "EA",
"PriceLevel": 1,
"SaleType": "",
"ItemMessage": "",
"OrderedBy": "Brad"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new OrderPad
detail; if no OrderPad exists for the customer/ship-to, also creates the main OrderPad
record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ItemCode
UOM
PriceUOM
for each detailShipToSequence
Optional Inputs
- Remaining fields
dtCustomerOrderPadItems
Response
- ReturnCode
MessageText
Notes
ShipToSequence
may be required if system is set to allowOrderPad
at the ship-to level only.OrderPad
details can be created with 0OrderQty
.Sequence
value can be 0 for each line being added. Processing logic will assign the proper sequence to each line as it is created.If adding a dimension record, values for
Thickness
,Width
, and/orLength
are required based on item type.ShipToSequence
may be required if system is set to allowOrderPad
at the ship-to level only. You can enter zero for theShipToSequence
to add records at the sold-to level.OrderPad
details can be created with 0OrderQty
.Sequence
value can be 0 for each line being added. Processing logic will assign the proper sequence to each line as it is created.If adding a dimension record, values for
Thickness
,Width
, and/orLength
are required based on item type.The E-commerce sale type defined for the ship-to record is assigned to the
OrderPad
. You can override this by entering a different sale type in theSaleType
field.The price level defined for the related bill-to record is assigned. You can override with by entering a different value in the
PriceLevel
field.Inventory Selling Min Pack and Min Pak Violation settings do not apply. Quantities do not automatically adjust to the selling min pack and the broken min pack flag is not set.
You can override prices and price UOMs on detail lines. Only the UOMs associated with an item can be entered. For dimensional items with unique pricing by dimension, the overridden price is entered on the dimension and each dimension must be on a separate line. Add-on charges included in the price and discounts will not be applied to the overridden price. The price and price UOM are flagged as overridden once the
OrderPad
is submitted.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come fromCustomersList
or CustomerShiptoList. - Valid values for
ShipToSequence
come from CustomerShiptoList. - After adding details to an
OrderPad
, use the CustomerOrderPadList method with theCustomerID
andShipToSequence
, as required, to see the fullOrderPad
.
Version Deployed
v539
CustomerOrderPadDelete
Sample Request
{
"request": {
"CustomerID": "Hayes",
"ShipToSequence": 1,
"dsOrderPadItemsRequest": {
"dtOrderPadItemsRequest": [
{
"Sequence": 5
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes an existing OrderPad
detail; if this is the only OrderPad
detail remaining on this OrderPad
, the main OrderPad
record is also deleted
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Sequence
for each detail to delete
Optional Inputs
ShipToSequence
Response
- ReturnCode
MessageText
Notes
ShipToSequence
may be required if system is set to allowOrderPad
at the ship-to level only. You can enter zero for theShipToSequence
to add records at the sold-to level.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- To get the list of valid
Sequences
available for deleting, use CustomerOrderPadList to see theSequence
values used and whichItemCode
each is tied to.Sequence
is the output that matches theSequence
input. DMSi recommends carefully choosing theSequence
to delete by reviewing related data for eachSequence
detail as anItemCode
can exist on anOrderPad
multiple times, including individual entries for dimensions. - After deleting details from an
OrderPad
, use the CustomerOrderPadList method with theCustomerID
andShipToSequence
, if necessary, to see the fullOrderPad
Version Deployed
v539
CustomerOrderPadList
Sample Request
{
"request": {
"CustomerID": "Hayes",
"ShipToSequence": 1
}
}
Sample Response
{
"response": {
"dsCustomerOrderPadResponse": {
"dsCustomerOrderPadResponse": {
"dtOrderPadHeaderResponse": [
{
"CustomerCode": "Hayes",
"ShipToSequence": 1,
"PriceLevel": 2,
"SaleType": "WH",
"dtOrderPadItemResponse": [
{
"ItemCode": "419147",
"Dimension": "",
"OrderQty": 150,
"UOM": "EA",
"Price": 15,
"PriceUOM": "EA",
"AvailableQty": 487,
"ItemSize": "ISize",
"ItemDescription": "Elkhorn",
"PriceOverridden": true,
"DiscountDescription": "",
"ExtendedPrice": 2250,
"Cost": 42.7055,
"CostDesignator": "A",
"GrossMarginPercent": -184.7,
"GrossMarginAmount": -4155.82,
"PriceLevel": 1,
"SaleType": "WH",
"CreatedBy": "Brad",
"CreatedDate": "2019-02-13",
"CreatedTime": "12:39:58",
"UpdateBy": "Brad",
"UpdateDate": "2019-02-13",
"UpdateTime": "12:39:58",
"Sequence": 4,
"CustomerCode": "Hayes",
"ShipToSequence": 1,
"Thickness": 0,
"Width": 0,
"Length": 0,
"ItemMessage": "",
"OrderedBy": "Brad",
"SupplierRebate": 0,
"MinPackQty": 0,
"MinPackType": "Allow - Question"
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns an existing OrderPad
for a specific customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShipToSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
OrderPad
and its related details
Notes
ShipToSequence
may be required if system is set to allowOrderPad
at the ship-to level only. You can enter zero for theShipToSequence
to add records at the sold-to level.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShipToSequence
come from CustomerShiptoList - This method should be used to find the correct inputs for and to verify the processing of the other
CustomerOrderPad*
methods available in this service
Version Deployed
v539
CustomerOrderPadUpdate
Sample Request
{
"request": {
"CustomerID": "Hayes",
"ShipToSequence": 1,
"OrderPadUpdateJSON": {
"dsCustomerOrderPadItemsRequest": {
"dtCustomerOrderPadItemsRequest": [
{
"Sequence": 4,
"ItemCode": "419147",
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 77,
"UOM": "EA",
"Price": 2,
"PriceUOM": "EA",
"SaleType": "WH",
"ItemMessage": "",
"OrderedBy": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates an existing OrderPad
detail
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Sequence
ItemCode
for each detail to updateShipToSequence
Optional Inputs
- Remaining fields
dtCustomerOrderPadItems
(depending on what needs to be updated)
Response
- ReturnCode
MessageText
Notes
ShipToSequence
may be required if system is set to allowOrderPad
at the ship-to level only- Setting the
ShipToSequence
for zero updates theOrderPad
at the sold-to level
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- After updating details from an
OrderPad
, use the CustomerOrderPadList method with theCustomerID
andShipToSequence
, if necessary, to see the fullOrderPad
- To get the list of valid Sequences available for updating, use CustomerOrderPadList to see the
Sequence
values used and whichItemCode
each is tied to. DMSi recommends carefully choosing theSequence
to update by reviewing related data for eachSequence
detail as anItemCode
can exist on anOrderPad
multiple times, including individual entries for dimensions
Version Deployed
v539
QuicklistList
Sample Request
{
"request": {
"CustomerID": "123161",
"ShipToSequence": 1
}
}
Sample Response
"response": {
"dsItemQuickListResponse": {
"dsdsItemQuickListResponse": {
"dtQuickListHeaderResponse": [
{
"QuickList": "Top Items by GM %",
"dtQuickListItemResponse": [
{
"QuickList": "Top Items by GM %",
"ItemCode": "100040",
"ItemSize": "Satin Paint",
"ItemDescription": "orange interior",
"RankValue": 86.1
}
]
},
{
"QuickList": "Top Items by Hits",
"dtQuickListItemResponse": [
{
"QuickList": "Top Items by Hits",
"ItemCode": "97114SHEET",
"ItemSize": "",
"ItemDescription": "Sheet good",
"RankValue": 9
}
]
},
{
"QuickList": "Top Items by Total Sales Amt",
"dtQuickListItemResponse": [
{
"QuickList": "Top Items by Total Sales Amt",
"ItemCode": "c10",
"ItemSize": "10 gauge2",
"ItemDescription": "",
"RankValue": 10818.25
}
]
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
Purpose
Returns existing quick lists with a quicklist type of 'Sales' for a specific customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShipToSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- quicklists and their related details
Notes
Quicklists
can be created at the sold-to (ShipToSequence
= 0) or ship-to (ShipToSequence
<> 0) level for a customer- BOM parent items are excluded from the quicklist response, unless set as an Auto complete WO
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- There is a Parent/Child relationship in this method.
dtQuickListHeader
is tied todtQuickListItem
via theQuickList
field. There can be a one to many relationship between these outputs - Valid values for
CustomerID
come fromCustomersList
or CustomerShiptoList - Valid values for
ShipToSequence
come from CustomerShiptoList
Version Deployed
v539
QuicklistPriceandAvailList
Sample Request
{
"request": {
"CustomerID": "123161",
"ShipToSequence": 1
}
}
Sample Response
{
"response": {
"ItemCustomerPricingResponse": {
"dsItemCustomerPricingResponse": {
"dtItemPriceAndQtyResponse": [
{
"ItemCode": "c10",
"ItemXref": "All Cust Xref",
"ItemSize": "10 gauge2",
"DimensionSize": "",
"ItemDescription": "",
"ExtendedDescription": "c10",
"Thickness": 0,
"ThicknessUOM": "",
"Width": 0,
"WidthUOM": "",
"Length": 0,
"LengthUOM": "",
"ItemGroupMajor": "MISC",
"ItemGroupMinor": "NAILS",
"MinPackQty": 1,
"MinPackType": "Adjust - Notify",
"Nonsaleable": false,
"Stock": true,
"ItemType": "",
"ItemTypeName": "",
"ImageUrl": "",
"UOM": "PC",
"OnHandQty": 100,
"AvailableQty": 90,
"PriceUOM": "box",
"GrossPrice": 0.27,
"PriceUOMGrossPrice": 27,
"NetPrice": 0.27,
"PriceUOMNetPrice": 27,
"DiscountDescription": "",
"QuickList": "Top Items by Total Sales Amt",
"RankValue": 10818.25,
"Dimension": "",
"SpecialItemType": "",
"Promo": false,
"DefaultWeight": 4.5,
"DefaultWeightUOM": "box",
"DefaultLoad": 1.1,
"DefaultLoadUOM": "box",
"PrimarySupplierWeight": 4.5,
"PrimarySupplierWeightUOM": "box",
"PrimarySupplierLoad": 1.1,
"PrimarySupplierLoadUOM": "box"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns existing quick lists with a quicklist type of 'Sales' for a specific customer with price and availability information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShipToSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- quicklists and their related details
Notes
Quicklists
can be created at the sold-to (ShipToSequence
= 0) or ship-to (ShipToSequence
<> 0) level for a customer- BOM parent items are excluded from the quicklist response, unless set as an Auto complete WO
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- The
QuickList
field reflects to which quick list the items returned are related - The difference between this method and QuicklistList is in the data returned. The structure is a bit difference and this method returns price and availability information for the quick list items
- Valid values for
CustomerID
come fromCustomersList
or CustomerShiptoList - Valid values for
ShipToSequence
come from CustomerShiptoList
Version Deployed
v539
QuoteCreate
Sample Request
{
"request": {
"QuoteHeaderJSON": {
"dsQuoteHeaderRequest": {
"dtQuoteHeaderRequest": [
{
"CustomerID": "777",
"ShipToSequence": 1,
"SaleType": "WH",
"RequestedDeliveryDate": "2021-09-15",
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"CustomerPO": "",
"AcknowledgementEmailAddress": "",
"AcknowledgementEmailAddress2": "",
"AcknowledgementFaxNumber": "",
"ShipToName": "",
"ShipToAddress1": "",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "",
"ShipToState": "",
"ShipToZip": "",
"ShipToCountry": "",
"ShipToPhone": "",
"OrderMessage": "",
"ShipVia": "",
"ActivationDate": "2024-02-23",
"CloseDate": "2025-02-14",
"ExternalSource": "Amazon",
"ExternalProjectID": "AM12345",
"SourceLogin": ""
}
],
"dtQuoteHeaderNotesRequest": [
{
"OrderNote": "Hold order",
"HotNote": true
},
{
"OrderNote": "Must ship on time",
"HotNote": false
}
]
}
},
"OrderItemJSON": {
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "jfsl2",
"OrderQty": 2,
"UOM": "EA",
"Charge": false,
"Price": 1.6,
"PriceUOM": "EA",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"ShippingBranch": "",
"DetailGroupID": "Attic",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false,
"TemplateItemCode": "TEMPLATERKE",
"NonStockSize": "Large",
"NonStockDescription": "",
"NonStockExtDescription": "",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "634-980",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 12,
"NonStockCostUOM": "EA"
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 0,
"UOM": "",
"Price": 0,
"PriceUOM": "",
"PriceOverride": false
}
]
}
}
}
}
Sample Response
{
"response": {
"NewOrderID": 738,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new quote
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ItemCode
OrderQty
- UOM for each detail record
Optional Inputs
- Remaining fields in the
dtQuoteHeaderRequest
,dtOrderItemRequest
, ordtOrderItemDimensionRequest
not already referenced
Response
- ReturnCode
MessageText
NewOrderID
Notes
ContextID
comes from Login- Valid values for
SaleType
come from SaleTypesList - Valid values for
ItemCode
and relatedThickness
,Width
andLength
come from ItemsList or ItemsInChunksList - Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShiptoSequence
come from CustomerShiptoList RequestedDeliveryDate
in theQuoteCreate
request can be seen inExpectedDate
from the QuoteList response- This method contains a parent/child relationship between
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see the Parent/Child relationship topic for more information dtOrderItemDimensionRequest
must be included in the request even if the item is not a dimensional item- If any of the ship-to address tags are sent in with a value, the system clears out the other ship-to address fields instead of using the default values. For example, if you send in a value in only the
ShipToAddress1
tag, the city and state on the newly created Quote will be blank. If you override a ship-to address, you must send in all relevant ship-to address tags. The tags included in the ship-to address fields are as follows:ShipToName
,ShipToAddress1
,ShipToAddress2
,ShipToAddress3
,ShipToCity
,ShipToState
,ShipToZip
,ShipToCountry
,ShipToPhone
.- If all ship-to address tags have a value of blank, or none of them are sent in the request, then the system uses the default ship-to address values.
- If
UseItemConvertPriceAndUOM
=true
, the process converts the price and price UOM to the order qty UOM if all the following criteria are met:PriceOverride
=false
- Convert price/price UOM to match order field on the item record is set in Agility
- The UOM sent in the
dtOrderItemRequest
does not match the SO/Quote UOM on the item record in Agility
- This method allows customer charges and order costs to be added to the quote. If either
Charge
= True orOrderCost
= True in thedtOrderItemRequest
, then theItemCode
value must correspond to a valid Charge type or Cost type in Agility, and thePrice
is the amount applied to the order. All other tags in thedtOrderItemRequest
are ignored.- You can only add customer charges and order costs with the record type of header charge, header charge allocated to detail, header charge calculated by item detail, or header cost.
- The customer charge or order cost is added with a fixed amount basis.
- If the
Price
is greater than or equal to 0, then the customer charge or order cost applies as a Charge or Cost, respectively. - If the
Price
is less than 0, then the customer charge or order cost applies as a Refund or Cost Reduction, respectively.
- The
AddPermanentDetailGroupID
tag determines if a permanent detail group record is created for the detail group received in the request. DepartmentName
,DepartmentNumber
,APIPriceSourceType
, andAPIPriceSourceRef
, while displayed as inputs, are not operational for this method and are reserved for future use.- The ‘Require Template for Non-Stock’ security action will not be read
- If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent item- If any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
- If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true
Relationships
ContextId
andBranch
come from Login
Version Deployed
v552; fields added in v602, v609, and v610
QuoteCreateValidate
Sample Request
{
"request": {
"dsQuoteHeaderRequest": {
"dtQuoteHeaderRequest": [
{
"CustomerID ": "INC321",
"ShipToSequence": 1,
"SaleType": "WH",
"RequestedDeliveryDate": "2024-01-31",
"TransactionReference": "",
"TransactionJob ": "",
"OrderedBy": "API",
"CustomerPO": "",
"AcknowledgementEmailAddress": "",
"AcknowledgementEmailAddress2": "",
"AcknowledgementFaxNumber": "",
"ShipToName ": "",
"ShipToAddress1": "",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity ": "",
"ShipToState": "",
"ShipToZip": "",
"ShipToCountry": "",
"ShipToPhone": "",
"OrderMessage": "test",
"ShipVia": "FedEx",
"ActivationDate": "2024-01-31",
"CloseDate": "2025-01-31",
"ExternalSource": "Roof Hub",
"ExternalProjectID": "RH12345",
"SourceLogin": ""
}
],
"dtQuoteHeaderNotesRequest": [
{
"OrderNote": "Hold order",
"HotNote": true
},
{
"OrderNote": "Must ship on time",
"HotNote": false
}
]
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "1.5FOAM",
"OrderQty": 22,
"UOM": "EACH",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Roof",
"AddPermanentDetailGroupID": true,
"UseGroupAsDefaultNewItems": true,
"TemplateItemCode": "PI-SL-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I Joist - residential",
"NonStockExtDescription": "Flanges - LVL",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 125,
"NonStockCostUOM": "BF"
},
{
"Sequence": 2,
"ItemCode": "",
"OrderQty": 200,
"UOM": "BF",
"Charge": false,
"Price": 0,
"PriceUOM": "BF",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Framing",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": true
},
{
"Sequence": 3,
"ItemCode": "3068SLAB",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Foundation",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 2,
"Thickness": 2,
"Width": 4,
"Length": 10,
"OrderQty": 30,
"UOM": "PC",
"Price": 0,
"PriceUOM": "0",
"PriceOverride": false
}
]
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtOrderItemDimensionRequest",
"AuditRecordIndex": "Sequence: 2, Thickness: 1, Width: 4, Length: 10",
"AuditText": "Invalid dimension of T=1 W=4 L=10 for 141730-RL. (ID# 1143)"
},
{
"AuditSequence": 2,
"AuditType": "Failure",
"AuditTable": "dtOrderItemRequest",
"AuditRecordIndex": "Sequence: 1, Item code: 2827",
"AuditText": "Order Qty cannot be negative for Item 2827. (ID# 1662)"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Validates the creation of a new quote order and new items
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ItemCode
OrderQty
Optional Inputs
- Remaining fields in the
dtQuoteHeaderRequest
,dtQuoteHeaderNotesRequest
,dtOrderItemRequest
, ordtOrderItemDimensionRequest
not already referenced
Response
- ReturnCode
MessageText
Notes
When the following tags are included in the request a value is required.
Charge
PriceOverride
OrderCost
SendMsgToWMS
SendMsgToWMSOverride
Refer to the Notes in the QuoteCreate method.
Review the
dsAuditResults
to identify changes needed in the request in order for the validation to be successful.The ‘Require Template for Non-Stock’ security action will not be read
If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent itemIf any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also trueIf a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also trueIf a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Refer to the relationships section in the QuoteCreate method
Version Deployed
v609; fields added in v610
QuoteDelete
Sample Request
{
"request": {
"QuoteID": 123456,
"DeleteReleasedQuote": true
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes an existing quote
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
QuoteID
Value Required
- The following inputs require a value due to data type:
QuoteDateRangeStart
QuoteDateRangeEnd
IncludeOnlyOpenQuotes
ChunkStartPointer
RecordFetchLimit
Optional Inputs
DeleteReleasedQuote
Response
- ReturnCode
MessageText
Notes
- If the value for
DeleteReleasedQuote
is not specified, the default is set to false. The value must be set as true to delete a quote with released line items.
Relationships
ContextId
andBranch
come from Login
Version Deployed
549
QuoteDetailsDelete
Sample Request
{
"request": {
"OrderID": 300160083,
"DeleteReleasedDetails": true,
"QuoteDetailsDeleteJSON": {
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1
},
{
"Sequence": 2
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtOrderItemRequest",
"AuditRecordIndex": "Sequence: 1",
"AuditText": "Quote detail sequence 1 not found. (ID# 2381)"
}
]
}
},
"ReturnCode": 0,
"MessageText": "See audit results for failures"
}
}
Purpose
Deletes an existing quote detail record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Sequence
Optional Inputs
N/A
Response
- ReturnCode
MessageText
Notes
- The value in the
DeleteReleasedDetail
tag determines if line items with quantity released can be deleted.- Valid values are 'true' and 'false'
- If the tag is not sent in the request, details with quantity released will not be deleted
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Quote details come from QuoteList
Version Deployed
v610
QuoteDetailsUpdate
Sample Request
{
"request": {
"OrderID": 1000340097,
"QuoteDetailsUpdateJSON": {},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 3,
"OrderQty": 800,
"UOM": "BF",
"UseItemConvertPriceAndUOM": false,
"Price": 100,
"PriceUOM": "MBF",
"ApplyPriceToAllDimensions": true,
"PriceSubjectToFurtherDiscounts": false,
"PriceOverride": true,
"DetailGroupID": "Driveway",
"AddPermanentDetailGroupID": true,
"UseGroupAsDefaultNewItems": false,
"dtOrderItemDimensionRequest": [
{
"Sequence": 3,
"Thickness": 2,
"Width": 4,
"Length": 10,
"PieceCount": 0,
"OrderQty": 200,
"UOM": "BF"
}
]
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": "",
"AuditResults": {
"dsAuditResults": {}
}
}
}
Purpose
Updates an existing quote detail record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Sequence
Optional Inputs
OrderQty
UOM
UseItemConvertPriceAndUOM
Price
PriceUOM
PriceOverride
DetailGroupID
AddPermanentDetailGroupID
UseGroupAsDefaultNewItems
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The item being updated must meet the following criteria in order to be successfully updated:
- Item is allowed in the API
- Item is not discontinued
- Item is not a template item
- If updating a dimension on an item,
Thickness
,Width
, and/orLength
are required based on the item type. If the existing item has tallies specified, dimension information must be sent in throughdtOrderItemDimensionRequest
. In addition, theOrderQty
andUOM
must be specified at the dimension level. Use thePieceCount
field whenOrderQty
has a value of “UNIT”. Sheet Good item types will require theWidth
andLength
to match existing item. - If
UseItemConvertPriceAndUOM
= 'true', the process converts the price and price UOM to the order qty UOM if all the following criteria are met:- Convert price/price UOM to match order field on the item record is set in Agility
- The
UOM
sent in thedtOrderItemRequest
does not match the Quote UOM on the item record in Agility
- If
PriceOverride
= 'false', no updates will be made to the detail price even ifPrice
andPriceUOM
values are sent - If
PriceSubjectToFurtherDiscounts
= 'true', and the detail being updated had discounts applied before, the discounts will continue to be applied after the update; if value = 'false', the discounts will be updated to zero - If the existing detail has pricing by dimension and
ApplyPriceToAllDimensions
= 'true', the price on the dimensions will be updated with the Price value sent; if value = 'false', the item update will fail - Item update fails if updating Price for a detail group header item with the ‘Price Detail Items only’ option set
- Item update fails if updating Price for a non-detail group header item that has a detail group assigned and the group header for that group has the Pricing flag set to ‘Price Header Item only’
- If
PriceOveride
= 'false', no price updates are made to the quote detail even ifPrice
andPriceUOM
values are included - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Quote details come from QuoteList
- Valid values for a sequence’s thickness, width, and length come from ItemList or ItemsInChunksList
- This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see Parent/Child relationship topic for more information.
Version Deployed
v610
QuoteList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "123161",
"ShipToSequence": 1,
"IncludeOnlyOpenQuotes": false,
"ChunkStartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"QuoteDisplayResponse": {
"dsQuotesResponse": {
"dtQuoteResponse": [
{
"BranchID": "WESTONBRANCH",
"QuoteID": 300530,
"HeaderGUID": "1009e9de529e-b775-b995-4914-f9d5fc29",
"QuoteType": "",
"CustomerID": "123161",
"ShipToSequence": 1,
"QuotedBy": "llattier",
"QuoteDate": "2018-12-17",
"ActivationDate": "2018-12-17",
"ClosedDate": "2019-04-16",
"QuoteProcessStatus": "Open",
"SaleType": "WH",
"SaleTypeDescription": "Warehouse Order WH",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"ShipVia": "OUR TRUCK",
"FreightTerms": "",
"PayTermsCode": "2%flat",
"OrderSubtotal": 960,
"OrderChargesAmount": 0,
"Taxable": true,
"TaxCode": "NE5.5",
"OrderTaxAmount": 52.8,
"OrderTotal": 1012.8,
"DiscountAmount": 19.2,
"AfterDeductFreightAmt": 0,
"ShipToName": "DAA Hardware - Ralston",
"ShipToAddress1": "4321 78th Street",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity": "Ralston",
"ShipToState": "NE",
"ShipToCountry": "",
"ShipToZip": "68127",
"ShipToPhone": "(402)-555-3333",
"BillToName": "DAA HARDWARE BILL-TO 1",
"BillToAddress1": "123 A STREET",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "LA VISTA",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68128",
"BillToPhone": "( )- - ",
"SalesAgentID1": "",
"SalesAgentName1": "",
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"ExternalSource": "AMAZON",
"ExternalProjectID": "AM12345",
"dtQuoteDetailResponse": [
{
"BranchID": "WESTONBRANCH",
"QuoteID": 300530,
"Sequence": 1,
"DisplaySequence": 1,
"ItemCode": "PHX283A",
"ItemSize": "REG",
"ItemDescription": "",
"DetailProcessStatus": "Open",
"TotalOrderedQuantity": 10,
"QuantityUOM": "EA",
"GrossPrice": 32,
"NetPrice": 32,
"PriceUOM": "EA",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": 320,
"WOPhrase": "",
"DetailGroupID": "Basement",
"TotalReleasedQuantity": 4,
"TotalRemainingQuantity": 5.5
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 262,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of quotes for a specified customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Value Required
- The following inputs require a value due to data type:
QuoteDateRangeStart
QuoteDateRangeEnd
IncludeOnlyOpenQuotes
ChunkStartPointer
RecordFetchLimit
Optional Inputs
ShipToSequence
Response
- ReturnCode
MessageText
- list of quotes, including detail lines
Notes
- This method can return the list of quotes at a sold-to or ship-to level depending on the value in
ShipToSequence
. Specify 0 as theShipToSequence
to return quotes orders for the sold-to - A value of <all> can be specified in
CustomerID
- A value must also be specified in
SearchBy
andSearchValue
- Specify 0 as the
ShipToSequence
- A value must also be specified in
- This method allows a user to request a specific number of records. Please see the Chunking topic for more information
- Because the number of records to be returned based on the search criteria could be large, DMSi recommends using the chunking feature, especially when requesting the list at a sold-to level
- Valid values for
SearchBy
:- Order ID
- Quote ID
- Customer PO
- Reference #
- Job #
- External Source
- External Project ID
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
ShipToSequence
come from CustomerShiptoList
Version Deployed
539; fields added in v609
QuoteMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 12345,
"ShipmentNum": 1,
"TranSeq": 1,
"MessageText": "Message Text Here",
"MessageType": "Detail",
"PrintOnForms": true,
"SendToWMS": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a quote transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
SendToWMS
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
QuotePriceHoldApprove
Sample Request
{
"request": {
"QuoteID": 1000328293,
"QuoteDetailApproveJSON": {
"dsQuoteDetail": {
"dtQuoteDetail": [
{
"Sequence": 1,
"SendNotification": "YES",
"ReviewerID": "PRCAPP01",
"Comment": "above floor"
},
{ "Sequence": 2, "SendNotification": "NO" },
{
"Sequence": 4,
"SendNotification": "YES",
"ReviewerID": "PRCAPP01",
"Comment": "below floor"
},
{
"Sequence": 3,
"SendNotification": "YES",
"ReviewerID": "PRCAPP01",
"Comment": "Error in quoted price"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Removes quote items from price hold; approve items on price hold based of the QuoteID and detail line item Sequence
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
QuoteID
Sequence
Optional Inputs
SendNotification
ReviewerID
Comment
Response
- ReturnCode
MessageText
Notes
- To get the list of valid Sequences available for updating, use
QuoteList
to see theSequence
values used and whichItemCode
each is tied to. DMSi recommends carefully choosing theSequence
to update by reviewing related data for eachSequence
detail as anItemCode
can exist multiple times on a Quote, including individual entries for dimensions - A Price Hold Approval/Rejection Notification must be defined in Agility to send a notification
- Comment and
ReviewerID
are populated on the notification- When the
ReviewerID
value matches a User ID in Agility, the Reviewer User Name on the notification is populated with the User Name value from the user record - If the
ReviewerID
value does not match a User ID in Agility, the Reviewer User Name on the notification is blank
- When the
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
QuoteID
come from QuoteList
Version Deployed
v539
QuotePriceHoldReject
Sample Request
{
"request": {
"QuoteID": 1000328312,
"QuoteDetailRejectJSON": {
"dsQuoteDetail": {
"dtQuoteDetail": [
{
"Sequence": 2,
"SuggestedPrice": 2.2,
"SuggestedPriceUOM": "GAL",
"SendNotification": "YES",
"ReviewerID": "PRCREJ01",
"Comment": "below floor"
},
{
"Sequence": 1,
"SuggestedPrice": 1.1,
"SuggestedPriceUOM": "EA",
"SendNotification": "YES",
"ReviewerID": "PRCREJ01",
"Comment": "below floor"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Denies removal of quote items from price hold based on the QuoteID and detail line item Sequence and sends a suggested price for approval
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
QuoteID
Sequence
Optional Inputs
QuoteID
Sequence
Response
- ReturnCode
MessageText
Notes
- To get the list of valid Sequences available for updating, use
QuoteList
to see theSequence
values used and whichItemCode
each is tied to. DMSi recommends carefully choosing theSequence
to update by reviewing related data for eachSequence
detail as anItemCode
can exist multiple times on a Quote, including individual entries for dimensions - Include a
SuggestedPrice
that would allow approval of the item - A Price Hold Approval/Rejection Notification must be defined in Agility to send a notification
Comment
andReviewerID
are populated on the notification- When the
ReviewerID
value matches a User ID in Agility, the Reviewer User Name on the notification is populated with the User Name value from the user record - If the
ReviewerID
value does not match a User ID in Agility, the Reviewer User Name on the notification is blank
- When the
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
QuoteID
come from QuoteList
Version Deployed
v550
QuoteRelease
Sample Request
{
"request": {
"QuoteReleaseJSON": {
"dsQuoteReleaseSettingsRequest": {
"dtQuoteReleaseSettingsRequest": [
{
"OrderID": 1000380465,
"ReleaseRule": "Release by item",
"AppendSalesOrderID": 0,
"SaleType": "",
"CombineLikeItems": true,
"RecalculateOverriddenExpDate": true
}
]
},
"dsQuoteReleaseItemRequest": {
"dtQuoteReleaseItemRequest": [
{
"Sequence": 1,
"ReleaseQuantity": 240,
"ReleaseUOM": "LF",
"dtQuoteReleaseItemDimRequest": [
{
"Sequence": 1,
"Thickness": 2,
"Width": 4,
"Length": 10,
"ReleaseQuantity": 100,
"ReleaseUOM": "LF",
"PieceCount": 0
},
{
"Sequence": 1,
"Thickness": 2,
"Width": 4,
"Length": 12,
"ReleaseQuantity": 120,
"ReleaseUOM": "LF",
"PieceCount": 0
}
]
},
{
"Sequence": 2,
"ReleaseQuantity": 25,
"ReleaseUOM": "RL"
},
{
"Sequence": 3,
"ReleaseQuantity": 50,
"ReleaseUOM": "EA"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 2,
"AuditType": "Failure",
"AuditTable": "dtQuoteReleaseOrderItem",
"AuditRecordIndex": "Sequence: 2",
"AuditText": "Item was previously released"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Fully or partially release an active/open quote to a sales order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
ReleaseRule
- 'Release full quote' or 'Release by item'
Optional Inputs
- Remaining fields in
dtQuoteReleaseSettingsRequest
,dtQuoteReleaseItemRequest
, anddtQuoteReleaseDimRequest
not already referenced
Response
- ReturnCode
MessageText
ReleasedToOrderID
dsAuditResults
Notes
- Processes not allowed with this method
- Releasing by Detail Group ID
- Creating separate sales orders for each quote detail
- Negative quantities
- Security action ‘Release Items From Price Hold’ is read for this method
- If granted, price hold items are automatically approved on the sales order
- If denied, price hold status is copied from the quote to the sales order
- API will fail if sales order value sent in the
AppendSalesOrderID
tag is invoiced or canceled
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
OrderID
come from QuoteList - Valid values for
AppendSalesOrderID
come from SalesOrderList - This method contains a parent/child relationship between the
dtQuoteReleaseItemRequest
anddtQuoteReleaseDimRequest
. Please see the Parent/Child relationship topic for more information.
Version Deployed
v610
QuoteUpdate
Sample Request
{
"request": {
"OrderID": 447,
"QuoteHeaderUpdateJSON": {
"dsQuoteHeaderUpdateRequest": {
"dtQuoteHeaderUpdateRequest": [
{
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"CustomerPO": "",
"ShipVia": "",
"RequestedDeliveryDate": "2024-03-28",
"ActivationDate": "",
"CloseDate": "",
"ExternalSource": "",
"ExternalProjectID": ""
}
]
}
},
"OrderItemUpdateJSON": {
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "BLANK",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Driveway",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": true
},
{
"Sequence": 2,
"TemplateItemCode": "PI-BLANK-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I-Joist",
"NonStockExtDescription": "Flanges - LVL; web - OSB",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800555",
"NonStockSupplierShipFromSequence": 51,
"NonStockSupplierPartNumber": "NonStockXref",
"NonStockProductGroupMajor": "MISC2",
"NonStockProductGroupMinor": "MATRLS2",
"NonStockPriceCodeMajor": "MISC2",
"NonStockPriceCodeMinor": "MATRLS2",
"NonStockCost": 7.11,
"NonStockCostUOM": "EA",
"NonStockSize": "AJS-20",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Den",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 0,
"UOM": "",
"Price": 0,
"PriceUOM": "",
"PriceOverride": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates header information and/or adds new items to an existing quote
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Value Required
- The following inputs require a value due to data type:
Charge
PriceOverride
OrderCost
PrintMsgOnForms
PrintMsgOnFormsOverride
SendMsgToWMS
SendMsgToWMSOverride
Optional Inputs
- All fields in
dtQuoteHeaderUpdateRequest
- Remaining fields in the
dtOrderItemRequest
, ordtOrderItemDimensionRequest
not already referenced
Response
- ReturnCode
MessageText
Notes
- This method allows specific fields on the quote header to be updated
- This method allows new items to be added to an existing quote. Existing items may not be updated or deleted by this method.
- Each new detail must have
OrderQty
> 0 - If
UseItemConvertPriceAndUOM
=true
, the process converts the price and UOM to the order qty UOM if all the following criteria are met:PriceOverride
=false
- Convert price/price UOM to match order field on the item record is set in Agility
- The UOM sent in the
dtOrderItemRequest
does not match the SO/Quote UOM on the item record in Agility
- When ordering by dimension, values for
Thickness
,Width
, and/orLength
are required based on item type. In addition, theOrderQty
andUOM
must also be specified at the dimension level - If the
ShipVia
value sent in is invalid, the entire request fails and no updates are completed - Use the
PartNumber
field if the item being ordered is a customer part number. When populated thePartNumber
is read first before theItemCode
using the following search hierarchy.- Search the item cross reference hierarchy for a match to the
PartNumber
submitted in the request. If a match is found the quote detail item cross reference field is populated with thePartNumber
value. - Search the item cross reference hierarchy for a match to the
ItemCode
submitted in the API request. If a match is found the sales order detail item cross reference field is populated with theItemCode
value. - Search for a valid Agility item code that matches the
ItemCode
submitted in the API request. - Search for a valid Agility item code that matches the
PartNumber
submitted in the API request.
- Search the item cross reference hierarchy for a match to the
- This method allows customer charges and order costs to be added or updated on an existing quote. If either
Charge
=True
orOrderCost
=True
in thedtOrderItemRequest
, then theItemCode
value must correspond to a valid Charge type or Cost type in Agility, and the Price is the amount applied to the quote. All other tags in thedtOrderItemRequest
are ignored.- You can only add or update customer charges and order costs with the record type of header charge, header charge allocated to detail, header charge calculated by item detail, or header cost.
- The customer charge or order cost is added or updated with a fixed amount basis.
- If the
Price
is greater than or equal to 0, then the customer charge or order cost applies as a Charge or Cost, respectively. - If the
Price
is less than 0, then the customer charge or order cost applies as a Refund or Cost Reduction, respectively.
- The ‘Require Template for Non-Stock’ security action will not be read
- If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent item- If any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
- If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true - To update header information only, exclude the
dtOrderItemRequest
anddtOrderItemDimensionRequest
data tables from the request
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
OrderID
come from QuoteList or fromNewOrderID
returned from QuoteCreate - This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see the Parent/Child relationship topic for more information.
Version Deployed
v609; fields added in v610
QuoteUpdateValidate
Sample Request
{
"request": {
"OrderID": 2046,
"QuoteHeaderUpdateJSON": {
"dsQuoteHeaderUpdateRequest": {
"dtQuoteHeaderUpdateRequest": [
{
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"CustomerPO": "",
"ShipVia": "",
"RequestedDeliveryDate": "2024-03-28",
"ActivationDate": "2024-01-01",
"CloseDate": "2024-02-29",
"ExternalSource": "Amazon",
"ExternalProjectID": "AM12345"
}
]
}
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "BLANK",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Driveway",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": true
},
{
"Sequence": 2,
"TemplateItemCode": "PI-BLANK-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I-Joist",
"NonStockExtDescription": "Flanges - LVL",
"NonStockCopyCustomFields": true,
"NonStockSupplierID":"800555",
"NonStockSupplierShipFromSequence":51,
"NonStockSupplierPartNumber":"NonStockXref",
"NonStockProductGroupMajor":"MISC2",
"NonStockProductGroupMinor":"MATRLS2",
"NonStockPriceCodeMajor":"MISC2",
"NonStockPriceCodeMinor":"MATRLS2",
"NonStockCost":7.11,
"NonStockCostUOM":"EA2",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Den",
"AddPermanentDetailGroupID": "false",
"UseGroupAsDefaultNewItems": false
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 0,
"UOM": "",
"Price": 0,
"PriceUOM": "",
"PriceOverride": false
}
]
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtOrderItem",
"AuditRecordIndex": "Sequence: 1, Item code: BLANK, Part number: ",
"AuditText": "Invalid Item of BLANK. (ID# 1141)"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Validates updating header information and/or adding new items to an existing quote
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Value Required
- The following inputs require a value due to data type:
Charge
PriceOverride
OrderCost
PrintMsgOnForms
PrintMsgOnFormsOverride
SendMsgToWMS
SendMsgToWMSOverride
Optional Inputs
- All fields in
dtQuoteHeaderUpdateRequest
- Remaining fields in the
dtOrderItemRequest
, ordtOrderItemDimensionRequest
not already referenced
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Refer to the Notes in the QuoteUpdate method
- Review the
dsAuditResults
to identify changes needed in the request in order for the validation to be successful - The ‘Require Template for Non-Stock’ security action will not be read
- If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent item- If any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
- If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Refer to the relationships section in the QuoteUpdate method
Version Deployed
v609; fields added in v610
SalesOrderACHPayment
Sample Request
{
"request": {
"SalesOrderACHPaymentJSON": {
"dsPayment": {
"dtPayment": [
{
"Type": "Pending",
"BankGuid": "191223333b222ec9a-cab9-c111-b111-e791e100b111",
"dtTransaction": [
{
"TransactionID": 1000000001,
"AmountTendered": 10.00
}
]
},
{
"Type": "Payment",
"BankGuid": "191223333b222ec9a-cab9-c111-b111-a222e211a333",
"dtTransaction": [
{
"TransactionID": 1000000001,
"PaymentID": "12345678901234567890",
"AmountTendered": 15.00
},
{
"TransactionID": 1000000002,
"PaymentID": "12345678901234567890",
"AmountTendered": 20.00
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditText": "Required field missing - BankGuid. (ID# 141)"
},
{
"AuditSequence": 2,
"AuditType": "Failure",
"AuditText": "1000000001 not found. (ID# 2381)"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Creates an ACH payment or an ACH pending payment
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Type
BankGUID
TransactionID
AmountTendered
Optional Inputs
PaymentID
(only valid for Type of "Payment")
Response
- ReturnCode
MessageText
Notes
- You can send both Types at once, or one at a time.
- Type of Pending creates an SO_PENDING_PAYMENT record to be used for processing the ACH payment later at the time of invoicing in Agility when order details have been finalized. When creating a Pending payment type, the system saves the ‘Alternate pay terms code’ from the payment method applied to the ‘Payment terms code’ field in Sales Order Entry.
- Type of Payment applies a deposit to the specified transaction, regardless of how the Ability Payment Method is set to process, and place it on the NACHA file. It will not automatically send the ACH info out to the bank.
- The
BankGUID
input is a system-assigned value that uniquely identifies the Customer Bank record. This is not the bank account. - 0.00
AmountTendered
for Pending Type defaults to order total amount on the sales order. PaymentID
can be provided for the Payment type if you do not wish the value to be system-assigned.- Overpayments always process as a deposit for the Payment type.
- User must have data allocations for the customer assigned to the sales order for which the payment is being applied.
Relationships
ContextId
andBranch
come from LoginBankGUID
comes from CustomerACHBankListTransactionID
comes from SalesOrderList
Version Deployed
v607
SalesOrderCancel
Sample Request
{
"request": {
"SalesOrderID": 300151526,
"OrderCancelJSON": {
"dsOrderCancel": {
"dtOrderCancel": [
{
"ReasonCode": "UE",
"Comment": "User entered in error",
"CancelLinkedTran": true,
"AllowLinkedPrintedTran": true,
"SendS855": false,
"SendS870": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Cancels a specified sales order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
Optional Inputs
- Remaining fields in the
OrderCancelJSON
Response
- ReturnCode
MessageText
Notes
- The following rules apply in order for a sales order to be successfully canceled:
- Header status must either be blank or staged if it has a direct sale type
- Transaction cannot be a shipping sales order
- No printed work orders are linked to any sales order detail items or work order components on a sales order detail item
- No printed remans are linked to any shipping sales order items when the requesting sales order is attempting to be canceled
ReasonCode
corresponds to the Cancel Sales Order Reason Code in AgilityComment
allows you to specify a comment for the Reason CodeCancelLinkedTran
controls whether to cancel the linked transaction to the sales order. If the sales order sale type is direct, then the linked purchase order is canceled regardless of the value in this field. If this field is not included in the request, the system does not cancel the linked transaction.AllowLinkedPrintedTran
controls whether the sales order can be cancelled based on the print status of the linked transaction. If this field is not included in the request, the system does not cancel the linked transaction if any of the linked transactions have been printed.SendS855
allows you to transmit an S855 EDI record on cancelling the sales order which was created from the R855 EDI process. If this field is not included in the request, the system does not send the S855.SendS870
allows you to transmit an S870 EDI record on cancelling the sales order which was created from the R870 EDI process. If this field is not included in the request, the system does not send the S870.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v553
SalesOrderCreate
Sample Request
{
"request": {
"dsOrderHeaderRequest": {
"dtOrderHeaderRequest": [
{
"CustomerID ": "BCH",
"ShipToSequence": 1,
"TransactionReference": "",
"TransactionJob ": "",
"OrderedBy": "API",
"CustomerPurchaseOrder": "",
"CheckPORequiredSettings": false,
"CheckPODuplicateSettings": false,
"AcknowledgementEmailAddress": "",
"AcknowledgementEmailAddress2": "",
"AcknowledgementFaxNumber": "",
"PrePaid": false,
"ShipToName ": "",
"ShipToAddress1": "",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity ": "",
"ShipToState": "",
"ShipToZip": "",
"ShipToCountry": "",
"ShipToPhone": "",
"TaxCode": "",
"SaleType": "WH",
"OrderMessage": "test",
"OrderHold": true,
"ShipVia": "FedEx",
"ShipComplete": false,
"ShipCompleteOverride": false,
"CreateShipment": false,
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": null,
"MiscDate2": null,
"APISourceID": "",
"SalesAgent1": "AGENT1",
"SalesAgent2": "AGENT2",
"SalesAgent3": "",
"SalesAgent4": "",
"SalesAgent5": "",
"SalesAgent6": "",
"SalesAgent1PctOfOrder": "50",
"SalesAgent2PctOfOrder": "25",
"SalesAgent3PctOfOrder": "",
"SalesAgent4PctOfOrder": "",
"SalesAgent5PctOfOrder": "",
"SalesAgent6PctOfOrder": "",
"RouteID": "SATURDAYAM",
"ExpectedDate": "2022-12-31",
"OverrideShippingTrackingData": true,
"ShippingTrackingSignatureReq": true,
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": true,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "Delivery can occur between 0600 - 2400 if the office is staffed during that time",
"FreightTerms": "FOB",
"PaymentTerms": "NET30",
"SourceLogin": ""
}
],
"dtOrderHeaderNotesRequest": [
{
"OrderNote": "Hold order",
"HotNote": true
},
{
"OrderNote": "Must ship on time",
"HotNote": false
}
]
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "1.5FOAM",
"OrderQty": 22,
"UOM": "EACH",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"Sequence": 2,
"ItemCode": "",
"TemplateItemCode": "PI-SL-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I Joist - residential",
"NonStockExtDescription": "Flanges - LVL",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 12.0,
"NonStockCostUOM": "EA",
"OrderQty": 200,
"UOM": "BF",
"Charge": false,
"Price": 0,
"PriceUOM": "BF",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Foundation",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": true
},
{
"Sequence": 3,
"ItemCode": "3068SLAB",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 2,
"Thickness": 2,
"Width": 4,
"Length": 10,
"OrderQty": 30,
"UOM": "PC",
"Price": 0,
"PriceUOM": "0",
"PriceOverride": false
}
]
},
"dsOrderItemComponentRequest": {
"dtOrderItemComponentRequest": [
{
"OrderItemSequence": 3,
"ComponentSequence": 1,
"BomType": "o",
"ItemCode": "ZLH",
"PartNumber": "",
"OrderQty": 1,
"Price": 0,
"PriceOverride": true,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"TallyUOM": "",
"PrintFlag": false,
"SundryCost": 0,
"SundryCostOverride": false,
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"UOM": "",
"ShipLoose": true
}
]
},
"dsTaxAuthorityRequest": {
"dtTaxAuthorityRequest": [
{
"JurisdictionType": "State",
"State": "NE",
"County": "Otoe",
"City": "Cook",
"Description": "CookNE",
"SalesTaxRate": 0.0512
}
]
}
}
}
Sample Response
{
"response": {
"NewOrderID": 321771,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new sales order, which can include BOM parent items with components, with specified tax rates and a specified sale type, as well as a shipment
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShipToSequence
ItemCode
OrderQty
for each detail
Value Required
PrePaid
ShipComplete
ShipCompleteOverride
CreateShipment
Charge
PriceOverride
OrderCost
SendMsgToWMS
SendMsgToWMSOverride
PrintFlag
SundryCostOverride
Optional Inputs
- Remaining fields in the
dtOrderHeaderRequest
,dtOrderHeaderNotesRequest
,dtOrderItemRequest
,dtOrderItemDimensionRequest
,dtOrderItemComponentRequest
not already referenced dtTaxAuthorityRequest
Response
- ReturnCode
MessageText
NewOrderID
Notes
- This method allows parent items and related components to be added to the sales order. When added successfully, a work order is created for the configured parent item.
- At least 1 item or dimension must be sent in.
- Each detail must have an
OrderQty
> 0. - If ordering by dimension, values for
Thickness
,Width
, and/orLength
are required based on item type. In addition, theOrderQty
andUOM
must also be specified at the dimension level. - Use the
PartNumber
field if the item being ordered is a customer part number. When populated thePartNumber
is read first before theItemCode
using the following search hierarchy.- Search the item cross reference hierarchy for a match to the
PartNumber
submitted in the request. If a match is found the sales order detail item cross reference field is populated with thePartNumber
value. - Search the item cross reference hierarchy for a match to the
ItemCode
submitted in the API request. If a match is found, the sales order detail item cross reference field is populated with the ItemCode value. - Search for a valid Agility item code that matches the
ItemCode
submitted in the API request. - Search for a valid Agility item code that matches the
PartNumber
submitted in the API request.
- Search the item cross reference hierarchy for a match to the
- An item must be active in the branch to be able to add the item to the order. If the item is not active, the entire order will fail.
- This method can be used when integrating with a tax provider to push the correct rates and jurisdictions to Agility. The incoming tax jurisdictions are created in Agility if not already present and a new tax code, if not already present, is built and applied to the order.
- If invalid or incomplete inputs are detected in the
dtTaxAuthorityRequest
, the sales order will be created, but the method will return aReturnCode
= 1 and aMessageText
indicating the issue. In this case, the order is marked as taxable, but the tax code will be blank. Blank tax code must be corrected before the order can be invoiced. - If
CreateShipment
= true, the process attempts to create a shipment for the material ordered. If a shipment could not be created, based on Agility rules, the method will return aReturnCode
= 1 and aMessageText
indicating the issue. In this case, the order is still created, but no shipment is created. - This method allows you to save the price from a third-party pricing service when
PriceOverride
= true. The values from theAPIPriceSourceRef
field andAPIPriceSourceType
fields save to the corresponding fields on the sales order and the price history record. The price saves to the Orig price and Price fields on the sales order item detail record. If either theAPIPriceSourceRef
orAPIPriceSourceType
field are blank, the system creates two price history records. The first price history record contains the Agility price. The second price history record contains the overridden price from the incoming file. The Agility price saves to the Orig price. The overridden prices saves to the Price field on the item detail record. WhenPriceOverride
= false, the system uses the price from Agility on the transaction. - If
UseItemConvertPriceAndUOM
= true, the process converts the price and price UOM to the order qty UOM if all the following criteria are met:PriceOverride
= false- Convert price/price UOM to match order field on the item record is set in Agility
- The UOM sent in the
dtOrderItemRequest
does not match the SO/Quote UOM on the item record in Agility
- If the sale type in Agility is set to Auto tag items for direct transfer, all items on the order will be set to fill from the branch populated in the
ShippingBranch
field for the first item sent in the method. If theShippingBranch
field is not sent in the method, the default transfer branch assigned to the first item on the item branch record is used. - If an item is set to fill from BT and the
ShippingBranch
field is not sent in the method, the default transfer branch is assigned to the item branch record. - When a
TemplateItemCode
is populated in thedtOrderItemRequest
, theItemCode
is ignored. The following fields apply to the non-stock item created from theTemplateItemCode
value:NonStockSize
,NonStockDescription
,NonStockExtDescription
,NonStockCopyCustomFields
. Unless theNonStockCopyCustomFields
is set to true the system does not copy custom item fields. - If the SalesAgent tags from the
dtOrderHeaderRequest
is not sent in, the system uses the sales agent specified in the User Profile and then the default from the customer ship-to. - If the
SalesAgentPctOfOrder
tags from thedtOrderHeaderRequest
are sent in with a value of 0, the system uses the default percentages from the SO Parameter. If the SO parameter Default Percentage is not defined, then the system uses the default percentages from the customer ship-to record. - This method allows you to specify shipping tracking information fields when
OverrideShippingTrackingData
=true
. The values from the following shipping tracking fields save to the corresponding fields on the sales order and bypass any customer ship-to defaults:ShippingTrackingInsuranceReq
,ShippingTrackingSignatureReq
,ShippingTrackingSaturdayDelivery
,ShippingTrackingSundayDelivery
,ShippingTrackingDelvInstructions
. - If any of the ship-to address tags are sent in with a value, the system clears out the other ship-to address fields instead of using the default values. For example, if you send in a value in only the
ShipToAddress1
tag, the city and state on the newly created SO will be blank. If you override a ship-to address, you must send in all relevant ship-to address tags. The tags included in the ship-to address fields are as follows:ShipToAddress1
,ShipToAddress2
,ShipToAddress3
,ShipToCity
,ShipToState
,ShipToZip
,ShipToCountry
.- If all ship-to address tags have a value of blank, or none of them are sent in the request, then the system uses the default ship-to address values.
- This method allows customer charges and order costs to be added to the sales order. If either
Charge
= True orOrderCost
= True in thedtOrderItemRequest
, then theItemCode
value must correspond to a valid Charge type or Cost type in Agility, and thePrice
is the amount applied to the order. All other tags in thedtOrderItemRequest
are ignored.- You can only add customer charges and order costs with the record type of header charge, header charge allocated to detail, header charge calculated by item detail, or header cost.
- The customer charge or order cost is added or updated with a fixed amount basis.
- If the
Price
is greater than or equal to 0, then the customer charge or order cost applies as a Charge or Cost, respectively. - If the
Price
is less than 0, then the customer charge or order cost applies as a Refund or Cost Reduction, respectively.
- The ‘Require Template for Non-Stock’ security action will not be read
- If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent item- If any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
- If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true - The
AddPermanentDetailGroupID
tag determines if a permanent detail group record is created for the detail group received in the request
Relationships
- Context ID and
Branch
come from Login - Valid values for
CustomerID
come fromCustomersList
or CustomerShiptoList - Valid values for
ShipToSequence
come fromCustomerShiptosList
- Valid values for
ItemCode
and relatedThickness
,Width
andLength
come from ItemsList or ItemsInChunksList - Valid values for
ShippingBranch
come from BranchList - The
NewOrderID
returned from this method can be used in conjunction with theSearchBy
feature in SalesOrderList to verify the new sales order was created as expected. - This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see the Parent/Child relationships topic for more information. - This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemComponentRequest
. Please see the Parent/Child relationships topic for more information. - There is a many to one relationship between the
dtTaxAuthorityRequest
and thedtOrderHeaderRequest
as the method allows the input of tax rates from various taxing jurisdictions to build the resulting tax code to apply to the order.
Version Deployed
v547, fields added in v552, v553, v555, v600, v602, v610, and v612
SalesOrderCreateValidate
Sample Request
{
"request": {
"dsOrderHeaderRequest": {
"dtOrderHeaderRequest": [
{
"CustomerID ": "BCH",
"ShipToSequence": 1,
"TransactionReference": "",
"TransactionJob ": "",
"OrderedBy": "API",
"CustomerPurchaseOrder": "",
"CheckPORequiredSettings": false,
"CheckPODuplicateSettings": false,
"AcknowledgementEmailAddress": "",
"AcknowledgementEmailAddress2": "",
"AcknowledgementFaxNumber": "",
"PrePaid": false,
"ShipToName ": "",
"ShipToAddress1": "",
"ShipToAddress2": "",
"ShipToAddress3": "",
"ShipToCity ": "",
"ShipToState": "",
"ShipToZip": "",
"ShipToCountry": "",
"ShipToPhone": "",
"TaxCode": "",
"SaleType": "WH",
"OrderMessage": "test",
"OrderHold": true,
"ShipVia": "FedEx",
"ShipComplete": false,
"ShipCompleteOverride": false,
"CreateShipment": false,
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": null,
"MiscDate2": null,
"APISourceID": "",
"SalesAgent1": "AGENT1",
"SalesAgent2": "AGENT2",
"SalesAgent3": "",
"SalesAgent4": "",
"SalesAgent5": "",
"SalesAgent6": "",
"SalesAgent1PctOfOrder": "50",
"SalesAgent2PctOfOrder": "25",
"SalesAgent3PctOfOrder": "",
"SalesAgent4PctOfOrder": "",
"SalesAgent5PctOfOrder": "",
"SalesAgent6PctOfOrder": "",
"RouteID": "SATURDAYAM",
"ExpectedDate": "2022-12-31",
"OverrideShippingTrackingData": true,
"ShippingTrackingSignatureReq": true,
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": true,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "Delivery can occur between 0600 - 2400 if the office is staffed during that time",
"FreightTerms": "FOB",
"PaymentTerms": "NET30",
"SourceLogin": ""
}
],
"dtOrderHeaderNotesRequest": [
{
"OrderNote": "Hold order",
"HotNote": true
},
{
"OrderNote": "Must ship on time",
"HotNote": false
}
]
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "1.5FOAM",
"OrderQty": 22,
"UOM": "EACH",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": ""
},
{
"Sequence": 2,
"ItemCode": "",
"TemplateItemCode": "PI-SL-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I Joist - residential",
"NonStockExtDescription": "Flanges - LVL",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 12.0,
"NonStockCostUOM": "EA",
"OrderQty": 200,
"UOM": "BF",
"Charge": false,
"Price": 0,
"PriceUOM": "BF",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": ""
},
{
"Sequence": 3,
"ItemCode": "3068SLAB",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "EA",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": ""
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 2,
"Thickness": 2,
"Width": 4,
"Length": 10,
"OrderQty": 30,
"UOM": "PC",
"Price": 0,
"PriceUOM": "0",
"PriceOverride": false
}
]
},
"dsOrderItemComponentRequest": {
"dtOrderItemComponentRequest": [
{
"OrderItemSequence": 3,
"ComponentSequence": 1,
"BomType": "o",
"ItemCode": "ZLH",
"PartNumber": "",
"OrderQty": 1,
"Price": 0,
"PriceOverride": true,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"TallyUOM": "",
"PrintFlag": false,
"SundryCost": 0,
"SundryCostOverride": false,
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"UOM": "",
"ShipLoose": true
}
]
},
"dsTaxAuthorityRequest": {
"dtTaxAuthorityRequest": [
{
"JurisdictionType": "State",
"State": "NE",
"County": "Otoe",
"City": "Cook",
"Description": "CookNE",
"SalesTaxRate": 0.0512
}
]
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtOrderHeader",
"AuditRecordIndex": "",
"AuditText": "Invalid Sales agent 1 of MWELL. (ID# 1141)"
},
{
"AuditSequence": 2,
"AuditType": "Failure",
"AuditTable": "dtOrderHeader",
"AuditRecordIndex": "",
"AuditText": "Invalid Sales agent 1 101. (ID# 1141)"
},
{
"AuditSequence": 3,
"AuditType": "Failure",
"AuditTable": "dtOrderItemDimension",
"AuditRecordIndex": "",
"AuditText": ""
},
{
"AuditSequence": 4,
"AuditType": "Failure",
"AuditTable": "dtOrderItemDimension",
"AuditRecordIndex": "",
"AuditText": ""
},
{
"AuditSequence": 5,
"AuditType": "Failure",
"AuditTable": "dtOrderItem",
"AuditRecordIndex": "",
"AuditText": ""
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Validates the creation of a new sales order, which can include BOM parent items with components, specified tax rates and a specified sale type, as well as a shipment
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShipToSequence
ItemCode
OrderQty
for each detail
Value Required
PrePaid
ShipComplete
ShipCompleteOverride
CreateShipment
Charge
PriceOverride
OrderCost
SendMsgToWMS
SendMsgToWMSOverride
PrintFlag
SundryCostOverride
Optional Inputs
- Remaining fields in the
dtOrderHeaderRequest
,dtOrderHeaderNotesRequest
,dtOrderItemRequest
,dtOrderItemDimensionRequest
,dtOrderItemComponentRequest
not already referenced dtTaxAuthorityRequest
Response
- ReturnCode
MessageText
- list of sales orders, including detail lines
Notes
- Refer to the Notes in the
SalesOrderCreate
method. - Review the
dsAuditResults
to identify changes needed in the request in order for the validation to be successful.
Relationships
- Context ID and
Branch
come from Login - Alternate branches come from BranchList
- Refer to the Relationships section in the SalesOrderCreate method.
Version Deployed
v553; new fields added in v555, v600, v602, v610, and v612
SalesOrderDetailsDelete
Sample Request
{
"request": {
"SalesOrderID": 1000339477,
"OrderDetailsDeleteJSON": {
"dsDetailDeleteSettings": {
"dtDetailDeleteSettings": [
{
"UpdateLinkedTran": true,
"UpdateLinkedPrintedTran": true
}
]
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 2
},
{
"Sequence": 6
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes an existing sales order detail record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
Sequence
Optional Inputs
UpdateLinkedTran
UpdateLinkedPrintedTran
Response
- ReturnCode
MessageText
Notes
- The following rules apply in order for a sales order detail to be successfully deleted
- Item cannot have a locked contract price
- Item does not have any quantity that is picked, staged (when the order affects inventory) or invoiced
- Item is staged and does not affect inventory
- Item is not on a shipping sales order
- If item is a BOM parent, the work order status is Not Printed
- Item is not on a sales order with a source of EDI set to creates an in process S870 EDI process.
UpdateLinkedTran
controls whether to cancel the linked transaction (such as a purchase order, work order or reman) to the sales order item. If the item does not affect inventory, then the linked purchase order is canceled regardless of the value in this field. If this field is not included in the request, the system does not cancel the linked transaction.UpdateLinkedPrintedTran
controls whether to cancel the linked transaction to the item when it has been printed. If this field is not included in the request, the system does not cancel the linked transaction if it has been printed.- If the customer does not allow overpayments and an item deletion would cause an overpayment, the system does not allow the item to be deleted.
Relationships
ContextId
andBranch
come from Login- Valid sales order details come from SalesOrderList
Version Deployed
v554
SalesOrderDetailsUpdate
Sample Request
{
"request": {
"SalesOrderID": 1000340097,
"OrderDetailsUpdateJSON": {
"dsDetailUpdateSettings": {
"dtDetailUpdateSettings": [
{
"UpdateLinkedTran": false,
"UpdateLinkedPrintedTran": false
}
]
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"OrderQty": 60,
"UOM": "BF",
"UseItemConvertPriceAndUOM": false,
"DetailGroupID": "Deck",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false,
"dtOrderItemDimensionRequest": [
{
"Sequence": 1,
"Thickness": 2,
"Width": 4,
"Length": 8,
"PieceCount": 0,
"OrderQty": 6,
"UOM": "PC"
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": "",
"AuditResults": {
"dsAuditResults": {}
}
}
}
Purpose
Updates an existing sales order detail record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
Sequence
OrderQty
UOM
Optional Inputs
- Fields within
dtDetailUpdateSettings
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The item being updated must be the following criteria in order to be successfully updated:
- Item is allowed in the API
- Item is not discontinued
- Item is not a template item
- Item is not a credit memo item
- Item is not a BOM parent item
- Item is not a ship loose item
- Item is not partially or fully invoiced
- Item is not partially or fully picked
- Item does not have contractor prices locked
- If item is staged, the sale type on the order does not affect inventory
- If updating a dimension on an item, values for
Thickness
,Width
and/orLength
are required based on the item type. If the existing item has tallies specified, dimension information must be sent in throughdtOrderItemDimensionRequest
. In addition, theOrderQty
andUOM
must be specified at the dimension level. Use thePieceCount
field when theOrderQty
has a value of “UNIT”. Sheet Good item types will require the Width and Length to match existing item. UpdateLinkedTran
controls whether to update the linked transaction (such as a purchase order or reman) to the sales order item. If the item does not affect inventory, then the linked purchase order is updated regardless of the value in this field. If this field is not included in the request, the system does not update the linked transaction.UpdateLinkedPrintedTran
controls whether to update the linked transaction to the item when it has been printed. If this field is not included in the request, the system does not update the linked transaction if it has been printed.- If
UseItemConvertPriceAndUOM
= true, the process converts the price and price UOM to the order qty UOM if all the following criteria are met: - Convert price/price UOM to match order field on the item record is set in Agility
- The UOM sent in the
dtOrderItemRequest
does not match the SO/Quote UOM on the item record in Agility - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - The
AddPermanentDetailGroupID
tag determines if a permanent detail group record is created for the detail group received in the request
Relationships
ContextId
andBranch
come from LoginValid sales order details come from SalesOrderList
Valid values for a sequence’s thickness, width and length come from ItemList or ItemsInChunksList
This method contains a parent/child relationship between the
dtOrderItemRequest
anddtOrderItemDimensionRequest
. Please see Parent/Child relationship topic for more information
Version Deployed
v554; fields added in v600
SalesOrderList
Sample Request
{
"request": {
"SearchBy": "",
"SearchValue": "",
"CustomerID": "123161",
"ShipToSequence": 3,
"OrderDateRangeStart": null,
"OrderDateRangeEnd": null,
"ExpectedDateRangeStart": null,
"ExpectedDateRangeEnd": null,
"FetchOnlyChangedSince": null,
"IncludeOpenOrders": true,
"IncludeInvoicedOrders": false,
"IncludeCanceledOrders": false,
"ChunkStartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"OrdersResponse": {
"dsOrdersResponse": {
"dtOrderResponse": [
{
"BranchID": "WESTONBRANCH",
"OrderID": 272801,
"CustomerID": "123161",
"ShipToSequence": 3,
"OrderedBy": "",
"OrderDate": "2017-08-21",
"ExpectedDate": "2017-08-22",
"OrderStatus": "Open",
"OrderProcessStatus": "",
"CreditHoldStatus": "",
"SaleType": "wh",
"SaleTypeDescription": "Warehouse Order WH",
"TransactionJob": "",
"TransactionReference": "",
"CustomerPO": "",
"RouteID": "",
"ShipVia": "",
"FreightTerms": "",
"PayTermsCode": "LAL1",
"OrderSubtotal": 23.85,
"OrderChargesAmount": 0,
"Taxable": false,
"TaxCode": "",
"OrderTaxAmount": 0,
"OrderTotal": 23.85,
"DiscountAmount": 0.24,
"AfterDeductFreightAmt": 0,
"ShipToName": "SHIP-TO 3",
"ShipToAddress1": "ADDRESS 1",
"ShipToAddress2": "",
"ShipToAddress3": "ADDRESS 3",
"ShipToCity": "LA VISTA",
"ShipToState": "NE",
"ShipToCountry": "USA",
"ShipToZip": "68128",
"ShipToPhone": "(402)-555-1111",
"BillToName": "DAA HARDWARE BILL-TO 1",
"BillToAddress1": "123 A STREET",
"BillToAddress2": "",
"BillToAddress3": "",
"BillToCity": "LA VISTA",
"BillToState": "NE",
"BillToCountry": "USA",
"BillToZip": "68128",
"BillToPhone": "( )- - ",
"SalesAgentID1": "0901",
"SalesAgentName1": "",
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgentID6": "",
"SalesAgentName6": "",
"UpdateDate": "2017-08-21",
"UpdateTime": "11:39:01",
"ContactEmail": "",
"ContactName": "",
"ContactPhone": "",
"ShipComplete": true,
"CostTotal": 3,
"CostType": "Item default",
"TotalWeight": 0,
"TotalLoad": 0,
"dtOrderDetailResponse": [
{
"BranchID": "WESTONBRANCH",
"OrderID": 272801,
"Sequence": 1,
"DisplaySequence": 1,
"LineType": "SO",
"ItemCode": "LL-PAINT",
"ItemSize": "",
"ItemDescription": "",
"TotalOrderedQuantity": 3,
"QuantityUOM": "GAL",
"GrossPrice": 7.95,
"NetPrice": 7.95,
"PriceUOM": "GAL",
"DiscountDescription": "",
"Taxable": true,
"ExtendedPrice": 23.85,
"TotalBackorderedQuantity": 3,
"TotalStagedQuantity": 0,
"TotalUnstagedQuantity": 0,
"TotalInvoicedQuantity": 0,
"LinkedTranType": "PO",
"LinkedTranID": 148517,
"LinkedTranSequence": 1,
"CustomerPOLineNumber": "001",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ExtCost": 3,
"ExtWeight": 0,
"ExtLoad": 0,
"ItemXrefUsedToOrder": "",
"RelatedQuoteBranchID": "CENTRALBRNCH",
"RelatedQuoteID": 300160114,
"RelatedQuoteExternalSource": "AMAZON",
"RelatedQuoteExternalProjectID": "AMZ-8970"
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 2,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of sales orders for a specified customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
Value Required
The following inputs require a value due to data type:
FetchOnlyChangedSince
IncludeOpenOrders
IncludeInvoicedOrders
IncludeCanceledOrders
ChunkStartPointer
RecordFetchLimit
Optional Inputs
SearchBy
SearchValue
ShipToSequence
OrderDateRangeStart
OrderDateRangeEnd
ExpectedDateRangeStart
ExpectedDateRangeEnd
Response
- ReturnCode
MessageText
- list of sale orders, including detail lines
Notes
- This method can return the list of sales orders at a sold-to or ship-to level depending on the value in
ShipToSequence
. Specify 0 as theShipToSequence
to return sales orders for the sold-to - The method allows the user to search for and select items based on
SearchBy
or to request the information for all items. Please see the SearchBy topic for more information - This method allows a user to request a specific number of records. Please see the Chunking topic for more information
- Because the number of records to be returned based on the search criteria could be large, DMSi recommends using the chunking feature, especially when requesting the list at a sold-to level
- A value of <all> can be specified in
CustomerID
- A value must also be specified in
SearchBy
andSearchValue
- Specify 0 as the
ShipToSequence
- A value must also be specified in
- Valid values for
CustomerID
come fromCustomersList
or CustomerShiptoList - Valid values for
ShipToSequence
come from CustomerShiptoList - Valid values for
SearchBy
are Order ID, Quote ID, Job #, Reference #, and Customer PO - While this method can be called for any known valid sales order id, the
SearchBy
andSearchValue
inputs allow the method to return a specific sales order - The
ItemXrefUsedToOrder
displays the item cross reference field from the Sales order detail.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- This method has a Parent/Child relationship between
dtOrder
anddtOrderDetail
throughOrderID
. This can be a one to many relationship
Version Deployed
v539; ExpectedDateRange
fields added v549; "Quote ID" Search by option added v610; RelatedQuoteID
, RelatedQuoteExternalSource
, and RelatedExternalProjectID
tags added to the response in v610
SalesOrderMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 12345,
"ShipmentNum": "0",
"TranSeq": "1",
"MessageText": "Message Text Here",
"MessageType": "H",
"PrintOnForms": "true",
"SendToWMS": "false"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a sales order transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
SendToWMS
ShipmentNum
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
SalesOrderPayment
Sample Request
{
"request": {
"SalesOrderPaymentJSON": {
"dsPayment": {
"dtPayment": [
{
"Type": "Pending",
"PaymentAccountID": "6B0F870C-1B98-41E4-A023-339620538660",
"AllowTokenDelete": "No",
"dtTransaction": [
{
"TransactionID": 1000332221,
"AmountTendered": 0.0
}
]
},
{
"Type": "Payment",
"ProcessorTransactionID": "89852081",
"dtTransaction": [
{
"TransactionID": 1000332221
}
]
},
{
"Type": "TokenPayment",
"PaymentAccountID": "00b03696-0248-4a31-ab07-6e0b8c68c822",
"dtTransaction": [
{
"TransactionID": 1000332221,
"AmountTendered": 25.25
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Sends credit card authorization and/or payment information to Agility to store alongside the order upon Sales Order creation via an Agility customer’s eCommerce site
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
Type
PaymentAccountID
(Pending and TokenPayment Type)ProcessorTransactionID
(Payment Type)TransactionID
AmountTendered
(Pending and TokenPayment Type)
Optional Inputs
AllowTokenDelete
Response
- ReturnCode
MessageText
Notes
- Access to the Credit Card Interface must be granted to use this request.
- You can send all three Types at once or one at a time
- Type of Pending stores a token to be used for processing the credit card later at the time of invoicing in Agility when order details have been finalized. When creating a Pending payment type, the system saves the ‘Alternate pay terms code’ from the payment method applied to the ‘Payment terms code’ field in Sales Order Entry
- Type of Payment includes any credit card payment information that was processed at the time of order creation via the eCommerce platform so that the credit card payment details are reflected in Agility
ProcessorTransactionID
is theTransactionID
received from the WorldPay for the payment processed via the eCommerce platform- TokenPayment Type is processed immediately in Agility using the provided token so that the credit card payment details are sent and received via Agility
AllowTokenDelete
will not delete the token from WorldPay once a pending payment is closed and can be used on multiple Sales Orders if set to No. This option is used when it’s a saved card on the eCommerce platformAllowTokenDelete
defaults to No for Pending Type when not included- 0.00
AmountTendered
for Pending Type defaults to order total amount on the sales order - Overpayments always process as a deposit on order for Payment and
TokenPayment
Type - User must have data allocations granted for the customer assigned to the sales order for which the payment is being applied
Relationships
ContextId
andBranch
come from LoginTransactionID
comes from SalesOrderList
Version Deployed
v551
SalesOrderPaymentRecord
Sample Request
{
"request": {
"TransactionID": "1000365111",
"SalesOrderPaymentRecordJSON": {
"dsSalesOrderPayment": {
"dtSalesOrderPayment": [
{
"PaymentMethod": "DISCOVER",
"PaymentID": "0214230001",
"AmountTendered": 1000.0
},
{
"PaymentMethod": "Cash",
"PaymentID": "",
"AmountTendered": 250.0
}
]
}
}
}
}
Sample Response
{
"response": {
"SalesOrderPaymentRecordJSONResponse": {
"dsSalesOrderPaymentResponse": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Send sales order payment information received and processed by an outside source to Agility
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TransactionID
PaymentMethod
AmountTendered
Optional Inputs
PaymentID
Response
- ReturnCode
MessageText
Notes
TransactionID
is a valid Agility sales order transaction number- The Agility sales order cannot be invoiced or cancelled
PaymentMethod
is a valid Agility Payment Method code- An Agility Payment Method code with a ‘Type’ of ‘Reward’ is invalid for the API
AmountTendered
must be > zeroPaymentID
is required in the API when the Agility Payment Method is set to require either an Authorization # or Check #- Regardless if set as required on the Agility Payment Method, driver’s license #, credit card #, and expiration date fields are not processed by the method
- Multiple payments can be received for a single sales order transaction
- Payments (including overpayments) are applied as Deposit on order for the transaction, regardless of how the Agility Payment Method is set to process
- The payment will be posted to G/L based on the Use branch cash account for POS setting on the Agility Payment Method
- The user running the method must have Data Allocations granted for the applicable customers.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
TransactionID
comes fromSalesOrderList
or returned inSalesOrderCreate
response
Version Deployed
v603
SalesOrderPriceHoldApprove
Sample Request
{
"request": {
"OrderID": 1000328293,
"SalesOrderDetailApproveJSON": {
"dsSalesOrderDetail": {
"dtSalesOrderDetail": [
{
"Sequence": 1,
"SendNotification": "YES",
"ReviewerID": "PRCAPP01",
"Comment": "above floor"
},
{ "Sequence": 2, "SendNotification": "NO" }
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Removes sales order items from price hold; approve items on price hold based on the OrderID and detail line item Sequence
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Sequence
Optional Inputs
SendNotification
ReviewerID
Comment
Response
- ReturnCode
MessageText
Notes
- To get the list of valid Sequences available for updating, use
SalesOrderList
to see theSequence
values used and whichItemCode
each is tied to. DMSi recommends carefully choosing theSequence
to update by reviewing related data for eachSequence
detail as anItemCode
can exist multiple times on a Sales Order, including individual entries for dimensions - A Price Hold Approval/Rejection Notification must be defined in Agility to send a notification
Comment
andReviewerID
are populated on the notification • When theReviewerID
value matches a User ID in Agility, the Reviewer User Name on the notification is populated with the User Name value from the user record • If theReviewerID
value does not match a User ID in Agility, the Reviewer User Name on the notification is blank
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
OrderID
come from SalesOrderList
Version Deployed
v550
SalesOrderPriceHoldReject
Sample Request
{
"request": {
"OrderID": 1000328312,
"SalesOrderDetailRejectJSON": {
"dsSalesOrderDetail": {
"dtSalesOrderDetail": [
{
"Sequence": 2,
"SuggestedPrice": 2.2,
"SuggestedPriceUOM": "GAL",
"SendNotification": "YES",
"ReviewerID": "PRCREJ01",
"Comment": "below floor"
},
{
"Sequence": 1,
"SuggestedPrice": 1.1,
"SuggestedPriceUOM": "EA",
"SendNotification": "YES",
"ReviewerID": "PRCREJ01",
"Comment": "below floor"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Denies removal of sales order items from price hold based on the OrderID and detail line item Sequence and sends a suggested price for approval
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Sequence
Optional Inputs
SendNotification
ReviewerID
Comment
SuggestedPrice
SuggestedPriceUOM
Response
- ReturnCode
MessageText
Notes
- To get the list of valid Sequences available for updating, use
SalesOrderList
to see theSequence
values used and whichItemCode
each is tied to. DMSi recommends carefully choosing theSequence
to update by reviewing related data for eachSequence
detail as anItemCode
can exist multiple times on a Sales Order, including individual entries for dimensions - Include a
SuggestedPrice
that would allow approval of the item - A Price Hold Approval/Rejection Notification must be defined in Agility to send a notification
- Comment and
ReviewerID
are populated on the notification • When theReviewerID
value matches a User ID in Agility, the Reviewer User Name on the notification is populated with the User Name value from the user record • If theReviewerID
value does not match a User ID in Agility, the Reviewer User Name on the notification is blank
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
OrderID
come from SalesOrderList
Version Deployed
v550
SalesOrderUpdate
Sample Request
{
"request": {
"OrderID": 447,
"OrderHeaderUpdateJSON": {
"dsOrderHeaderUpdateRequest": {
"dtOrderHeaderUpdateRequest": [
{
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"CustomerPurchaseOrder": "",
"ShipVia": "",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": null,
"MiscDate2": null,
"SalesAgent1": "AGENT4",
"SalesAgent2": "AGENT6",
"SalesAgent3": "",
"SalesAgent4": "",
"SalesAgent5": "",
"SalesAgent6": "",
"SalesAgent1PctOfOrder": 50,
"SalesAgent2PctOfOrder": 5,
"SalesAgent3PctOfOrder": 0,
"SalesAgent4PctOfOrder": 0,
"SalesAgent5PctOfOrder": 0,
"SalesAgent6PctOfOrder": 0
}
]
}
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "BLANK",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Deck",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"Sequence": 2,
"TemplateItemCode": "PI-BLANK-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I-Joist",
"NonStockExtDescription": "Flanges - LVL; web - OSB ",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 12.0,
"NonStockCostUOM": "EA",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"UseItemConvertPriceAndUOM": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": "",
"DetailGroupID": "Deck",
"AddPermanentDetailGroupID": false,
"UseGroupAsDefaultNewItems": false
},
{
"ItemCode": "Freight Charge",
"Charge": true,
"Price": 50
},
{
"ItemCode": "Freight Cost",
"OrderCost": true,
"Price": 50
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 0,
"UOM": "",
"Price": 0,
"PriceUOM": "",
"PriceOverride": false
}
]
},
"dsOrderItemComponentRequest": {
"dtOrderItemComponentRequest": [
{
"OrderItemSequence": 0,
"ComponentSequence": 0,
"BomType": "",
"ItemCode": "",
"PartNumber": "",
"OrderQty": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"TallyUOM": "",
"PrintFlag": false,
"SundryCost": 0,
"SundryCostOverride": false,
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"UOM": "",
"ShipLoose": true
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates header information and/or adds new items to an existing sales order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Value Required
The following inputs require a value due to data type:
Charge
PriceOverride
OrderCost
PrintMsgOnForms
PrintMsgOnFormsOverride
SendMsgToWMS
SendMsgToWMSOverride
PrintFlag
SundryCost
SundryCostOverride
Optional Inputs
- All fields in
dtOrderHeaderUpdateRequest
- Remaining fields in
dtOrderItemRequest
,dtOrderItemDimensionRequest
,dtOrderItemComponentRequest
not already referenced
Response
- ReturnCode
MessageText
Notes
- This method allows specific fields on the sales order header to be updated
- This method allows new items to be added to an existing sales order, including parent items with components work order is created for the configured parent item and non-stock items. Existing items may not be updated or deleted by this method
- Each new detail must have
OrderQty
> 0 - If
UseItemConvertPriceAndUOM
= true, the process converts the price and price UOM to the order qty UOM if all the following criteria are met: PriceOverride
= false- Convert price/price UOM to match order field on the item record is set in Agility
- The UOM sent in the
dtOrderItemRequest
does not match the SO/Quote UOM on the item record in Agility - When ordering by dimension, values for
Thickness
,Width
, and/orLength
are required based on item type. In addition, theOrderQty
andUOM
must also be specified at the dimension level - When ordering a parent item with components,
OrderItemSequence
,ComponentSequence
,ItemCode
, andOrderQty
are required indtOrderItemComponentRequest
- If the
ShipVia
value sent in is invalid, the entire request fails and no updates are completed - When a
TemplateItemCode
is populated in thedtOrderItemRequest
, theItemCode
is ignored. The following fields apply to the non-stock item created from theTemplateItemCode
value:NonStockSize
,NonStockDescription
,NonStockExtDescription
,NonStockCopyCustomFields
. Unless theNonStockCopyCustomFields
is set to true the system does not copy custom item fields. - If the
SalesAgent
tags from thedtOrderHeaderRequest
is not sent in, no update is made to the sales agent information on the order. - If the
SalesAgentPctOfOrder
tags from thedtOrderHeaderRequest
are sent in with a value of 0, No update is made to the sales agent information on the order. If anySalesAgentPctOfOrder
tags are sent in with a valid value, all other sales agent percentages will be cleared. - Use the
PartNumber
field if the item being ordered is a customer part number. When populated the PartNumber is read first before theItemCode
using the following search hierarchy.- Search the item cross reference hierarchy for a match to the
PartNumber
submitted in the request. If a match is found the sales order detail item cross reference field is populated with thePartNumber
value. - Search the item cross reference hierarchy for a match to the
ItemCode
submitted in the API request. If a match is found the sales order detail item cross reference field is populated with theItemCode
value. - Search for a valid Agility item code that matches the
ItemCode
submitted in the API request. - Search for a valid Agility item code that matches the
PartNumber
submitted in the API request.
- Search the item cross reference hierarchy for a match to the
- This method allows customer charges and order costs to be added or updated on an existing sales order. If either
Charge
= True orOrderCost
= True in thedtOrderItemRequest
, then theItemCode
value must correspond to a valid Charge type or Cost type in Agility, and thePrice
is the amount applied to the order. All other tags in thedtOrderItemRequest
are ignored.- You can only add or update customer charges and order costs with the record type of header charge, header charge allocated to detail, header charge calculated by item detail, or header cost.
- The customer charge or order cost is added or updated with a fixed amount basis.
- If the
Price
is greater than or equal to 0, then the customer charge or order cost applies as a Charge or Cost, respectively. - If the
Price
is less than 0, then the customer charge or order cost applies as a Refund or Cost Reduction, respectively.
- The ‘Require Template for Non-Stock’ security action will not be read
- If a value is sent in both the
ItemCode
andTemplateItemCode
tagsItemCode
value will not be readTemplateItemCode
value will be read and used to create a non-stock item
TemplateItemCode
value must be active, saleable, no order restrictions, and not a BOM parent item- If any of the following tags are not sent or sent with a blank value, values assigned to the
TemplateItemCode
sent in the API will be used when creating the non-stock itemNonStockSize
NonStockDescription
NonStockExtDescription
NonStockProductGroupMajor
NonStockProductGroupMinor
NonStockPriceCodeMajor
NonStockPriceCodeMinor
NonStockCost
NonStockCostUOM
- If a value is sent for the
NonStockProductGroupMajor
tag, then a value must also be sent for theNonStockProductGroupMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockPriceCodeMajor
tag, then a value must also be sent for theNonStockPriceCodeMinor
tag; the reciprocal is also true - If a value is sent for the
NonStockCost
tag, then a value must also be sent for theNonStockCostUOM
tag; the reciprocal is also true - The
AddPermanentDetailGroupID
tag determines if a permanent detail group record is created for the detail group received in the request - To update header information only, exclude the
dtOrderItemRequest
anddtOrderItemDimensionRequest
data tables from the request
Relationships
ContextId
comes from Login- Alternate branches come from BranchList
- Valid values for
OrderID
come from SalesOrderList or fromNewOrderID
returned from SalesOrderCreate - This method contains a parent/child relationship between
dtOrderItemRequest
anddtOrderitemDimensionRequest
. Please see the Parent/Child Relationships topic for more information
Version Deployed
v550; new fields in added v553, v600, v610, and v612
SalesOrderUpdateValidate
Sample Request
{
"request": {
"OrderID": 2046,
"OrderHeaderUpdateJSON": {
"dsOrderHeaderUpdateRequest": {
"dtOrderHeaderUpdateRequest": [
{
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"CustomerPurchaseOrder": "",
"ShipVia": "",
"MiscField1": "",
"MiscField2": "",
"MiscField3": "",
"MiscField4": "",
"MiscField5": "",
"MiscField6": "",
"MiscField7": "",
"MiscField8": "",
"MiscField9": "",
"MiscField10": "",
"MiscField11": "",
"MiscField12": "",
"MiscDate1": null,
"MiscDate2": null,
"SalesAgent1": "AGENT4",
"SalesAgent2": "AGENT6",
"SalesAgent3": "",
"SalesAgent4": "",
"SalesAgent5": "",
"SalesAgent6": "",
"SalesAgent1PctOfOrder": 50,
"SalesAgent2PctOfOrder": 5,
"SalesAgent3PctOfOrder": 0,
"SalesAgent4PctOfOrder": 0,
"SalesAgent5PctOfOrder": 0,
"SalesAgent6PctOfOrder": 0
}
]
}
},
"dsOrderItemRequest": {
"dtOrderItemRequest": [
{
"Sequence": 1,
"ItemCode": "BLANK",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": ""
},
{
"Sequence": 2,
"TemplateItemCode": "PI-BLANK-A100",
"NonStockSize": "AJS-20",
"NonStockDescription": "I-Joist",
"NonStockExtDescription": "Flanges - LVL",
"NonStockCopyCustomFields": true,
"NonStockSupplierID": "800",
"NonStockSupplierShipFromSequence": 1,
"NonStockSupplierPartNumber": "",
"NonStockProductGroupMajor": "112",
"NonStockProductGroupMinor": "25",
"NonStockPriceCodeMajor": "112",
"NonStockPriceCodeMinor": "10",
"NonStockCost": 12.0,
"NonStockCostUOM": "EA",
"OrderQty": 1,
"UOM": "EA",
"Charge": false,
"Price": 0,
"PriceUOM": "",
"PriceOverride": false,
"OrderCost": false,
"CustomerPOLineNumber": "",
"DepartmentName": "",
"DepartmentNumber": "",
"PartNumber": "",
"SKU": "",
"UPCCode": "",
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"SendMsgToWMS": false,
"SendMsgToWMSOverride": false,
"APIPriceSourceType": "",
"APIPriceSourceRef": ""
}
],
"dtOrderItemDimensionRequest": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"OrderQty": 0,
"UOM": "",
"Price": 0,
"PriceUOM": "",
"PriceOverride": false
}
]
},
"dsOrderItemComponentRequest": {
"dtOrderItemComponentRequest": [
{
"OrderItemSequence": 0,
"ComponentSequence": 0,
"BomType": "",
"ItemCode": "",
"PartNumber": "",
"OrderQty": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"TallyUOM": "",
"PrintFlag": false,
"SundryCost": 0,
"SundryCostOverride": false,
"ItemMessage": "",
"PrintMsgOnForms": false,
"PrintMsgOnFormsOverride": false,
"UOM": "",
"ShipLoose": true
}
]
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtOrderItem",
"AuditRecordIndex": "Sequence: 1, Item code: BLANK, Part number: ",
"AuditText": "Invalid Item of BLANK. (ID# 1141)"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures"
}
}
Purpose
Validates updating header information and/or adds new items to an existing sales order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Value Required
The following inputs require a value due to data type:
Charge
PriceOverride
OrderCost
PrintMsgOnForms
PrintMsgOnFormsOverride
SendMsgToWMS
SendMsgToWMSOverride
PrintFlag
SundryCost
SundryCostOverride
Optional Inputs
- All fields in
dtOrderHeaderUpdateRequest
; remaining fields indtOrderItemRequest
,dtOrderItemDimensionRequest
,dtOrderItemComponentRequest
not already referenced
Response
- ReturnCode
MessageText
NewOrderID
dsAuditResults
Notes
- Refer to the Notes in the SalesOrderUpdate method.
- Review the
dsAuditResults
to identify changes needed in the request in order for the validation to be successful.
Relationships
ContextId
comes from Login- Alternate branches come from BranchList
- Refer to the Relationships section in the SalesOrderUpdate method
Version Deployed
v553; fields added in v610 and v612
WorkOrderMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 1000199200,
"TranSeq": 2,
"MessageText": "Message Text Here",
"MessageType": "Detail",
"PrintOnForms": true
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a sales order work order item message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transactions messages)
Optional Inputs
PrintOnForms
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, F, Footer, D, and Detail - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
AgilityPublic/Pricing Service
This AgilityPublic service contains methods relating to pricing.
ApprovedItemsCustomerPricingInChunksList
Sample Request
{
"request": {
"CustomerPricingRequestJSON": {
"dsCustomerPricingRequest": {
"dtCustomerPricingRequest": [
{
"CustomerID": "har01",
"ShipToSequence": 1,
"SaleType": "WH",
"SearchBy": "item code",
"SearchValue": "62122",
"ItemGroupMajor": "pool",
"ItemGroupMinor": "heater",
"IncludeNonStock": true,
"IncludeNonSaleable": true,
"RecordFetchLimit": 10,
"ChunkStartPointer": 0,
"UseOrderRestrictions": true
}
]
}
}
}
}
Sample Response
{
"response": {
"CustomerPricingResponse": {
"dsApprvdItemCustPricingResponse": {
"dtApprvdItemPriceAndQtyResponse": [
{
"ItemCode": "62122-A",
"ItemXref": "62122-AX",
"ItemSize": "",
"DimensionSize": "",
"ItemDescription": "",
"ExtendedDescription": "",
"Thickness": 0,
"ThicknessUOM": "",
"Width": 0,
"WidthUOM": "",
"Length": 0,
"LengthUOM": "",
"ItemGroupMajor": "MAJA",
"ItemGroupMinor": "MINQ",
"MinPackQty": 0,
"MinPackType": null,
"Nonsaleable": false,
"Stock": true,
"ItemType": "",
"ItemTypeName": "",
"ImageUrl": "",
"UOM": "EA",
"OnHandQty": 500,
"AvailableQty": 500,
"PriceUOM": "EA",
"GrossPrice": 4,
"PriceUOMGrossPrice": 4,
"NetPrice": 4,
"PriceUOMNetPrice": 4,
"DiscountDescription": "",
"QuickList": "",
"RankValue": 0,
"Dimension": "",
"SpecialItemType": "",
"Promo": false,
"DefaultWeight": 1,
"DefaultWeightUOM": "EA",
"DefaultLoad": 1,
"DefaultLoadUOM": "EA",
"PrimarySupplierWeight": 0,
"PrimarySupplierWeightUOM": "",
"PrimarySupplierLoad": 0,
"PrimarySupplierLoadUOM": "",
"Cost": 0,
"CostDesignator": "",
"GrossMarginPercent": 0,
"GrossMarginAmount": 0,
"MaxProductionUnits": 0,
"Discontinued": "No",
"HazardousMaterial": false,
"BOLCode": "",
"MSDS": "",
"PrimarySupplierID": "",
"OnOrderQty": 0,
"ReturnQty": 0,
"BackorderedQty": 0,
"CommittedQty": 0,
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": ""
}
]
}
},
"NextChunkStartPointer": 1,
"MoreResultsAvailable": true,
"TotalRowsFetched": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns item specific information as well as the most specific price for the customer and ship-to specified for a group of items approved for sale to the specified customer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
RecordFetchLimit
Optional Inputs
ShipToSequence
SaleType
SearchBy
SearchValue
ItemGroupMajor
ItemGroupMinor
IncludeNonStock
IncludeNonSaleable
ChunkStartPointer
UseOrderRestrictions
Response
- ReturnCode
MessageText
MoreResultsAvailable
TotalRowsFetched
- List of items with details and the specific price information based on the customer and ship-to and other input values
Notes
- The method allows the user to search for and select items based on
ItemGroupMajor
,ItemGroupMajor
andItemGroupMinor
combination,SearchBy
or to request the information for all items based on the customer/ship-to and other input values - Valid
SearchBy
options are Item Code, Size, Description, Ext. Description Contains, and Keyword Search. - The
UseOrderRestrictions
field in the API request controls if items with a qualifying order restriction record defined in the Agility Transaction Criteria window are included in the list of items retrieved in the response.- If the field is not included in the request the system default is to exclude items with qualifying order restrictions from being returned in the response.
- When the
IncludeNonStock
field is excluded from the API request, the system excludes items with theStock
field unset in Item Maintenance. - When the
IncludeNonSaleable
field is excluded from the API request, the system excludes with the Non-saleable field set in Item Maintenance. - This method allows a user to set a
RecordFetchLimit
in the request. The number ofTotalRowsFetched
returned in the response is the number of unique items returned. For dimension type items it does not include dimension records in this count. Therefore, when processing includes dimension type records, consideration should be given when setting theRecordFetchLimit
as processing time will be affected. Please see the Data chunking topic for more information. - The method returns item information in the Display UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply.
- The system includes quantities for alternate items assigned to component items when calculating the
MaxProductionUnits
value for a BOM Parent item when all of the following conditions are met:- Branch Parameter Include alternates when calculating maximum production units on the Inventory tab is set.
- If the alternate item has the Applies to work orders from sales orders option set and the Auto order option is set to ‘Auto order at work order entry’ in Alternates Maintenance.
- If the Stocking UOM on the component item and alternate item are not the same, there must be a UOM conversion setup on the alternate item to get back to the stocking UOM on the component item.
- If the component is a dimension type item, the alternate item must be setup for the overall 00x00x00 record
Relationships
ContextId
andBranch
come from Login- Valid values for
ItemGroupMajor
come from ItemGroupMajorList or ItemGroupMinorList - Valid values for
ItemGroupMinor
come from ItemGroupMinorList. - Valid values for
SaleType
come from SaleTypesList
Version Deployed
v600
ItemCustomerPricingList
Sample Request
{
"request": {
"CustomerID": "123161",
"ShipToSequence": 1,
"SaleType": "WH",
"SearchBy": "",
"SearchValue": "LL-PAINT",
"ItemGroupMajor": "",
"ItemGroupMinor": "",
"IncludeNonStock": true,
"IncludeNonSaleable": true,
"RecordFetchLimit": 0
}
}
Sample Response
{
"response": {
"dsCustomerPricingResponse": {
"dsItemCustomerPricingResponse": {
"dtItemPriceAndQtyResponse": [
{
"ItemCode": "LL-PAINT",
"ItemXref": "",
"ItemSize": "SIZE",
"DimensionSize": "",
"ItemDescription": "DESCRIPTION",
"ExtendedDescription": "EXT DESC",
"Thickness": 0,
"ThicknessUOM": "",
"Width": 0,
"WidthUOM": "",
"Length": 0,
"LengthUOM": "",
"ItemGroupMajor": "PANT",
"ItemGroupMinor": "IVORY",
"MinPackQty": 0,
"MinPackType": "Allow - Question",
"Nonsaleable": false,
"Stock": true,
"ItemType": "",
"ItemTypeName": "",
"ImageUrl": "",
"UOM": "GAL",
"OnHandQty": 91560,
"AvailableQty": 90041,
"PriceUOM": "GAL",
"GrossPrice": 7.95,
"PriceUOMGrossPrice": 7.95,
"NetPrice": 7.95,
"PriceUOMNetPrice": 7.95,
"DiscountDescription": "",
"QuickList": "",
"RankValue": 0,
"Dimension": "",
"SpecialItemType": "",
"Promo": false,
"DefaultWeight": 0.0001,
"DefaultWeightUOM": "GAL",
"DefaultLoad": 0.0001,
"DefaultLoadUOM": "GAL",
"PrimarySupplierWeight": 0.0001,
"PrimarySupplierWeightUOM": "GAL",
"PrimarySupplierLoad": 0.0001,
"PrimarySupplierLoadUOM": "GAL"
}
]
}
},
"MoreResultsAvailable": false,
"TotalRowsFetched": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns item related information as well as the most specific price for the customer and ship-to specified for a group of items
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
IncludeNonStock
IncludeNonsaleable
RecordFetchLimit
Optional Inputs
SaleType
SearchBy
SearchValue
ItemGroupMajor
ItemGroupMinor
Response
- ReturnCode
MessageText
MoreResultsAvailable
TotalRowsFetched
- list of items with details and the specific price information based on the customer and ship-to specified
Notes
- The method allows the user to search for and select items based on
ItemGroupMajor
,ItemGroupMajor
andItemGroupMinor
combination,SearchBy
or to request the information for all items in sets.
ValidSearchBy
options are Item Code, Size, Description, Ext. Description Contains, and Keyword Search - This method allows a user to request a specific number of records. Please see the Data chunking topic for more information
- The method returns item information in the Display UOM defined on the item record, with the following exceptions:
- For the main item record of dimension type items where the display UOM is set to the piece reference UOM, the system returns item information in the stocking UOM, since the piece reference is invalid for the main item record.
- For sheet good and specific length lumber items with a display UOM of UNIT, the system returns item information in the stocking UOM, since various piece counts may apply
Relationships
ContextId
andBranch
come from Login- Valid values for
ItemGroupMajor
come from ItemGroupMajorList or ItemGroupMinorList - Valid values for
ItemGroupMinor
come from ItemGroupMinorList. - Valid values for
SaleType
come from SaleTypesList
Version Deployed
v543
PriceInfoList
Sample Request
{
"request": {
"CustomerID": "12345",
"ShiptoSequence": 14,
"SaleType": "WH",
"PriceTypeOption": "",
"dsItemToProcessRequest": {
"dtItemToProcessRequest": [
{
"ItemCode": "118835",
"OrderQty": 100,
"UOM": "EA"
},
{
"ItemCode": "118835RANDOM",
"OrderQty": 100,
"UOM": "BF"
}
],
"dtItemDimensionToProcessRequest": [
{
"ItemCode": "118835RANDOM",
"Thickness": 2,
"Width": 6,
"Length": 8,
"OrderQty": 10,
"UOM": "PC"
}
]
}
}
}
Sample Response
{
"response": {
"GetPricingResponse": {
"dsPriceInfoResponse": {
"dtPriceInfoResponse": [
{
"ItemCode": "118835RANDOM",
"Thickness": 2,
"Width": 6,
"Length": 8,
"SaleType": "<all>",
"PriceType": "Qty Break 0 BF",
"Dimensions": "00X00X00",
"PriceUOMGrossPrice": 123,
"PriceUOMNetPrice": 123,
"PriceUOM": "BF",
"DiscountQty": 0,
"DiscountDescription": "",
"DiscountUOM": "BF",
"DateRange": "Open - Open",
"Promo": false,
"BOMComponentPrice": "",
"QtyBreakQty": 10,
"QtyBreakUOM": "BF"
},
{
"ItemCode": "LL-NAILS",
"Thickness": 0,
"Width": 0,
"Length": 0,
"SaleType": "<all>",
"PriceType": "Level 1, Qty Break 0 EA",
"Dimensions": "",
"PriceUOMGrossPrice": 2.5,
"PriceUOMNetPrice": 2.5,
"PriceUOM": "EA",
"DiscountQty": 0,
"DiscountDescription": "",
"DiscountUOM": "EA",
"DateRange": "Open - Open",
"Promo": false,
"BOMComponentPrice": "",
"QtyBreakQty": 0,
"QtyBreakUOM": ""
}
]
}
},
"ItemAuditResults": {
"dsItemAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns all pricing and discount records from the specified level in the hierarchy for the customer and items/dimensions specified
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
CustomerID
ShiptoSequence
ItemCode
for each record in the set of items to process
Optional Inputs
PriceTypeOption
SaleType
OrderQty
UOM
in set of items to process; all fields in the set of dimensions to process
Response
- ReturnCode
MessageText
ItemAuditResults
MoreResultsAvailable
TotalRowsFetched
- list of items with details and the specific price information based on the customer and ship-to specified
Notes
- Valid values for
PriceTypeOption
are All, All Comb, Customer Pricing Comb, Customer Pricing, Standard Pricing Comb, Standard Pricing, Most Specific Comb, Most Specific, Special Pricing Comb and Special Pricing- Options that include Comb in the name return the net price as the gross price less any applicable discounts and do not return the discount records as separate records
- Options that do not include Comb in the name return any applicable discount records as separate records and only return net price as 0 to indicate the net price was not calculated
- When requesting for a dimensional item without specifying a dimension, the pricing records for the item and all dimensions are returned. When requesting for a dimensional item and specifying the dimension, the pricing records for that specific dimension only are returned. The values in
Thickness
,Width
andLength
returned identify which dimension the request was made for - When including a
SaleType
, only price records that apply to thatSaleType
(or the <all>SaleType
) are returned - DMSi strongly recommends reviewing the
ItemAuditResults
regardless of theReturnCode
value - The
PriceInfoList
method returns price record information in the Pricing UOM defined on the price record- For the main item record of dimension type items where the price UOM is set to the piece reference UOM, the method returns item information in the pricing UOM, since the piece reference is invalid for the main item record.
- The
PriceInfoList
method returns a blankQtyBreakUOM
when the pricing or discount record returned is Fixed for the Pricing Group or Customer
Relationships
- Context ID and
Branch
come from Login - Valid values for
ItemCode
come from ItemsList or ItemsInChunksList. Additionally, theThickness
,Width
andLength
values also come from ItemsList or ItemsInChunksList for applicable item - Valid values for
CustomerID
come from CustomersList or CustomerShiptosList - Valid values for
ShipToSequence
come from CustomerShiptosList - Valid values for
SaleType
come from SaleTypesList
Version Deployed
v544; updated with ItemAuditResults
in v553; updated with QtyBreakQty
and QtyBreakUOM
in v556
AgilityPublic/Purchasing Service
This AgilityPublic service contains methods related to purchasing and receiving.
PurchaseOrderCostPacketsDelete
Sample Request
{
"request": {
"PurchaseOrderID": 158553,
"PurchaseOrderCostPacketsDeleteJSON": {
"dsPurchaseOrderCostPacket": {
"dtPurchaseOrderCostPacket": [
{
"CostType": "Freight",
"SupplierID": "FEDEX"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes cost packets from a specific purchase order
Header
ContextId
Branch
Context-Type
= application/json
Required Inputs
PurchaseOrderID
CostType
Optional Inputs
SupplierID
Response
- ReturnCode
MessageText
Notes
- For a cross reference to be sent in the
CostType
field, the related supplier must be specified in theSupplierID
field. - If the
SupplierID
is invalid for theCostType
cross reference, the deletion will fail. - The system ignores the
SupplierID
if a valid, non-cross referenceCostType
is sent in the request.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
PurchaseOrderCostPacketsGet
Sample Request
{
"request": {
"PurchaseOrderID": "158553"
}
}
Sample Response
{
"response": {
"CostPacketResponse": {
"dsCostPacketsResponse": {
"dtCostPacketsResponse": [
{
"AllocateBy": "Load",
"ApplyPerReceiving": true,
"CostBasis": "fixed",
"BasisAmount": 0,
"FixedAmount": 32.95,
"Cost": 32.95,
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-02-04",
"CreatedTime": "11:51:45",
"DispatchID": 0,
"Freight": true,
"MinOrderAmount": 0,
"Overridden": true,
"PrintOnForm": true,
"ReceiveNum": 0,
"ShipmentNum": 0,
"SOID": 0,
"SupplierID": "FEDEX",
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-04",
"UpdateTime": "11:51:45"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a cost packet information for a specific purchase order
Header
ContextId
Branch
Context-Type
= application/json
Required Inputs
PurchaseOrderID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- purchase order cost packet information
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
PurchaseOrderCostPacketsUpdate
Sample Request
{
"request": {
"PurchaseOrderID": "158520",
"PurchaseOrderCostPacketsUpdateJSON": {
"dsPurchaseOrderCostPacket": {
"dtPurchaseOrderCostPacket": [
{
"CostType": "Freight",
"CostBasis": "Fixed",
"BasisAmount": 0.0,
"FixedAmount": 56.18,
"SupplierID": "278200",
"AllocateBy": "Weight",
"ApplyPerReceiving": true,
"PrintOnForm": false,
"DispatchID": 0
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": “”
}
}
Purpose
Creates or updates purchase order cost packets
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
PurchaseOrderID
CostType
PurchaseOrderCostPacketsUpdateJSON
Optional Inputs
- N/A
Response
- ReturnCode
- MessageText
Notes
- Any fields not included in the
PurchaseOrderCostPacketsUpdateJSON
assume the default values of the existing cost packet. - To create a new cost packet on a purchase order, in addition to the required inputs, the following fields must be included:
CostBasis
,BasisAmount
orFixedAmount
. - When a cost packet is updated on a parent PO, the system reallocates the cost to the child purchase order(s).
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
PurchaseOrderCreate
Sample Request
{
"request": {
"SupplierID": "H&SH101",
"PurchaseOrderJSON": {
"dsPurchaseOrderHeader": {
"dtPurchaseOrderHeader": [
{
"ShipFromSequence": 1,
"PurchaseType": "WH",
"OrderDate": "",
"CustomerID": "HMWM106",
"ShipToSequence": 1,
"PaymentTermsCode": "2%10NET20",
"FreightTerms": "STANDARD",
"PODescription": "",
"VerbalPO": "",
"Reference": "",
"POLabel": "",
"SendPOVia": "Normal",
"Buyer1": "JDOE",
"Buyer2": "",
"ExpectedShipDate": "2024-11-01",
"ExpectedReceiptDate": "2024-11-08",
"ExpectedReceiptTime": "09:30",
"ExcludefromNetQtyUntil": "",
"UpdateLead": true,
"ShipVia": "UPS",
"PickUpID": "",
"TrackingDate": "",
"ConfirmedBy": "",
"AllowChanges": true,
"AllowChangesUntilDate": "",
"AllowChangesUntilTime": "",
"APISourceID": "API"
}
]
},
"dsPurchaseOrderItem": {
"dtPurchaseOrderItem": [
{
"Sequence": 1,
"ItemCode": "A1E",
"OrderQty": 1,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "",
"ExpectedReceiptDate": "",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 45,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
},
{
"Sequence": 2,
"ItemCode": "A1H",
"OrderQty": 100,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "2024-11-01",
"ExpectedReceiptDate": "2024-11-08",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 45,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
},
{
"Sequence": 3,
"ItemCode": "A1P",
"OrderQty": 100,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "2024-11-05",
"ExpectedReceiptDate": "2024-11-12",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 35,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"NewOrderID": 11305307,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new purchase order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ItemCode
for each detailOrderQty
for each detailShipFromSequence
PurchaseType
SendPOVia
Optional Inputs
- Remaining fields in the
dtPurchaseOrderHeader
anddtPurchaseOrderItemRequest
not already referenced
Response
- ReturnCode
MessageText
NewOrderID
dsAuditResults
Notes
- At least 1 item must be sent in.
- Each detail must have an
OrderQty
> 0. - An item must be active in the branch to be able to add the item to the purchase order.
- A value is required for inputs
ShipFromSequence
andPurchaseType
when the branch supplier record does not have a default value defined. - A value is required for the input
SendPOVia
when included in the request. Valid values are Normal, EDI, and Don’t Send. A Supplier Reference record must exist to send the EDI value in the request. - When the input
SendPOVia
is not included in the request, this value defaults to EDI if a Supplier Reference record exists. Otherwise, it defaults to Normal. - Inputs for
dtPurchaseOrderHeader
set as required in Purchasing Parameters without a default defined value on the branch supplier record requires the purchase order to be updated. - The Purchasing Parameters flag ‘Display proposed sell price in detail entry’ must be enabled for the
ProposedSellPrice
input to create a record on the purchase order detail. - The Purchasing Parameters flag ‘Display supplier quoted cost in detail entry’ must be enabled for the
SupplierQuotedCost
andSupplierQuotedID
inputs to create records on the purchase order detail.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
SupplierID
come from SuppliersList - Valid values for
ShipFromSequence
come from SupplierShipFromsList - Valid values for
ItemCode
come from ItemsList - The
NewOrderID
returned from this method can be used in conjunction withPurchaseOrderGet
to verify the new purchase order was created as expected.
Version Deployed
v612
PurchaseOrderCreateValidate
Sample Request
{
"request": {
"SupplierID": "H&SH101",
"PurchaseOrderJSON": {
"dsPurchaseOrderHeader": {
"dtPurchaseOrderHeader": [
{
"ShipFromSequence": 1,
"PurchaseType": "WH",
"OrderDate": "",
"CustomerID": "HMWM106",
"ShipToSequence": 1,
"PaymentTermsCode": "2%10NET20",
"FreightTerms": "STANDARD",
"PODescription": "",
"VerbalPO": "",
"Reference": "",
"POLabel": "",
"SendPOVia": "Normal",
"Buyer1": "JDOE",
"Buyer2": "",
"ExpectedShipDate": "2024-11-01",
"ExpectedReceiptDate": "2024-11-08",
"ExpectedReceiptTime": "09:30",
"ExcludefromNetQtyUntil": "",
"UpdateLead": true,
"ShipVia": "UPS",
"PickUpID": "",
"TrackingDate": "",
"ConfirmedBy": "",
"AllowChanges": true,
"AllowChangesUntilDate": "",
"AllowChangesUntilTime": "",
"APISourceID": "API"
}
]
},
"dsPurchaseOrderItem": {
"dtPurchaseOrderItem": [
{
"Sequence": 1,
"ItemCode": "A1E",
"OrderQty": 1,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "",
"ExpectedReceiptDate": "",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 45,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
},
{
"Sequence": 2,
"ItemCode": "A1H",
"OrderQty": 100,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "2024-11-01",
"ExpectedReceiptDate": "2024-11-08",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 45,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
},
{
"Sequence": 3,
"ItemCode": "A1P",
"OrderQty": 100,
"UOM": "EACH",
"Cost": 25,
"CostUOM": "EACH",
"DueDate": "",
"ExpectedShipDate": "2024-11-05",
"ExpectedReceiptDate": "2024-11-12",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"GroupID": "",
"Description": "",
"ProposedSellPrice": 35,
"SellPriceUOM": "EACH",
"Size": "",
"SupplierQuotedCost": false,
"SupplierQuoteID ": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Failure",
"AuditTable": "dtPurchaseOrderHeader",
"AuditRecordIndex": "",
"AuditText": "Invalid Send PO Via. Order not created. (ID# 1449)"
},
{
"AuditSequence": 2,
"AuditType": "Warning",
"AuditTable": "dtPurchaseOrderHeader",
"AuditRecordIndex": "",
"AuditText": "Inactive suppliers are not allowed to be entered. (ID# 385)"
},
{
"AuditSequence": 3,
"AuditType": "Warning",
"AuditTable": "dtPurchaseOrderHeader",
"AuditRecordIndex": "",
"AuditText": "Invalid PO Label. Field left blank. (ID# 1448)"
}
]
}
},
"ReturnCode": 2,
"MessageText": "See audit results for failures/warnings"
}
}
Purpose
Validates the creation of a new purchase order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ItemCode
for each detailOrderQty
for each detailShipFromSequence
PurchaseType
SendPOVia
Optional Inputs
- Remaining fields in the
dtPurchaseOrderHeader
anddtPurchaseOrderItemRequest
not already referenced
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Refer to the Notes in the PurchaseOrderCreate method.
- Review the
dsAuditResults
to identify changes in the request in order for the validation to be successful. - A value is required for inputs
ShipFromSequence
andPurchaseType
when the branch supplier record does not have a default value defined. - A value is required for the input
SendPOVia
when included in the request. Valid values are Normal, EDI, and Don’t Send. A Supplier Reference record must exist to send the EDI value in the request. - When the input
SendPOVia
is not included in the request, this value defaults to EDI if a Supplier Reference record exists. Otherwise, it defaults to Normal. - Inputs for
dtPurchaseOrderHeader
set as required in Purchasing Parameters without a default defined value on the branch supplier record requires the purchase order to be updated.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Refer to the relationships section in the PurchaseOrderCreate method
Version Deployed
v612
PurchaseOrderDetailsUpdate
Sample Request
{
"request": {
"PurchaseOrderID": 158419,
"PurchaseOrderDetailsUpdateJSON": {
"dsPurchaseOrderDetail":{
"dtPurchaseOrderDetail":[{
“PurchaseOrderDetailSequence":1,
"ExpectedReceiptDate":"2019-01-30",
"ExpectedShipDate":"2019-01-31"
}]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates purchase order detail expected receipt dates and expected ship dates
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
PurchaseOrderID
PurchaseOrderDetailSequence
Optional Inputs
ExpectedReceiptDate
ExpectedShipDate
Response
- ReturnCode
MessageText
Notes
- When a purchase order detail Expected Ship Date or an Expected Receipt Date is updated, the purchase order header Expected Ship Date or Expected Receipt Date is recalculated
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v538
PurchaseOrderGet
Sample Request
{
"request": {
"PurchaseOrderID": "158511"
}
}
Sample Response
{
"response": {
"PurchaseOrderResponse": {
"dsPurchaseOrderResponse": {
"dtPurchaseOrderHeader": [
{
"PurchaseOrderID": 158419,
"AcknowledgeDate": null,
"IncomingPOAckPurpose": "",
"IncomingPOAckStatus": "",
"AcknowledgeTime": "",
"AllowChanges": true,
"AutoTransfer": false,
"Buyer1": "0901",
"Buyer2": "451-A",
"ConfirmedBy": "23274",
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-01-16",
"CreatedTime": "13:08:57",
"Currency": "USD",
"CustomerID": "HILLSIDELBR",
"AllowChangesUntilDate": "2019-02-10",
"AllowChangesUntilTime": "13:30",
"Dispatched": "",
"ExpectedReceiptDate": "2019-02-10",
"ExpectedShipDate": "2019-02-09",
"ExpectedReceiptTime": "09:35",
"FreightTerms": "FOB",
"OrderDate": "2019-01-16",
"OriginalSource": "PO Import",
"PaymentTermsCode": "1%10n30",
"PickUpID": "107311",
"POLabel": "Transit",
"ParentPOID": null,
"ParentPOFlag": "",
"POStatus": "Open",
"PurchaseType": "WH",
"Reference": "Hillcrest Apts",
"SendPOVia": "Normal",
"ShipFromSequence": 1,
"ShipToSequence": 1,
"ShipVia": "Pick up",
"SupplierID": "LMC",
"TrackingDate": "2019-01-19",
"TransferPO": false,
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-03",
"UpdateLead": false,
"UpdateTime": "20:42:03",
"PODescription": "New supplier inv",
"VerbalPO": "751073"
}
],
"dtPurchaseOrderDetail": [
{
"POID": 158419,
"Cost": 1.052,
"CreatedBy": "mwellensiek",
"CreatedDate": "2019-01-16",
"CreatedTime": "13:08:57",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"CostUOM": "EA",
"DisplaySequence": 1,
"ExpectedReceiptDate": "2019-02-10",
"ExpectedReceiptDateOverride": false,
"ExpectedShipDate": "2019-02-09",
"ExpectedShipDateOverride": false,
"GroupID": "",
"ItemCode": "d10",
"LandedCost": 1.052,
"OriginalItemCode": "",
"CostOverridden": false,
"DiscountOverridden": false,
"ItemDescription": "8D Bright Ring Shank",
"POStatus": "Open",
"ProposedSellPrice": 0,
"Quantity": 10,
"ProposedSellPriceUOM": "EA",
"PurchaseOrderDetailSequence": 1,
"ReceivingSet": "",
"SIZE": "2 1/2",
"TallyUOM": "",
"QuantityUOM": "EA",
"UpdateBy": "mwellensiek",
"UpdateDate": "2019-02-03",
"UpdateTime": "20:40:54",
"WOID": 0
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a specific purchase order, including header and detail information
Header
ContextId
Branch
Context-Type
= application/json
Required Inputs
PurchaseOrderID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- Purchase order header and detail information
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v539
PurchaseOrderHeaderUpdate
Sample Request
{
"request": {
"PurchaseOrderID": 1000175221,
"PurchaseOrderHeaderUpdateJSON": {
"dsPurchaseOrderHeader": {
"dtPurchaseOrderHeader": [
{
"ExpectedShipDate": "2024-02-11",
"ExpectedReceiptDate": "2024-02-12",
"ExpectedReceiptTime": "09:35",
"PODescription": "New supplier inv",
"Buyer1": "0901",
"Buyer2": "451-A",
"Reference": "Hillcrest Apts",
"VerbalPO": "751073",
"POLabel": "Transit",
"PickUpID": "107311",
"ShipVia": "Pick up",
"FreightTerms": "FOB",
"PaymentTermsCode": "1%10n30",
"AllowChanges": "Yes",
"AllowChangesUntilDate": "2019-01-29",
"AllowChangesUntilTime": "13:30",
"TrackingDate": "2019-01-19",
"SendPOVia": "Normal",
"UpdateLead": "No",
"ConfirmedBy": "23274",
"ShipFromSequence": 1,
"OverriddenCostDiscShipFromUpdate": "No",
"ApplyOrderMinShipFromUpdate ": "Yes",
"ApplyMinPackShipFromUpdate": "Yes",
"UseInactiveShipFromUpdate": "No"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates purchase order header fields
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
PurchaseOrderID
Optional Inputs
ExpectedShipDate
ExpectedReceiptDate
ExpectedReceiptTime
PODescription
Buyer1
Buyer2
Reference
VerbalPO
POLabel
PickUpID
ShipVia
FreightTerms
PaymentTermsCode
AllowChanges
AllowChangesUntilDate
AllowChangesUntilTime
TrackingDate
,SendPOVia
UpdateLead
ConfirmedBy
Response
- ReturnCode
MessageText
Notes
- The related fields on the child purchase order(s) are updated when the following fields on the parent purchase order are changed:
PODescription
VerbalPO
Reference
Buyer1
Buyer2
ShipVia
PaymentTermsCode
FreightTerms
TrackingDate
- When the Expected Ship Date and Expected Receipt Dates are updated on the header, the purchase order detail sequences that do not have overridden Expected Ship Dates or Expected Receipt Dates are automatically updated.
-
ShipFromSequence
valid values are read and updated if- PO is the Parent PO
- Supplier Ship from is valid for the branch
- PO is not partially received, completely received, or cancelled
- PO is not in the process of being received
- PO is not a transfer PO
- Supplier Ship from is not a branch transfer supplier
- User has necessary security
- The following fields are only read when the
ShipFromSequence
field is populated with a valid valueOverriddenCostDiscShipFromUpdate
ApplyOrderMinShipFromUpdate
ApplyMinPackShipFromUpdate
UseInactiveShipFromUpdate
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v538; New ship-from fields added in v608
PurchaseOrderMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 12345,
"TranSeq": 1,
"MessageText": "Message Text Here",
"MessageType": "D",
"PrintOnForms": false,
"SendToWMS": true
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a purchase order transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
SendToWMS
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
ShippingTrackingUpdateBySupplierReturn
Sample Request
{
"request": {
"SupplierReturnID": 440061914,
"ShippingTrackingUpdateBySRJSON": {
"dsShipmentUpdateBySRSettings": {
"dtShipmentUpdateBySRSettings": [
{
"ShipVia": "Our Truck",
"ExpectedShipDate": "2022-10-02"
}
]
},
"dsTrackingDetailBySRRequest": {
"dtTrackingDetailBySRRequest": [
{
"TrackingNumber": "1F3Y0A70875015",
"ContainerWeight": 9.5,
"ContainerWeightUOM": "LB",
"ContainerLength": 18,
"ContainerWidth": 20,
"ContainerHeight": 26,
"dtTrackingDetailBySRItemRequest": [
{
"ItemCode": "90641",
"DetailSequence": 1,
"Quantity": 1,
"QtyUOM": "EA"
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 2,
"MessageText": "Nothing remains to be dispatched for this transaction. (ID# 4539)"
}
}
Purpose
Stores tracking information for the supplier return on an existing or auto-created dispatch transaction
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierReturnID
Optional Inputs
- Remaining fields in the
dtShipmentUpdateBySRSettings
,dtTrackingDetailBySRRequest
, anddtTrackingDetailBySRItemRequest
Response
- ReturnCode
MessageText
Notes
- This method contains a parent/child relationship between the
dsShipmentUpdateBySRSettings
and theSupplierReturnID
. Please see the Parent/Child relationship topic for more information. - There is a many to one relationship between the
dsTrackingDetailBySRRequest
andSupplierReturnID
as the method allows the input of multiple tracking numbers. - Valid values for
ContainerWeightUOM
: LB, KG. If this field is not sent, the system defaults to a UOM of LB. - The following rules apply to the
ShipVia
tag:- If a valid ship via is sent in the request, the supplier return header ship via is updated with this value. If an invalid ship via is sent in the request, a failure occurs.
- If a blank value is sent for the ship via, no change occurs to the supplier return header ship via.
- If the
ShipVia
tag is not sent in the request, no change occurs to the supplier return header ship via.
- A dispatch transaction, is created for the supplier return if one does not already exist.
- When a
TrackingNumber
is sent in with items specified in thedtTrackingDetailBySRRequest
, dispatch details are created only for the supplier return items and quantities received. - When a
TrackingNumber
is sent without items specified, dispatch details are created for all supplier return items and quantities, with no containers assigned at the item level.
- When a
- When tracking information is received for a supplier return that has already been dispatched, the existing dispatch transaction is updated.
- If a supplier return is assigned to more than one dispatch, the method fails
- If the
TrackingNumber
sent is already assigned to the dispatch, the method fails. - If container information is assigned by detail on the existing dispatch, the request must be sent in with the
dtTrackingDetailBySRItemRequest
fields. - When a
TrackingNumber
is sent in withdtTrackingDetailBySRItemRequest
fields, the quantity received for an item cannot be more than the accumulated total of what remains to be dispatched plus any dispatched quantities not previously assigned to a container for that supplier return.
- This method contains a parent/child relationship between the
dtTrackingDetailBySRRequest
and theTrackingNumber
. Please see the Parent/Child relationship topic for more information. - There is a many to one relationship between the
dtTrackingDetailBySRItemRequest
and theTrackingNumber
as the method allows you the option to specify item(s) for each tracking number. - When multiple
TrackingNumbers
are sent in without thedtTrackingDetailBySRItemRequest
, the tracking information is stored at the supplier return transaction level on the dispatch transaction. - When a single
TrackingNumber
is sent in without thedtTrackingDetailBySRItemRequest
, the tracking information is stored at the item level for all items on the supplier return. - When a
TrackingNumber
is sent in withdtTrackingDetailBySRItemRequest
fields, the tracking information is stored at the supplier return/item level on the dispatch. - When multiple
TrackingNumbers
are sent in thedtTrackingDetailBySRItemRequest
, only items on the supplier return that are specified in thedtTrackingDetailBySRItemRequest
are saved with tracking information at the item level. - The following rules apply when sending multiple tracking numbers in a single request
- The
dtTrackingDetailBySRItemRequest
must be excluded from the request to save all tracking numbers at the supplier return level. - The
dtTrackingDetailBySRItemRequest
must be included for each tracking number to save all tracking numbers at the supplier return/item level. - The system does not allow some tracking numbers to include
dtTrackingDetailBySRItemRequest
and others to excludedtTrackingDetailBySRItemRequest
tags in a single request.
- The
Relationships
ContextId
andBranch
come from Login
Version Deployed
v601
SupplierReturnGet
Sample Request
{
"request": {
"SupplierReturnID": 440061839
}
}
Sample Response
{
"response": {
"SupplierReturnResponse": {
"dsSupplierReturnResponse": {
"dtSupplierReturnHeader": [
{
"SupplierReturnID": 440061839,
"SRStatus": "Open",
"OrderDate": "2022-07-29",
"Dispatched": "Dispatched",
"SupplierID": "ESM",
"ShipFromSequence": 1,
"Address1": "4533 Indian Wells Lane",
"Address2": "PO Box 125",
"Address3": "Suite 43",
"City": "Indian Wells",
"State": "CA",
"Zip": "92210 ",
"Country": "USA",
"Currency": "USD",
"ContactName": "Jack Zeldin",
"ContactPhone": "(750)-902-2123",
"ContactEmail": "jzeldin@esm.net",
"CustomerID": "CENTRAL",
"ShipToSequence": 1,
"PaymentTermsCode": "eas",
"FreightTerms": "Delivery",
"PurchaseType": "WH",
"SRDescription": "defective materials",
"VerbalPO": "2432",
"Reference": "",
"POLabel": "On Lot",
"SendSRVia": "Normal",
"Buyer1": "1020",
"Buyer2": "LLH1",
"ExpectedShipDate": "2022-07-30",
"ShipVia": "BOOM TRUCK",
"TrackingDate": "2022-08-01",
"OriginalSource": "",
"ConfirmedBy": "Jack Dutton",
"CreatedBy": "lharris",
"CreatedDate": "2022-07-29",
"CreatedTime": "10:44:30",
"UpdateBy": "lharris",
"UpdateDate": "2022-07-29",
"UpdateTime": "10:44:44"
}
],
"dtSupplierReturnDetail": [
{
"SupplierReturnID": 440061839,
"ItemCode": "90645",
"SupplierReturnDetailSequence": 1,
"DisplaySequence": 1,
"Size": "70” x 60” x 8”",
"ItemDescription": "Swimline Pool Pizza Slice Inflatable",
"Quantity": -2,
"Cost": 40,
"CostUOM": "EA",
"OriginalItemCode": "90645",
"POStatus": "Open",
"CreatedBy": "lharris",
"CreatedDate": "2022-07-29",
"CreatedTime": "10:44:41",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"LandedCost": 0,
"CostOverridden": false,
"DiscountOverridden": false,
"TallyUOM": "",
"QuantityUOM": "EA",
"ReasonCode": "Defective Material",
"TotalWeight": 10,
"TotalLoad": 12,
"ExtendedCost": -80,
"ContainerLength": 12,
"ContainerWidth": 10,
"ContainerHeight": 5,
"HazmatFlag": false,
"MSDS": "MSDSA",
"BolCode": "110",
"UpdateBy": "lharris",
"UpdateDate": "2022-07-29",
"UpdateTime": "10:44:41",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
}
]
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Retrieve Supplier Return header and detail information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierReturnID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
- Supplier Return header and detail information
Notes
- The initial branch returned with the Login method indicates which branch that context is originally positioned in
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v601
SupplierReturnMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 12345,
"TranSeq": 3,
"MessageText": "Message Text Here",
"MessageType": "Detail",
"PrintOnForms": true,
"SendToWMS": false
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a supplier return transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
SendToWMS
Response
- ReturnCode
MessageText
Notes
MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
AgilityPublic/Reman Service
This AgilityPublic service contains methods related to reman work orders.
RemanHeaderCreate
Sample Request
{
"request": {
"dsInputRemanHeaderRequest": {
"dtInputRemanHeaderRequest": [
{
"BalancingUOM": "EA",
"TransactionDescription": "test",
"ExpectedDate": "2020-04-15",
"TransactionJob": "33",
"TransactionReference": "55",
"RemanType": "Prod",
"StartDate": "2020-03-25",
"SupplierID": 700,
"SupplierShipFromSequence": 11
}
]
}
}
}
Sample Response
{
"response": {
"NewOrderID": 96570,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- All fields in
dtInputRemanHeaderRequest
Response
- ReturnCode
MessageText
NewOrderID
Notes
- This method creates only the Reman Order header record. Other methods in this service allow the creation or maintenance of the related inputs, operations and outputs
- If defined, an API Reman Created notification is generated
Relationships
ContextId
andBranch
come from Login- The
NewOrderID
returned from this method is used as theOrderID
input in all other Reman methods available in this service
Version Deployed
v546
RemanInputsCreate
Sample Request
{
"request": {
"OrderID": 96595,
"dsInputRemanInputRequest": {
"dtInputRemanInputRequest": [
{
"Sequence": 1,
"Key": "1",
"LinkID": "",
"ItemCode": "INPUT",
"ItemSize": "",
"ItemDescription": "",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"AffectUsage": false
}
],
"dtInputRemanInputDimReq": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 0,
"OrderQtyUOM": ""
}
],
"dtInputRemanInputComReq": [
{
"Sequence": 1,
"Location": "001-1",
"Lot": "",
"Tag": "",
"Content": "",
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 10,
"OrderQtyUOM": "GAL"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates one or more reman inputs on an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanInputRequest
:Key
,ItemCode
,AffectUsage
for each record indtInputRemanInputRequest
Optional Inputs
- Remaining fields in
dtInputRemanInput
Response
- ReturnCode
MessageText
Notes
- Non-dimensional inputs can be created with 0
OrderQty
- If the input is a dimension,
Thickness
,Width
,Length
,OrderQty
, andOrderQtyUOM
are required inputs - To specify the locations to pull inventory from for the inputs, the
dtInputRemanInputComReq
requires theLocation
/Lot
/Tag
/Content
fields depending on how the inventory is carried. Additionally, theOrderQty
andOrderQtyUOM
are required - The system does not auto tag input items created per settings on the associated item record.
- Regardless of the reman type assigned to a reman work order, pass-thru items are not created when adding input items
- Auto messages are added to the reman input item based on existing rules for adding them in Agility.
- You can specify tally quantities for input items by assigning values to the
dtInputRemanInputDimReq
ordtInputRemanInputComReq
fields. You must provide theSequence
for the associated reman input item as well as theThickness
,Width
andLength
for dimension items. - When commit records are specified for reman input items, dimension records are not processed with the exception of those created for tally calculator items.
- All dimension and commit records for a single reman input item must have the same
OrderQtyUOM
.
Relationships
ContextId
andBranch
come from Login- When the input is a dimension, the main item must be represented in
dtInputRemanInputRequest
. TheSequence
used indtInputRemanInputRequest
must also be used as theSequence
indtInputRemanInputDimReq
to tie the item and its dimensions together - When the location for the inventory to be pulled from is supplied, the main item must be represented in
dtInputRemanInputRequest
. TheSequence
used indtInputRemanInputRequest
must also be used as theSequence
indtInputRemanInputComReq
to tie the item and its locations together. Additionally, if the input is a dimensions, theThickness
,Width
,Length
must be provided in thedtInputRemanInputComReq
to tie the dimensions to the inventory locations - There can be a one to many relationship between
dtInputRemanInputRequest
anddtInputRemanInputDimReq
- There can be a one to many relationship between
dtInputRemanInputRequest
anddtInputRemanInputComReq
- There can be a one to many relationship between
dtInputRemanInputDimReq
anddtInputRemanInputComReq
RemanOrderGet
can be run to find the correctKey
values to use when the new inputs need to be linked to existing operations or outputs- RemanOrderGet can be run with the
OrderID
used in this method to verify the inputs were added as expected
Version Deployed
v546
RemanInputDelete
Sample Request
{
"request": {
"OrderID": 96600,
"dsInputRemanInputRequest": {
"dtInputRemanInputRequest": [
{
"Sequence": 1,
"Key": "1",
"LinkID": "",
"ItemCode": "INPUT",
"ItemSize": "",
"ItemDescription": "",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"AffectUsage": false
}
],
"dtInputRemanInputDimReq": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 0,
"OrderQtyUOM": ""
}
],
"dtInputRemanInputComReq": [
{
"Sequence": 1,
"Location": "001-1",
"Lot": "",
"Tag": "",
"Content": "",
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 10,
"OrderQtyUOM": "GAL"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes one or more inputs from an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanInputRequest
:Sequence
for each input to be deleted,AffectUsage
Optional Inputs
- Remaining fields in
dsInputRemanInputRequest
Response
- ReturnCode
MessageText
Notes
- Method deletes inputs for the Sequences specified including any related dimension or inventory locations associated. For this reason, values are not needed in
dtInputRemanInputDimReq
ordtInputRemanInputComReq
when deleting
Relationships
ContextId
andBranch
come from LoginRemanOrderGet
can be run to find the correctSequence
values to use when deleting inputs- RemanOrderGet can be run with the
OrderID
used in this method to verify the inputs were deleted as expected
Version Deployed
v546
RemanMessageCreate
Sample Request
{
"request": {
"MessageCreateJSON": {
"dsMessageCreate": {
"dtMessageCreate": [
{
"TranID": 12345,
"TranType": "RM",
"TranSeq": 3,
"MessageText": "Message Text Here",
"MessageType": "Header",
"PrintOnForms": true
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a reman transaction message in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
TranType
MessageText
MessageType
TranSeq
(for detail transaction messages)
Optional Inputs
PrintOnForms
Response
- ReturnCode
MessageText
Notes
- Valid values for
TranType
are RM, Reman header, RM-input, Reman input, RM-output, Reman output, RM-operation, and Reman operation MessageText
can send a maximum of 1000 characters- Valid values for
MessageType
are H, Header, D, Detail, F, and Footer - When
PrintOnForms
is set to true, all eligible forms are set to print the new message
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
RemanOperationsCreate
Sample Request
{
"request": {
"OrderID": 96595,
"dsInputRemanOperationRequest": {
"dtInputRemanOperationRequest": [
{
"Sequence": 1,
"Key": "1",
"CostType": "Operation",
"OperationDescription": "",
"OrderQty": 1,
"Cost": 5.25,
"PrintOnWO": false,
"SupplierID": 700,
"SupplierShipFromSequence": 11,
"ExpectedStartDate": "2020-04-03",
"ExpectedCompletionDate": "2020-04-04"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates one or more operations on an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanOperationRequest
:CostType
,OrderQty
,SupplierID
,SupplierShipFromSequence
for each input,PrintOnWO
Optional Inputs
- Remaining fields in
dtInputRemanOperationRequest
Response
- ReturnCode
MessageText
Notes
Key
, while not required, is used to tie the operations to a specific input and/or outputCostType
is the operation to be addedCostType
can be added with 0OrderQty
Relationships
ContextId
comes from LoginRemanOrderGet
can be run to find the correctKey
values to use when the operations need to be linked to existing inputs or outputs- RemanOrderGet can be run with the
OrderID
used in this method to verify the operations were added as expected
Version Deployed
v546
RemanOperationDelete
Sample Request
{
"request": {
"OrderID": 96600,
"dsInputRemanOperationRequest": {
"dtInputRemanOperationRequest": [
{
"Sequence": 3,
"Key": "3",
"CostType": "Operation",
"OperationDescription": "",
"OrderQty": 1,
"Cost": 5.25,
"PrintOnWO": false,
"SupplierID": 700,
"SupplierShipFromSequence": 11,
"ExpectedStartDate": "2020-04-06",
"ExpectedCompletionDate": "2020-04-07"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes one or more operations from an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanOperationRequest
:Sequence
for each operation to be deleted,PrintOnWO
Optional Inputs
- Remaining fields in
dsInputRemanOperationRequest
Response
- ReturnCode
MessageText
Notes
- N/A
Relationships
ContextId
andBranch
come from LoginRemanOrderGet
can be run to find the correctSequence
values to use when deleting operations- RemanOrderGet can be run with the
OrderID
used in this method to verify the operations were deleted as expected
Version Deployed
v546
RemanOrderGet
Sample Request
{
"request": {
"OrderID": 96584
}
}
Sample Response
{
"response": {
"RemanHeaderResponse": {
"dsGetRemanHeaderResponse": {
"dtRemanHeaderResponse": [
{
"OrderID": 96584,
"BalancingUOM": "",
"TransactionDescription": "",
"ExpectedDate": "2020-04-02",
"TransactionJob": "123456",
"TransactionReference": "987654",
"RemanType": "Dry",
"StartDate": "2020-04-01",
"SupplierID": "020774",
"SupplierShipFromSequence": 1
}
]
}
},
"RemanInputResponse": {
"dsGetRemanInputResponse": {
"dtRemanInputResponse": [
{
"OrderID": 96584,
"Sequence": 1,
"Key": "1",
"LinkID": "",
"ItemCode": "INPUT",
"ItemSize": "INPUT SIZE",
"ItemDescription": "INPUT DESCRIPTION",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"AffectUsage": true
}
]
}
},
"RemanOperationResponse": {
"dsGetRemanOperationResponse": {
"dtRemanOperationResponse": [
{
"OrderID": 96584,
"Sequence": 1,
"Key": "1",
"CostType": "operation",
"OperationDescription": "REMAN OPERATION",
"OrderQty": 10,
"OrderQtyUOM": "EA",
"Cost": 0,
"CostUOM": "EA",
"PrintOnWO": true,
"SupplierID": "020774",
"SupplierShipFromSequence": 1,
"ExpectedStartDate": null,
"ExpectedCompletionDate": null
}
]
}
},
"RemanOutputResponse": {
"dsGetRemanOutputResponse": {
"dtRemanOutputResponse": [
{
"OrderID": 96584,
"Sequence": 1,
"Key": "1",
"LinkID": "",
"Cull": "",
"ItemCode": "OUTPUT",
"ItemSize": "OUTPUT SIZE",
"ItemDescription": "OUTPUT DESCRIPTION",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"ApplyNegativeUsage": false
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a specific reman order, including its inputs, operations and outputs
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
RemanHeaderDatasetHandle
containing the specified reman including its assigned inputs, operations, and outputs
Notes
- This method does not return specified commit locations for inputs or specified storage locations for outputs
Relationships
ContextId
andBranch
come from Login- While this method can be called for any known, valid reman order id, often it is used in conjunction with the other Reman methods found in this service. For example, the response from a valid RemanHeaderCreate request is
OrderID
. TheOrderID
can be used as input to this method to fetch the reman order for review. Additionally, after using a method such as RemanInputsCreate to add inputs to the reman, theRemanOrderGet
method can be used to verify the inputs added to an existing reman
Version Deployed
v546
RemanOutputsCreate
Sample Request
{
"request": {
"OrderID": 96595,
"dsInputRemanOutputRequest": {
"dtInputRemanOutputRequest": [
{
"Sequence": 1,
"Key": "1",
"LinkID": "",
"Cull": "",
"ItemCode": "OUTPUT",
"ItemSize": "",
"ItemDescription": "",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"ApplyNegativeUsage": true
}
],
"dtInputRemanOutputDimReq": [
{
"Sequence": 1,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 0,
"OrderQtyUOM": ""
}
],
"dtInputRemanOutputStorageReq": [
{
"Sequence": 1,
"Location": "WMS",
"Lot": "",
"Tag": "",
"Content": "",
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 10,
"OrderQtyUOM": "GAL"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates one or more reman outputs on an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanOutputRequest
:Key
,ApplyNegativeUsage
,ItemCode
,OrderQtyUOM
; following fields indtInputRemanOutputStorageReq
:OrderQty
,OrderQtyUOM
,Location
/Lot
/Tag
/Content
depending on how the inventory is carried
Optional Inputs
- Remaining fields in
dsInputRemanOutputRequest
Response
- ReturnCode
MessageText
Notes
- Non-dimensional outputs can be created with 0
OrderQty
- If the output is a dimension,
Thickness
,Width
,Length
,OrderQty
andOrderQtyUOM
are required inputs indtInputRemanOutputDimReq
- Method requires the storage locations specified for each output. To specify,
dtInputRemanOutputStorageReq
requires theLocation
,Lot
,Tag
,Content
fields depending on how the inventory is carried as well asOrderQty
andOrderQtyUOM
are required - Auto messages are added to the reman output item based on existing rules for adding them in Agility
- All dimenstion and storage records for a single reman output item must have the same
OrderQtyUOM
Relationships
ContextId
andBranch
come from Login- When the output is a dimension, the main item must be represented in
dtInputRemanOutputRequest
. TheSequence
used indtInputRemanOutputRequest
must also be used as theSequence
indtInputRemanOutputDimReq
to tie the item and its dimensions together - When specifying the storage locations for the inventory, the main item must be represented in
dtInputRemanOutputRequest
. TheSequence
used indtInputRemanOutputRequest
must also be used as theSequence
indtInputRemanOutputStorageReq
to tie the item and its locations together. Additionally, if the input is a dimensions theSequence
,Thickness
,Width
,Length
must be provided in thedtInputRemanOutputStorageReq
to tie the dimensions to the storage locations - There can be a one to many relationship between
dtInputRemanOutputRequest
anddtInputRemanOutputDimReq
- There can be a one to many relationship between
dtInputRemanOutputRequest
anddtInputRemanOutputStorageReq
- There can be a one to many relationship between
dtInputRemanOutputDimReq
anddtInputRemanOutputStorageReq
- RemanOrderGet can be run to find the correct
Key
values to use when the outputs need to be linked to existing operations or inputs - RemanOrderGet can be run with the
OrderID
used in this method to verify the outputs were added as expected
Version Deployed
v546
RemanOutputDelete
Sample Request
{
"request": {
"OrderID": 96600,
"dsInputRemanOutputRequest": {
"dtInputRemanOutputRequest": [
{
"Sequence": 4,
"Key": "4",
"LinkID": "",
"Cull": "",
"ItemCode": "OUTPUT",
"ItemSize": "",
"ItemDescription": "",
"OrderQty": 10,
"OrderQtyUOM": "GAL",
"ApplyNegativeUsage": true
}
],
"dtInputRemanOutputDimReq": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 0,
"OrderQtyUOM": ""
}
],
"dtInputRemanOutputStorageReq": [
{
"Sequence": 4,
"Location": "001-1",
"Lot": "",
"Tag": "",
"Content": "",
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 10,
"OrderQtyUOM": "GAL"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes one or more outputs from an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanOutputRequest
:ApplyNegativeUsage
,Sequence
for each output to be deleted
Optional Inputs
- Remaining fields in
dsInputRemanOutputRequest
Response
- ReturnCode
MessageText
Notes
dtInputRemanOutputDimReq
anddtInputRemanOutputStorageReq
are restricted for future use- Method deletes outputs for the Sequences specified including any related dimension or storage locations associated. For this reason, values are not needed in
dtInputRemanOutputDimReq
ordtInputRemanOutputStorageReq
when deleting
Relationships
ContextId
andBranch
come from Login- RemanOrderGet can be run used to find the correct
Sequence
values to use when deleting outputs - RemanOrderGet can be run with the
OrderID
used in this method to verify the outputs were deleted as expected
Version Deployed
v546
RemanSpecifyTagsToCommit
Sample Request
{
"request": {
"OrderID": 96589,
"dsInputRemanTagsToCommitRequest": {
"dtInputRemanTagsToCommitRequest": [
{
"Tag": "T0113446"
}
]
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Commits inventory tags to input items on reman work orders in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanTagsToCommitRequest
:Tag
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
- When the specified tag is not for an existing input item, the item is added to the reman work order and the tag is committed
- When an item is added to a reman work order, any associated operations assigned to the item are also added
- When the specified tag is for an existing input item, the item quantity and tally is updated to reflect the additional inventory commit being made
Relationships
ContextId
andBranch
come from Login
Version Deployed
v546
RemanStorageReplace
Sample Request
{
"request": {
"OrderID": 96590,
"dsInputRemanOutputRequest": {
"dtInputRemanOutputRequest": [
{
"Sequence": 1,
"Key": "1",
"LinkID": "",
"Cull": "",
"ItemCode": "OUTPUT",
"ItemSize": "",
"ItemDescription": "",
"OrderQty": 1,
"OrderQtyUOM": "",
"ApplyNegativeUsage": true
}
],
"dtInputRemanOutputDimensionReq": [
{
"Sequence": 0,
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 0,
"OrderQtyUOM": ""
}
],
"dtInputRemanOutputStorageRequest": [
{
"Sequence": 1,
"Location": "WMS",
"Lot": "",
"Tag": "",
"Content": "",
"Thickness": 0,
"Width": 0,
"Length": 0,
"PieceCount": 0,
"OrderQty": 1,
"OrderQtyUOM": "GAL"
}
]
}
}
}
Sample Response
Sample response { "response": {
"ReturnCode": 0,
"MessageText": ""
}}
Purpose
Deletes one or more outputs from an existing, open reman order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
; following fields indsInputRemanOutputRequest
:Sequence
,Location
/Lot
/Tag
/Content
,OrderQty
,OrderQtyUOM
andApplyNegativeUsage
for each storage record needing to be updated
Optional Inputs
- Remaining fields in dsInputRemanOutputRequest
Response
- ReturnCode
MessageText
Notes
dtInputRemanOutputDimensionReq
is restricted for future use- Method deletes all existing storage records associated with the Sequences entered and creates new storage records based on the incoming values
- Values are not needed in
dtInputRemanOutputRequest
ordtInputRemanOutputDimensionReq
when deleting storage records - If the storage is for a dimension,
Thickness
,Width
,Length
, as needed by item type, are required inputs indtInputRemanOutputStorageRequest
- Method requires the storage locations specified for each output to have the
Location
,Lot
,Tag
,Content
fields depending on how the inventory is carried - All replacement storage records for a single reman output item must have the same
OrderQtyUOM
Relationships
ContextId
andBranch
come from Login- RemanOrderGet can be run to find the correct output
Sequence
values to use when replacing storage locations
Version Deployed
v546
AgilityPublic/Session Service
This AgilityPublic service contains methods related to the user’s session when logged in.
AgilityVersion
No Sample Request
Sample Response
{
"response": {
"AgilityVersion": "5.3.4",
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns the customer’s Agility version the web service is accessing
Header
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
AgilityVersion
Notes
- This method can be used to ensure the Agility version the customer’s environment is running against is compatible with the methods being used
Relationships
N/A
Version Deployed
v534
BranchList
No Sample Request
Sample Response
{
"response": {
"BranchListResponse": {
"dsBranchListResponse": {
"dtBranchListResponse": [
{
"BranchID": "CORPORATE",
"CompanyName": "Corporate Branch",
"ProfName": "CORPORATE"
},
{
"BranchID": "OMAHA",
"CompanyName": "Omaha Branch",
"ProfName": "OMAHA"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of branches the user has access to
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
BranchID
Branch
ProfName
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534; ProfName added to response in v554
Login
Sample Request
{
"request": {
"LoginID": "username",
"Password": "password"
}
}
Sample Response
{
"response": {
"SessionContextId": "12345613a90e34-a6c-49ad-314-9f703ef86",
"InitialBranch": "CORPORATE",
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Logs the user into Agility and returns a context id
Header
Content-Type
= application/json
Required Inputs
LoginID
Password
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
SessionContextId
InitialBranch
Notes
- N/A
Relationships
ContextID
returned is used as an input and sent in the header in most of the other methodsInitialBranch
is the branch within which the context id is initially positioned and can be used as theBranch
input in the header in most of the other methods
Version Deployed
v534
Logout
No Sample Request
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Logs a user out of Agility and removes the context id
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- N/A
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
Notes
N/A
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v534
AgilityPublic/Session Service Restricted methods-DMSi use only
Name | Purpose |
---|---|
EnvironmentInfo | Used to verify environmental information |
ImageBinAuthenticate | Supports an internal login for the Image Bin process |
ReceiveData | Used by specific external interfaces to send files to Agility for processing |
AgilityPublic/Shipments Service
This AgilityPublic service includes methods related to shipments.
PickFileCreate
Sample Request
{
"request": {
"ViewerName": "Pick File Viewer",
"AccessType": "All",
"AccessedBy": "",
"SaleType": "",
"Route": "",
"CustomerID": "",
"OrderID": "",
"Dispatched": "",
"Location": "",
"HandlingCode": "",
"ShipVia": "",
"CutOffDate": null
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a new pick file based on a saved picking viewer
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
ViewerName
AccessType
AccessedBy
Optional Inputs
SaleType
Route
CustomerID
OrderID
Dispatched
Location
HandlingCode
ShipVia
CutOffDate
Response
- ReturnCode
MessageText
Notes
- Values provided as inputs override values saved in the viewer criteria and are used as the criteria.
- <none> is a valid value for
HandlingCode
and <all> is a valid value forSaleType
,Route
,Customer
,TransactionID
,Dispatched
,Location
,HandlingCode
andShipVia
. Please see the Entering special character values such as < or > topic for more information - If a value is not sent for
CutOffDate
, the current date is used - The following can contain a single value or a string separated by commas:
SaleType
,Route
,Dispatched
,Location
,HandlingCode
,ShipVia
- The Action Allocation ‘Create Picks – 2 step’ is not applied and Data Allocations do not apply.
- Pick Ticket and Pick Report Forms Assignments to print other forms, such as Reman Work Orders, are ignored.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
SaleType
come fromGetSaleTypes
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList - Valid values for
TransactionID
come from SalesOrderList
Version Deployed
v540
PickFileList
Sample Request
{
"request": {
"OrderID": 304533,
"ShipmentNumber": "",
"PickID": "",
"CustomerID": "",
"ShipToSequence": "",
"ExpectDateRangeStart": null,
"ExpectDateRangeEnd": null,
"RouteID": "",
"ChunkStartPointer": "",
"RecordFetchLimit": ""
}
}
Sample Response
{
"response": {
"PickFilesDisplayResponse": {
"dsPicksResponse": {
"dtPickResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300153611,
"PickIDList": "0000133076",
"ShipmentNumber": 1,
"CustomerID": "HAR01",
"ShipToSequence": 2,
"StopNumber": 0,
"CreatedBy": "lharris",
"CreatedDate": "2023-01-13",
"CreatedTime": "13:32:24",
"ExpectedDate": "2023-01-16",
"PayTermsCode": "COD",
"RouteID": "",
"SaleType": "wh",
"SOStatusFlag": "Partial",
"SOHeaderType": "SO",
"ShipVia": "Our Truck",
"TaxDescription": "IA|IA_GRUNDY|IA_GRUNDY_REINBECK|IA_GRUNDY__SILO",
"TaxTotalPercent": "6|1|0|0",
"PickTotal": 214,
"PickTaxAmount": 14,
"ShipToAddress1": "906 Park Street",
"ShipToAddress2": "Suite 234",
"ShipToAddress3": "P O Box 32211",
"ShipToCity": "Reinbeck",
"ShipToState": "IA",
"ShipToZip": "50669",
"ShipToCountry": "USA",
"ShipToName": "Harris Corporation S2",
"ShipToMisc1": "B Thomas",
"ShipToMisc2": "",
"ShipToMisc3": "",
"ShipToMisc4": "",
"ShipToMisc5": "",
"ShipToMisc6": "",
"ShipToMisc7": "42.3236° N",
"ShipToMisc8": "92.5994° W",
"ShipToMisc9": "",
"ShipToMisc10": "",
"ShipToMisc11": "",
"ShipToMisc12": "",
"ShipToMiscDate1": null,
"ShipToMiscDate2": null,
"ShipToPhone": "(402)-330-6620",
"ShipToShippingDate": "",
"ShipToTrackingNumber": "",
"PickCostTotal": 1198.45,
"PickCostType": "Item default",
"TotalWeight": 20,
"TotalLoad": 20,
"CustomerPO": "",
"ContactName": "1",
"ContactPhone": " ",
"ContactEmail": "",
"PickRecordSequence": 1,
"WMSPickHeaderStatusCode": "",
"WMSPickHeaderStatusDescription": "",
"FreightTermsCode": "",
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"ShippingTrackingDelvInstructions": "",
"ShippingTrackingSignatureReq": false,
"CustomerName": "Harris Corporation Internation",
"TransactionReference": "89347-PY",
"TransactionJob": "1435-PPL",
"OrderedBy": "Daniel Jacob",
"OrderDate": "2023-01-13",
"APISourceID": "",
"SalesAgentID1": "0524",
"SalesAgentName1": "AP Keaton",
"SalesAgent1PctOfOrder": 50,
"SalesAgentID2": "002",
"SalesAgentName2": "James Harrison",
"SalesAgent2PctOfOrder": 50,
"SalesAgentID3": "",
"SalesAgentName3": "",
"SalesAgent3PctOfOrder": 0,
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgent4PctOfOrder": 0,
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgent5PctOfOrder": 0,
"SalesAgentID6": "",
"SalesAgentName6": "",
"SalesAgent6PctOfOrder": 0,
"TaxCode": "IA_GRUNDY_REINBECK",
"Taxable": true,
"dtPickDetailResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300153611,
"PickID": 133076,
"ShipmentNumber": 1,
"DetailSequence": 1,
"ItemCode": "2827",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
"PickStatus": "Open",
"TotalOrderedQuantity": 10,
"OrderedQuantityUOM": "BAG",
"TotalRequestedQuantity": 20,
"TotalAdjustedQuantity": 0,
"NetQuantity": 20,
"TotalPickedQuantity": 0,
"PickedQuantityUOM": "EA",
"AdjustmentType": "",
"Price": 10,
"PriceUOM": "EA",
"ExtendedPrice": 200,
"MSDS": "",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"ExtraDiscount1": 0,
"ExtraDiscount2": 0,
"ExtraDiscount3": 0,
"ExtWeight": 20,
"ExtLoad": 20,
"ExtCost": 1198.45,
"ItemSize": "",
"ItemDescription": "Zinc-Plated Hex Lag Screw Indoor/Outdoor",
"DispatchID": "",
"Picker": "",
"PickRecordSequence": 1,
"WMSPickDetailStatusCode": "",
"WMSPickDetailStatusDescription": "",
"TotalWMSPickedQuantity": 0,
"HazMatFlag": false,
"ContainerLength": 0,
"ContainerWidth": 0,
"ContainerHeight": 0
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns header and detail information for sales order pick files, associated with a customer, specific sales order, specific pick file id, route id or date range
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- Must also include one of the following:
OrderID
PickID
CustomerID
RouteID
ExpectDateRangeStart
ExpectDateRangeEnd
OrderID
ShipmentNumber
PickID
ShipToSequence
ChunkStartPointer
RecordFetchLimit
Optional Inputs
RouteID
Response
- ReturnCode
MessageText
- list of pick files including their details
Notes
- Method can be requested for a specific customer, specific customer and ship-to, a specific sales order, a specific shipment for a specific sales order, a specific route or a specific date range.
- This method allows a user to request a specific number of records. Please see the Data-Chunking topic for more information
ContainerLength
,ContainerWidth
andContainerHeight
are retrieved from the primary item supplier recordHazMatFlag
is based on the BOL code assigned to the item in Item Maintenance
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
CustomerID
come from CustomersList or CustomerShiptoList. - Valid values for
ShipToSequence
come from CustomerShiptoList. - Valid values for
OrderID
come from SalesOrderList - Valid values for
OrderID
and relatedShipmentNum
come from ShipmentsList. - Valid values for
PickID
come from this method used in a circular way. - There is a Parent/Child relationship between
dtPickResponse
anddtPickDetailResponse
throughOrderID
,PickID
andShipmentNum
Version Deployed
v540; WMSPickHeader
fields added in v547, ShippingService
fields added in v555; ShippingTrackingSignatureReq
field added in v600
PODSignatureCreate
Sample Request
{
"request": {
"PODSignatureCreateJSON": {
"dsPODSignatureCreate": {
"dtPODSignatureCreate": [
{
"TranType": "SO",
"TranID": 12345,
"ShipmentNum": "1",
"ImageData": "/9j/4AAQAD/tihT/b4L/CrU4xC+IDi++/9k=",
"ImageInfo": "John Hancock"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates signatures for sales order shipments and credit memo transactions in the branch the user is logged into from a Proof of Delivery (POD) app
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
- Following fields in
SignatureCreateJSON
:TranID
,TranType
,ImageData
signature image converted to Base64),PODSignature
,ShipmentNum
(for sales orders)
Optional Inputs
ImageInfo
(typically, text representation of signature)
Response
- ReturnCode
MessageText
Notes
- Valid values for
TranType
are CM, Credit Memo, SO, and Sales Order ImageData
is the image of the signature converted to Base64
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v554
ShipmentInfoUpdate
Sample Request
{
"request": {
"OrderID": 283958,
"ShipmentInfoRequestJSON": {
"dsShipInfoRequest": {
"dtShipInfoRequest": [
{
"ShipmentNumber": 1,
"UpdateAllPickFiles": false,
"UpdateSalesOrder": true,
"RouteID": "SO Friday",
"StopNumber": 1,
"ShipDate": "2019-12-12",
"RequestedDeliveryDate": "2018-12-12",
"ShipmentStatusFlag": "L"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates specific fields related to shipment information
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
OrderID
ShipmentNumber
UpdateAllPickFiles
Optional Inputs
UpdateSalesOrder
RouteID
StopNumber
ShipDate
RequestedDeliveryDate
ShipmentStatusFlag
Response
- ReturnCode
MessageText
Notes
- The options of
UpdateAllPickFiles
andUpdateSalesOrder
are used when the information being updated should apply to these records as well ShipmentNumber
can be specified as 0 to indicate the sales order header instead of a specific shipment- With Agility v553, to update sales order header fields instead of a specific shipment,
ShipmentNumber
must be set to 0 and the sales order cannot have a staged status
- With Agility v553, to update sales order header fields instead of a specific shipment,
ShipmentStatusFlag
can be entered in either of the following formats:- Loaded or L
- Staged or S
- En Route or E
- Delivered of D
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- Valid values for
OrderID
and/orShipmentNumber
come from ShipmentsList
Version Deployed
v534; ShipmentStatusFlag added v553
ShipmentsList
Sample Request
{
"request": {
"dsShipmentDisplayRequest": {
"dtShipmentDisplayRequest": [
{
"OrderID": 283958,
"ShipmentNumber": 1,
"CustomerID": "12345",
"ShipToSequence": 1,
"ExpectDateRangeStart": null,
"ExpectDateRangeEnd": null,
"RouteID": "",
"StatusFlagList": "",
"ChunkStartPointer": 0,
"RecordFetchLimit": 0
}
]
}
}
}
Sample Response
{
"response": {
"ShipmentDisplayResponse": {
"dsShipmentDisplayResponse": {
"dtShipmentDisplayResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"CustomerID": "HAR01",
"ShipToSequence": 1,
"StopNum": 0,
"CreatedBy": "lharris",
"CreatedDate": "2022-02-23",
"CreatedTime": "17:44:36",
"ExpectedDate": "2022-02-24",
"InvoiceDate": null,
"PayTermsCode": "eas",
"RouteID": "",
"SaleType": "wh",
"ShipDate": "2022-02-23",
"StatusFlag": "Staged",
"ShipHdrType": "SO",
"ShipVia": "Our Truck",
"TaxDescription": "",
"TaxTotPercent": "",
"ShipmentCharges": 26.5,
"ShipmentTotal": 3256.5,
"ShipmentTaxAmount": 0,
"ShipmentAfterDeductFreightAmt": 0,
"ShipToAddress1": "111 SW Avenue",
"ShipToAddress2": "Suite 111",
"ShipToAddress3": "P O Box 11111",
"ShipToCity": "Omaha",
"ShipToState": "NE",
"ShipToZip": "68046 1111",
"ShipToCountry": "USA",
"ShipToName": "Harris Corporation S1",
"ShipToMisc1": "B Thomas",
"ShipToMisc2": "",
"ShipToMisc3": "",
"ShipToMisc4": "",
"ShipToMisc5": "",
"ShipToMisc6": "",
"ShipToMisc7": "41.2524° N",
"ShipToMisc8": "95.9980° W",
"ShipToMisc9": "",
"ShipToMisc10": "",
"ShipToMisc11": "",
"ShipToMisc12": "",
"ShipToMiscDate1": null,
"ShipToMiscDate2": null,
"ShipToPhone": "(402)-330-6620",
"ShipToShippingDate": "",
"ShipToTrackingNumber": "",
"ShipmentCostTotal": 801.38,
"ShipmentCostType": "Item default",
"TotalWeight": 225,
"TotalLoad": 265,
"CustomerPO": "",
"ContactName": "Mr. Frankenstein the Monster!!",
"ContactPhone": " ",
"ContactEmail": "",
"ShippingTrackingSignatureReq": false,
"ShippingTrackingDelvInstructions": "",
"ShippingTrackingInsuranceReq": false,
"ShippingTrackingSaturdayDelivery": false,
"ShippingTrackingSundayDelivery": false,
"PricedPickDelivery": false,
"ShipmentTotalDue": 0,
"FreightTerms": "",
"CustomerName": "Harris Corporation",
"TransactionReference": "",
"TransactionJob": "",
"OrderedBy": "",
"OrderDate": "2022-02-23",
"APISourceID": "",
"SalesAgentID1": "026",
"SalesAgentName1": "Frank Pike",
"SalesAgent1PctOfOrder": 0,
"SalesAgentID2": "",
"SalesAgentName2": "",
"SalesAgent2PctOfOrder": 0,
"SalesAgentID3": "testdmsi",
"SalesAgentName3": "John Smith",
"SalesAgent3PctOfOrder": 0,
"SalesAgentID4": "",
"SalesAgentName4": "",
"SalesAgent4PctOfOrder": 0,
"SalesAgentID5": "",
"SalesAgentName5": "",
"SalesAgent5PctOfOrder": 0,
"SalesAgentID6": "",
"SalesAgentName6": "",
"SalesAgent6PctOfOrder": 0,
"TaxCode": "",
"Taxable": false,
"dtTrackingHeaderResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 1,
"DispatchID": 333025556,
"TrackingNumber": "3",
"ContainerWeight": 200,
"ContainerWeightUOM": "LB",
"ContainerLength": 7,
"ContainerWidth": 8,
"ContainerHeight": 5
},
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 2,
"DispatchID": 333025556,
"TrackingNumber": "7",
"ContainerWeight": 25,
"ContainerWeightUOM": "LB",
"ContainerLength": 8,
"ContainerWidth": 9,
"ContainerHeight": 10
}
],
"dtShipmentDisplayResponseDetail": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 1,
"ItemCode": "90645",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
"TotalOrderedQuantity": 5,
"OrderedQuantityUOM": "BOX",
"TotalStagedQuantity": 5,
"StagedQuantityUOM": "BOX",
"Price": 62,
"PriceUOM": "EA",
"ExtendedPrice": 2480,
"MSDS": "MSDSA",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"ExtraDiscount1": 0,
"ExtraDiscount2": 0,
"ExtraDiscount3": 0,
"ExtWeight": 200,
"ExtLoad": 240,
"ExtCost": 408,
"ItemSize": "70” x 60” x 8”",
"ItemDescription": "Swimline Pool Pizza Slice Inflatable",
"CustomerPOLineNumber": "000001",
"HazMatFlag": false,
"OriginalPrice": 62,
"OriginalPriceUOM": "EA",
"OriginalOrderedQty": 5,
"OriginalOrderedQtyUOM": "BOX",
"ExtendedDescription": "1 person float\nPizza design\nCan be connected to second slice",
"PartNumber": "90645-HAR01-All",
"PrimarySupplierContainerLength": 12,
"PrimarySupplierContainerWidth": 10,
"PrimarySupplierContainerHeight": 5,
"ItemXrefUsedToOrder": "",
"dtSerialNumberDetailResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 1,
"Quantity": 0,
"SerialNumber": "8-98",
"SerialNumber2": ""
}
]
},
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 2,
"ItemCode": "90641",
"ItemMisc1Label": "",
"ItemMisc1Value": "",
"ItemMisc2Label": "",
"ItemMisc2Value": "",
"ItemMisc3Label": "",
"ItemMisc3Value": "",
"ItemMisc4Label": "",
"ItemMisc4Value": "",
"ItemMisc5Label": "",
"ItemMisc5Value": "",
"ItemMisc6Label": "",
"ItemMisc6Value": "",
"ItemMisc7Label": "",
"ItemMisc7Value": "",
"ItemMisc8Label": "",
"ItemMisc8Value": "",
"ItemMisc9Label": "",
"ItemMisc9Value": "",
"ItemMisc10Label": "",
"ItemMisc10Value": "",
"ItemMisc11Label": "",
"ItemMisc11Value": "",
"ItemMisc12Label": "",
"ItemMisc12Value": "",
"ItemMisc13Label": "",
"ItemMisc13Value": "",
"ItemMisc14Label": "",
"ItemMisc14Value": "",
"ItemMisc15Label": "",
"ItemMisc15Value": "",
"ItemMisc16Label": "",
"ItemMisc16Value": "",
"ItemMisc17Label": "",
"ItemMisc17Value": "",
"ItemMisc18Label": "",
"ItemMisc18Value": "",
"ItemMisc19Label": "",
"ItemMisc19Value": "",
"ItemMisc20Label": "",
"ItemMisc20Value": "",
"TotalOrderedQuantity": 5,
"OrderedQuantityUOM": "BOX",
"TotalStagedQuantity": 5,
"StagedQuantityUOM": "BOX",
"Price": 30,
"PriceUOM": "EA",
"ExtendedPrice": 750,
"MSDS": "",
"Discount1": 0,
"Discount2": 0,
"Discount3": 0,
"ExtraDiscount1": 0,
"ExtraDiscount2": 0,
"ExtraDiscount3": 0,
"ExtWeight": 25,
"ExtLoad": 25,
"ExtCost": 393.38,
"ItemSize": "70” x 60” x 8”",
"ItemDescription": "Swimline Pool Swan inflatable",
"CustomerPOLineNumber": "000002",
"HazMatFlag": true,
"OriginalPrice": 30,
"OriginalPriceUOM": "EA",
"OriginalOrderedQty": 5,
"OriginalOrderedQtyUOM": "BOX",
"ExtendedDescription": "2 person float\nSwan design\nCan be connected to second slice",
"PartNumber": "90641-HAR01-CUST-UPC",
"PrimarySupplierContainerLength": 453,
"PrimarySupplierContainerWidth": 65,
"PrimarySupplierContainerHeight": 652.99,
"ItemXrefUsedToOrder": "",
"dtSerialNumberDetailResponse": [
{
"BranchID": "CENTRALBRNCH",
"OrderID": 300152594,
"ShipmentNum": 1,
"Sequence": 2,
"Quantity": 0,
"SerialNumber": "458+3",
"SerialNumber2": ""
}
]
}
]
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of shipments, including details, associated with a customer or specific sales order
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
One or more of the following are required for a valid request: CustomerID
, OrderID
, RouteID
, or ExpectDateRangeStart
and ExpectDateRangeEnd
Optional Inputs
StatusFlagList
ShipmentNumber
ShipToSequence
RecordFetchLimit
ChunkStartPointer
Response
- ReturnCode
MessageText
- list of open shipments
Notes
- Method can be requested for a specific customer, specific customer and ship-to or for a specific sales order.
- If searching by
CustomerID
, entering 0 for theShipToSequence
returns information at the sold-to level StatusFlagList
can be entered in either of the following formats:- Loaded or L
- Staged or S
- En Route or E
- Delivered or D
- Invoiced or I
- This method allows a user to request a specific number of records. Please see the Data-Chunking topic for more information
- The
ShipmentTotalDue
returned in thedtShipmentDisplayResponse
is populated only for C.O.D. orders where the ‘Priced pick & delivery’ field is set. - The following rule applies when displaying shipping tracking information:
- When the Sequence = 0, the tracking information is stored on the shipment header
- When the Sequence is not 0, the tracking information is stored on the shipment detail sequence specified
- The system displays tracking information at the lowest level. For example, if a tracking number exists at the shipment header and another exists at the shipment detail, the system only displays the detail tracking number. If tracking numbers only exist at the shipment header, then the system displays these tracking numbers.
- A one to many Parent/Child relationship exists between
dtShipmentDisplayResponse
anddtTrackingHeaderResponse
through OrderID. - A one to many Parent/Child relationship exists between
dtShipmentDisplayResponse
Detail anddtSerialNumberDetailResponse
through Sequence. - The
PartNumber
displays the part number stored on the so_detail. If this is blank, then the system searches for the related cross reference. If a single dimension was placed on the order, the dimension cross reference will be returned.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
- There is a Parent/Child relationship between
dtShipment
anddtShipmentDetail
throughOrderID
andShipmentNumber
- The
ItemXrefUsedToOrder
displays the item cross reference field from the Sales order detail.
Version Deployed
v534; tracking fields added in v556; additional tracking fields added in v600
ShippingHistoryCreate
Sample Request
{
"request": {
"TranType": "DP",
"TranID": "333027154",
"ShipmentStage": "Ready",
"ShippingHistoryCreateJSON": {
"dsShippingHistoryCreate": {
"dtShippingHistoryCreate": [
{
"TranDispatchID": "333027163",
"ShipmentNumber": "2",
"AutoAssignDateTimeBy": true,
"StageBy": "RKE",
"StageDate": "2024-10-25",
"StageTime": "09:21",
"StageTimeZone": "CST",
"CurrentStage": true
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates shipping history record for various transaction types
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranType
TranID
ShipmentStage
Optional Inputs
TranDispatchID
ShipmentNumber
AutoAssignDateTimeBy
StageBy
StageDate
StageTime
StageTimeZone
CurrentStage
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Valid TranType values
- DP
- SO
- PO
- SR
- RI
- RO
- CM
ShipmentStage
value must be a valid Shipment Stage in Agility- Shipping history record may be created for a standalone dispatch, standalone transaction, or a transaction associated with a dispatch. Once a transaction is associated with a dispatch, you cannot create a shipping history record for the standalone transaction.
ShipmentNumber
tag is required when creating a record for a transaction associated with a shipment on a dispatch or when the transaction is a reman input (RI) or reman output (RO). If creating for a standalone transaction (not on a dispatch, reman input, or reman output) theShipmentNumber
will be ignored.- If a transaction is associated with a dispatch, the optional
TranDispatchID
tag must be included - Do not include the
TranDispatchID
tag when creating a record for a standalone dispatch or standalone transaction - Include the
TranDispatchID
tag when creating a for a transaction associated with a dispatch - API fails if the StageTime tag is sent and the
StageDate
tag is not sent - If the
StageDate
,StageTime
, andStageBy
tags are sent, the values will be used to create the record even if theAutoAssignDateTimeBy
tag is ‘true’ StageTime
value must be military time between 00:00 and 24:00- The
StageDate
,StageTime
andStageTimeZone
values will be converted and stored based on the server’s time zone and displayed in the branch’s time zone in the Shipping History window in Agility
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v612
ShippingHistoryDelete
Sample Request
{
"request": {
"TranType": "PO",
"TranID": 440063254,
"ShipmentStage": "Delivered",
"ShippingHistoryDeleteJSON": {
"dsShippingHistoryDelete": {
"dtShippingHistoryDelete": [
{
"TranDispatchID": 333027151,
"ShipmentNumber": 0
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": null,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Deletes an existing shipping history record for various transaction types
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranType
TranID
ShipmentStage
Optional Inputs
TranDispatchID
ShipmentNumber
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Valid TranType values
- DP
- SO
- PO
- SR
- RI
- RO
- CM
ShipmentStage
value must be a valid Shipment Stage in Agility- For a single shipping history record for the dispatch/transaction sent, delete that record
- The shipping history record cannot be deleted if there are multiple shipping history records for the dispatch/transaction and the Current stage is set to ‘Yes’ for the record being deleted
ShipmentNumber
tag is required when deleting a record for a transaction associated with a shipment on a dispatch or when the transaction is a reman input (RI) or reman output (RO). If deleting for a standalone transaction (not on a dispatch, reman input, or reman output) theShipmentNumber
will be ignored.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v612
ShippingHistoryGet
Sample Request
{
"request": {
"TranType": "PO",
"TranID": 440063254,
"ShippingHistoryGetJSON": {
"dsShippingHistoryRequest": {
"dtShippingHistoryRequest": [
{
"TranDispatchID": 333027151,
"ShipmentNumber": 0
}
]
}
}
}
}
Sample Response
{
"response": {
"ShippingHistoryResponse": {
"dsShippingHistoryResponse": {
"dtShippingHistoryResponse": [
{
"TranBranch": "CENTRALBRNCH",
"DispatchBranch": "CENTRALBRNCH",
"TranType": "PO",
"TranID": 440063254,
"ShipmentStage": "Acknowledged",
"TranDispatchID": 333027151,
"ShipmentNumber": 0,
"StageBy": "123456789012345678901234567890",
"StageDate": "2024-10-21",
"StageTime": "04:00",
"StageTimeZone": "CST",
"CurrentStage": true
},
{
"TranBranch": "CENTRALBRNCH",
"DispatchBranch": "CENTRALBRNCH",
"TranType": "PO",
"TranID": 440063254,
"ShipmentNumber": 0,
"TranDispatchID": 333027151,
"ShipmentStage": "Delivered",
"StageBy": "123456789012345678901234567890",
"StageDate": "2024-10-21",
"StageTime": "04:00",
"StageTimeZone": "CST",
"CurrentStage": true
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
View shipping history records for various transaction types
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranType
TranID
Optional Inputs
TranDispatchID
ShipmentNumber
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Valid TranType values
- DP
- SO
- PO
- SR
- RI
- RO
- CM
TranDispatchID
tag is required to return a record where a transaction is associated with a dispatch
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v612
ShippingHistoryUpdate
Sample Request
{
"request": {
"TranType": "SO",
"TranID": "300164822",
"ShipmentStage": "Enroute",
"ShippingHistoryUpdateJSON": {
"dsShippingHistoryCreate": {
"dtShippingHistoryCreate": [
{
"TranDispatchID": "333027164",
"ShipmentNumber": "",
"AutoAssignDateTimeBy": true,
"StageBy": "",
"StageDate": "",
"StageTime": "",
"StageTimeZone": "",
"CurrentStage": true
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates an existing shipping history record for various transaction types
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranType
TranID
ShipmentStage
Optional Inputs
TranDispatchID
ShipmentNumber
AutoAssignDateTimeBy
StageBy
StageDate
StageTime
StageTimeZone
CurrentStage
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Valid TranType values
- DP
- SO
- PO
- SR
- RI
- RO
- CM
ShipmentStage
value must be a valid Shipment Stage in Agility- Shipping history record may be updated for a standalone dispatch, standalone transaction, or transaction associated with a dispatch that is already created.
- One shipping history record can be updated per request
ShipmentNumber
tag is required when updating a record for a transaction associated with a shipment on a dispatch or when the transaction is a reman input (RI) or reman output (RO). If updating for a standalone transaction (not on a dispatch, reman input, or reman output) theShipmentNumber
will be ignored.- If a transaction is associated with a dispatch, the optional
TranDispatchID
tag must be included - Do not include the
TranDispatchID
tag when updating a record for a standalone dispatch or standalone transaction - Include the
TranDispatchID
tag when updating a for a transaction associated with a dispatch - API fails if the
StageTime
tag is sent and theStageDate
tag is not sent - If the
StageDate
,StageTime
, andStageBy
tags are sent, the values will be used to update the record even if theAutoAssignDateTimeBy
tag is ‘true’ - The
StageDate
,StageTime
andTimeZone
values will be converted and stored based on the server’s time zone and displayed in the branch’s time zone in the Shipping History window in Agility
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v612
ShippingStatusGet
Sample Request
{
"request": {
"SalesOrderID": 3171,
"ShipmentNum": 1
}
}
Sample Response
{
"response": {
"ShippingStatusResponse": {
"dsShippingStatus": {
"dtShippingStatus": [
{
"ShippingStatus": "Shipment"
}
]
}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns status of sales order shipment
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
ShipmentNum
Optional Inputs
- N/A
Response
ShippingStatus
- ReturnCode
MessageText
Notes
Returns the status of the sales order shipment
- Pickfile
- Shipment
Relationships
ContextId
andBranch
come from Login
Version Deployed
v600
ShippingTrackingDelete
Sample Request
{
"request": {
"TranID": 440061845,
"TranType": "SR",
"ShipmentNumber": 0,
"TrackingDeleteRequestJSON": {
"dsTrackingDeleteRequest": {
"dtTrackingDeleteRequest": [
{
"TrackingNumber": "Container A"
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Delete shipping tracking information assigned to a sales order shipment or supplier return
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
TranID
TranType
ShipmentNumber
TrackingNumber
Optional Inputs
- Remaining fields in the
dtTrackingDeleteRequest
Response
- ReturnCode
MessageText
Notes
- Valid input values for the
TranType
field include 'SO' and 'SR' - When deleting tracking information for a supplier return ('SR'), the
ShipmentNumber
in the request must be set to zero. - The following rules apply to deleting shipment tracking information
- If the requesting transaction is invoiced or canceled, a failure occurs
- If the requesting sales order shipment is invoiced, a failure occurs
- If an open dispatch is not found for the sales order shipment or supplier return, a failure occurs
- If the requesting transaction is found on multiple dispatch transactions, a failure occurs
- If the tracking number isn’t assigned to any details and more than one transaction is on the same dispatch, a failure occurs
- If the tracking number is assigned to transaction details for multiple transactions on the same dispatch, a failure occurs
- When the carrier assigned to the dispatch transaction is the default carrier assigned in Branch Parameters, and all containers are removed from the dispatch, and there are no other transactions on the dispatch the dispatch is deleted. If the carrier is not the default carrier assigned in Branch Parameters the dispatch is canceled.
Relationships
ContextId
andBranch
come from Login- Valid values for
SalesOrderID
andShipmentNumber
come from ShipmentsList
Version Deployed
v600
ShippingTrackingUpdateByPick
Sample Request
{
"request": {
"SalesOrderID": 2527,
"PickID": 182,
"ShippingTrackingUpdateJSON": {
"dsShipmentUpdateSettings": {
"dtShipmentUpdateSettings": [
{
"ShipVia": "FedEx",
"ShipDate": "2022-02-27",
"ShipmentStatusFlag": "E",
"ShipmentCharge": 75,
"ShipmentCost": 60
}
]
},
"dsTrackingDetailRequest": {
"dtTrackingDetailRequest": [
{
"TrackingNumber": "1Z63Y0A70343875012",
"ContainerWeight": 9.1,
"ContainerWeightUOM": "LB",
"ContainerLength": 24,
"ContainerWidth": 18,
"ContainerHeight": 12,
"dtTrackingDetailItemRequest": [
{
"ItemCode": "PB4-60",
"DetailSequence": 1,
"Quantity": 1,
"QtyUOM": "EA"
}
]
},
{
"TrackingNumber": "1Z81R9840347017040",
"ContainerWeight": 87.25,
"ContainerWeightUOM": "LB",
"ContainerLength": 1,
"ContainerWidth": 2,
"ContainerHeight": 3,
"dtTrackingDetailItemRequest": [
{
"ItemCode": "EC-160301",
"DetailSequence": 2,
"Quantity": 1,
"QtyUOM": "EA"
},
{
"ItemCode": "W3T-CELL",
"DetailSequence": 3,
"Quantity": 3,
"QtyUOM": "BAG"
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a shipments based off a resolved pick ID and stores tracking information for the shipment on an auto-created dispatch transaction
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
PickID
TrackingNumber
Optional Inputs
- Remaining fields in the
dtShipmentUpdateSettings
,dtTrackingDetailRequest
, anddtTrackingDetailItemRequest
Response
- ReturnCode
MessageText
Notes
- A sales order shipment is created and a dispatch transaction for the shipment is auto generated when the following criteria are met:
- Items for the tracking number are fully resolved in the pick file
Dispatch
is not assigned to the pick ID or sales order- A default carrier is assigned in Branch parameters
TrackingNumber
does not exceed 30 characters- Sales order is not on credit hold or has credit approval pending
- Order is ship complete and has multiple pick files
- In the event Transaction Criteria Order Restriction Exception records exist for items in the pick file, the date range specified on the exception record must include the current date
- This method contains a parent/child relationship between the
dsTrackingDetailRequest
and theSalesOrder
andPickID
. Please see Parent/Child relationship topic for more information - There is a many to one relationship between the
dsTrackingDetailRequest
andSalesOrderID
andPickID
as the method allows the input of multiple tracking numbers. - Valid values for
ContainerWeightUOM
: LB, KG. If this field is not sent, the system defaults to a UOM of LB. - The
PickID
value cannot contain any leading zeroes. The following rules apply to the
ShipVia
tag:- If a valid ship via is sent in the request, the sales order header ship via is updated with this value on creating the shipment. Because the ship via change may trigger other changes on the order, such as a change in tax calculations, review any order information as needed.
- If an invalid or inactive ship via is sent in the request, a failure occurs.
- If a blank value is sent for the ship via, no change occurs to the sales order header ship via.
- If the
ShipVia
tag is not sent in the request, no change occurs to the sales order header ship via.
The following rules apply to the valid values for
ShipmentStatusFlag
tag: - The shipment status is updated based on the following valid values forShipmentStatusFlag
:- Loaded or L
- Staged or S
- En Route or E
- Delivered or D - If an invalid or blank value is sent for the
ShipmentStatusFlag
or if theShipmentStatusFlag
is not sent, the system reads the customer branch ship-to Shipment Status setting. If a customer branch ship-to does not exist, then the system reads the customer ship-to Shipment Status setting.
A customer charge or order cost are applied to the shipment when the following criteria are met:
ShipmentCharge
andShipmentCost
must be a positive amount.- Shipping/Tracking service on the
ShipVia
sent or on the order’s Ship Via when theShipVia
is not sent matches the Shipping/Tracking service on a customer charge or order cost. - Applies per on the customer charge or order cost is set to Order.
- If more than one customer charge or order cost applies, the system uses the customer charge or order cost with the specified sale type.
- If more than one customer charge or order cost applies with the same sale type setting, the system uses the first record alphanumerically.
- If the same customer charge or order cost already exists on a prior shipment, the total amount for the order is increased and the prior shipment is unaffected.
This method contains a parent/child relationship between the
dtTrackingDetailItemRequest
and theTrackingNumber
. Please see Parent/Child relationship topic for more informationThere is a many to one relationship between the
dtTrackingDetailItemRequest
and theTrackingNumber
as the method allows you the option to specify items for each tracking number. - When multipleTrackingNumbers
are sent in without thedtTrackingDetailItemRequest
, the tracking information is stored at the shipment level on the auto generated dispatch transaction. - When a singleTrackingNumber
is sent in without thedtTrackingDetailItemRequest
, the tracking information is stored at the item level for all items within the pick file. - When aTrackingNumber
is sent in withdtTrackingDetailItemRequest
fields, the tracking information is stored at the shipment/item level on the auto generated dispatch transaction.- Each item within the pick file must be specified in the
dtTrackingDetailItemRequest
in order to save tracking information at the item level.
- Each item within the pick file must be specified in the
The following rules apply when sending multiple tracking numbers in a single request
- The
dtTrackingDetailItemRequest
must be excluded from the request to save all tracking numbers at the shipment level. - The
dtTrackingDetailItemRequest
must be included for each tracking number to save all tracking numbers at the shipment/item level. - The system does not allow some tracking numbers to include
dtTrackingItemDetailRequest
and others to excludedtTrackingItemDetailRequest
tags in a single request
- The
If multiple resolved pick files exist on the sales order specified in the request, the system updates the
ShipmentNumber
on the sales order’s remaining resolved pick files. Use the PickFileList in this scenario to capture the most currentShipmentNumber
associated with anPickID
.An S856 ASN is auto created when the customer ship-to is set to send S856 ASNs.
If the customer ship-to is not set to use the S856 ASN, a printed ASN report is auto created if the customer ship-to record is set to ‘Auto send ASN with WMS shipment and shipping tracking API’s’.
Relationships
ContextId
andBranch
come from Login- Valid values for
OrderId
,PickID
and fields within thedtTrackingDetailItemRequest
come from PickFileList
Version Deployed
v555
ShippingTrackingUpdateByShipment
Sample Request
{
"request": {
"SalesOrderID": 300153494,
"ShipmentNumber": 8,
"ShippingTrackingUpdateByShipJSON": {
"dsShipmentUpdateByShipSettings": {
"dtShipmentUpdateByShipSettings": [
{
"ShipVia": "BUS",
"ShipDate": "2022-07-14",
"ShipmentStatusFlag": "D",
"ShipmentCost": 10,
"ShipmentCharge": 20
}
]
},
"dsTrackingDetailByShipRequest": {
"dtTrackingDetailByShipRequest": [
{
"TrackingNumber": "1S7V5470",
"ContainerWeight": 32.75,
"ContainerWeightUOM": "LB",
"ContainerLength": 17,
"ContainerWidth": 24,
"ContainerHeight": 24,
"dtTrackingDtlByShipItemRequest": [
{
"ItemCode": "90641",
"DetailSequence": 1,
"Quantity": 1,
"QtyUOM": "EA"
}
]
},
{
"TrackingNumber": "1EZ6338750",
"ContainerWeight": 9.5,
"ContainerWeightUOM": "LB",
"ContainerLength": 18,
"ContainerWidth": 18,
"ContainerHeight": 18,
"dtTrackingDtlByShipItemRequest": [
{
"ItemCode": "90641",
"DetailSequence": 1,
"Quantity": 1,
"QtyUOM": "ea"
}
]
}
]
}
}
}
}
Sample Response
{
"response": {
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Allow updates to container/tracking information for a shipment
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SalesOrderID
ShipmentNumber
TrackingNumber
Optional Inputs
- Remaining fields in the
dtShipmentUpdateByShipSettings
,dtTrackingDetailByShipRequest
, anddtTrackingDtlByShipItemRequest
Response
- ReturnCode
MessageText
Notes
- This method contains a parent/child relationship between the
dsTrackingDetailByShipRequest
and theSalesOrderID
andShipmentNumber
. Please see Parent/Child relationship topic for more information - There is a many to one relationship between the
dsTrackingDetailByShipRequest
andSalesOrderID
andShipmentNumber
as the method allows the input of multiple tracking numbers. - Valid values for
ContainerWeightUOM
: LB, KG. If this field is not sent, the system defaults to a UOM of LB. - The following rules apply to the
ShipVia
tag:- If a valid ship via is sent in the request, the sales order header ship via is updated with this value. Because the ship via change may trigger other changes on the order, such as a change in tax calculations, review any order information as needed.
- If an invalid or inactive ship via is sent in the request, a failure occurs.
- If a blank value is sent for the ship via, no change occurs to the sales order header ship via.
- If the
ShipVia
tag is not sent in the request, no change occurs to the sales order header ship via.
- The following rules apply to the valid values for
ShipmentStatusFlag
tag:- The shipment status is updated based on receiving one of the following values in the
ShipmentStatusFlag
request field: - Loaded or L
- Staged or S
- En Route or E
- Delivered or D
- If an invalid value is sent in the
ShipmentStatusFlag
request, a failure occurs.
- The shipment status is updated based on receiving one of the following values in the
- A customer charge or order cost is applied to the shipment when the following criteria are met:
- If the
ShipmentCharge
and/orShipmentCost
is a positive amount - If a Shipping/Tracking service assigned to the Ship via assigned to the sales order header matches the Shipping/Tracking service assigned to a customer charge or order cost within Agility.
- Applies per on the customer charge or order cost is set to Order.
- If more than one customer charge or order cost applies, the system uses the customer charge or order cost with the specified sale type.
- If more than one customer charge or order cost applies with the same sale type setting, the system uses the first record found.
- If the same customer charge or order cost already exists on the shipment, the charge and/or cost amount is overridden with the new value received.
- If the
- A dispatch transaction, is created for the shipment if one does not already exist.
- When a
TrackingNumber
is sent in with items specified in thedtTrackingDtlByShipItemRequest
, dispatch details are created only for the shipment items and quantities received. - When a
TrackingNumber
is sent without items specified, dispatch details are created for all shipment items and quantities, with no containers assigned at the item level. - When creating a new dispatch transaction an EDI S856 ASN is auto generated for the dispatch transaction if set to generate on the EDI Customer Reference Maintenance screen.
- The system does not auto process for the EDI ASN when updating an existing dispatch transaction.
- When a
- When tracking information is received for a shipment that has already been dispatched, the existing dispatch transaction is updated.
- If a shipment is assigned to more than one dispatch, the method fails
- If the
TrackingNumber
sent is already assigned to the dispatch, the method fails. - If container information is assigned by detail on the existing dispatch, the request must be sent in with the
dtTrackingDtlByShipItemRequest
fields. - When a
TrackingNumber
is sent in withdtTrackingDtlByShipItemRequest
fields, the quantity received for an item cannot be more than the accumulated total of what remains to be dispatched plus any dispatched quantities not previously assigned to a container for that shipment.
- This method contains a parent/child relationship between the
dtTrackingDetailByShipRequest
and theTrackingNumber
. Please see Parent/Child relationship topic for more information. - There is a many to one relationship between the
dtTrackingDtlByShipItemRequest
and theTrackingNumber
as the method allows you the option to specify item(s) for each tracking number. - When multiple
TrackingNumbers
are sent in without thedtTrackingDtlByShipItemRequest
, the tracking information is stored at the shipment level on the dispatch transaction. - When a single
TrackingNumber
is sent in without thedtTrackingDtlByShiptemRequest
, the tracking information is stored at the item level for all items on the shipment. - When a
TrackingNumber
is sent in withdtTrackingDtlByShipItemRequest
fields, the tracking information is stored at the shipment/item level on the dispatch. - When multiple
TrackingNumbers
are sent in thedtTrackingDtlByShipItemRequest
, only items on the shipment that are specified in thedtTrackingDtlByShipItemRequest
are saved with tracking information at the item level. - The following rules apply when sending multiple tracking numbers in a single request
- The
dtTrackingDtlByShipItemRequest
must be excluded from the request to save all tracking numbers at the shipment level. - The
dtTrackingDtlByShipitemRequest
must be included for each tracking number to save all tracking numbers at the shipment/item level. - The system does not allow some tracking numbers to include
dtTrackingDtlByShipItemRequest
and others to excludedtTrackingDtlByShipItemRequest
tags in a single request.
- The
- An S856 ASN is auto created when the customer ship-to is set to send S856 ASNs.
- If the customer ship-to is not set to use the S856 ASN, a printed ASN report is auto created if the customer ship-to record is set to ‘Auto send ASN with WMS shipment and shipping tracking API’s’.
Relationships
ContextId
andBranch
come from Login
Version Deployed
v600
AgilityPublic/Supplier Service
This AgilityPublic service contains methods related to supplier information.
SupplierBranchCreate
Sample Request
{
"request": {
"SupplierID": "CLA22",
"SupplierBranchJSON": {
"dsSupplierBranch": {
"dtSupplierBranch": [
{
"ShipVia": "Truck",
"FreightTerms": "COD",
"Buyer": "Buy01",
"Buyer2": "Buy02",
"PurchaseType": "wh",
"ECommercePurchaseType": "wh",
"CutOffPOChangesDay": "Monday",
"CutOffPOChangesTime": "12:34",
"PrimaryShipFrom": 1,
"Region": "East",
"DistributorNumber": "12-909",
"ExpenseGLAccount": "040.00.50022",
"ExpenseGLComponent": "",
"ExpenseGLComponentLevel": 1,
"GiveFreightNotSpecifiedQuestion": "Both",
"OrderMinimumCost": 1000,
"OrderMinimumWeight": 100,
"OrderMinimumLoad": 100,
"FreightMinimumCost": 250,
"FreightMinimumWeight": 100,
"FreightMinimumLoad": 250,
"WMSIncludeLinkedOrders": "true",
"WMSIncludeVerbalPO": "true",
"CombineLikeItemsOnPrintedPO": "false"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Create new supplier branch records
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - For the
ExpenseGLComponent
request field, you must use an X or # as the placeholder character for spaces if the account or component begins with or contains spaces. - Supplier branch records are created in the branch specified in the API header
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierBranchUpdate
Sample Request
{
"request": {
"SupplierID": "CLA22",
"SupplierBranchJSON": {
"dsSupplierBranch": {
"dtSupplierBranch": [
{
"ShipVia": "Truck",
"FreightTerms": "COD",
"Buyer": "",
"Buyer2": "",
"PurchaseType": "wh",
"ECommercePurchaseType": "wh",
"CutOffPOChangesDay": "Monday",
"CutOffPOChangesTime": "10:45",
"PrimaryShipFrom": 1,
"Region": "EAST",
"DistributorNumber": "IA-22",
"ExpenseGLAccount": "",
"ExpenseGLComponent": "xxx.00.50023",
"ExpenseGLComponentLevel": 2,
"GiveFreightNotSpecifiedQuestion": "Both",
"OrderMinimumCost": 1000,
"OrderMinimumWeight": 240,
"OrderMinimumLoad": 250,
"FreightMinimumCost": 200,
"FreightMinimumWeight": 260,
"FreightMinimumLoad": 300,
"WMSIncludeLinkedOrders": true,
"WMSIncludeVerbalPO": false,
"CombineLikeItemsOnPrintedPO": false
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates existing supplier branch records
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - For the
ExpenseGLComponent
request fields, you must use an X or # as the placeholder character for spaces if the account or component begins with or contains spaces. - Supplier branch records are updated in the branch specified in the request header
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierContact
Sample Request
{
"request": {
"SupplierID": "1618T",
"ContactName": "Jolene Doe",
"ContactType": "Primary",
"ContactJSON": {
"dsSupplierContact": {
"dtSupplierContact": [
{
"Primary": true,
"Address1": "333 Main St.",
"Address2": "Ste 300",
"Address3": "PO BOX 300",
"City": "Omaha",
"State": "NE",
"ZIP": "68164",
"Country": "USA",
"Phone1": "8281112222",
"Phone2": "8282222333",
"OtherPhone": "8283334444",
"MobilePhone": "8284445555",
"Fax": "8285556666",
"EmailAddress": "jdoe@gmail.com",
"ContactTitle": "Owner",
"Salutation": "Mrs.",
"OtherData": "",
"Remarks": "Call mobile first"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates a supplier contact
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ContactName
ContactType
ContactJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier must exist
- The country code must exist
- There must be one primary supplier contact record
- The contact name and contact type cannot be updated, only created
- Any fields not included in the
ContactJSON
assume the default values of the new or existing supplier contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierCreate
Sample Request
{
"request": {
"SupplierID": "REDSUPP",
"SupplierJSON": {
"dsSupplier": {
"dtSupplier": [
{
"Name": "REDLAND SUPPLY",
"Address1": "1121 Russell Slade Blvd",
"Address2": "",
"Address3": "",
"City": "Ames",
"State": "IA",
"ZIP": "50011",
"Country": "USA",
"Phone": "3193456767",
"PhoneFormat": "USA",
"Fax": "3198907874",
"Website": "",
"DivisionID": "100",
"GroupID": "",
"Currency": "USD",
"PrintCurrency": "Symbol",
"Active": true,
"Temporary": false,
"CarrierSupplier": true,
"CarrierType": "Rail",
"WMSIncludeLinkedOrders": false,
"WMSIncludeVerbalOrders": false,
"HistoryDisposition": "",
"HistoryStartDate": "2023-01-01",
"HistoryDateFirstOrder": "2023-02-12",
"HistoryCompanyCode": "",
"InvoiceDefaultVoucherStatus": "Ready for payment",
"InvoiceStandardDiscount": 0,
"InvoicePaymentMethod": "Credit Card",
"InvoiceDaysToClear": 9,
"InvoicePaymentTermsCode": "1%flat",
"InvoiceCreditPaymentTermsCode": "2%flat",
"InvoiceCostType": "PO",
"InvoiceXrefRequiredBySupplier": "None",
"InvoiceCashGLAccount": null,
"InvoiceCashGLComponent": "XXX.00.50021",
"InvoiceCashGLComponentLevel": 2,
"InvoiceAllowDuplicates": true,
"InvoiceRejectIfDupInvoiceAndDate": true,
"InvoiceSuppCheckDupMonths": 5,
"InvoiceSuppRejectDupMonths": 9,
"Misc1": "",
"Misc2": "",
"Misc3": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a supplier
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
SupplierName
InvoiceCostType
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- Creating a supplier also creates default remit-to and ship-from records with a sequence of 1.
- When the ‘Auto assign supplier ID’ option in Branch Controls is set, the
SupplierID
field is not a required input. If theSupplierID
input is not populated, the next available sequence number is used. - Any fields not included in the
SupplierJSON
assume the default values of a new supplier. - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - For the
InvoiceCashGLComponent
request field, you must use an X or # as the placeholder character for spaces if the account or component begins with or contains spaces.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierGLCreate
Sample Request
{
"request": {
"SuppierID": "0312 TEST",
"SupplierGLJSON": {
"dsSupplierGL": {
"dtSupplierGL": [
{
"GLAccount": "",
"GLComponent": "XXX.11.50021",
"GLComponentLevel": 1
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Create a supplier G/L record in the current branch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
SupplierGLJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier must exist
- The G/L Account branch for the new record comes from the branch defined in the header
- For the
GLComponent
request field, you must use an X or # as the placeholder character for spaces if the component begins with or contains spaces. - Any fields not included in the
SupplierGLJSON
assume the default values of the new or existing supplier G/L record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierGLDelete
Sample Request
{
"request": {
"SuppierID": "WIN01",
"SupplierGLJSON": {
"dsSupplierGL": {
"dtSupplierGL": [
{
"GLAccount": "",
"GLComponent": "XXX.11.50021",
"GLComponentLevel": 1
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Delete a supplier G/L record in the current branch
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
SupplierGLJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier must exist
- The G/L Account must be valid in the branch defined in the header
- If the supplier GL account was created with a full G/L account it can only be deleted with the full G/L account sent in the request. If the supplier G/L account was created with a component and component level, it can only be deleted by entering the component and component level in the request tags.
- For the
GLComponent
request field, you must use an X or # as the placeholder character for spaces if the component begins with or contains spaces. - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SupplierRemittoContact
Sample Request
{
"request": {
"SupplierID": "1618T",
"RemittoSequence": 1,
"ContactName": "Joann Doe",
"ContactType": "Secondary",
"ContactJSON": {
"dsSupplierRemittoContact": {
"dtSupplierRemittoContact": [
{
"Primary": false,
"Address1": "333 Main St.",
"Address2": "Ste 300",
"Address3": "PO BOX 300",
"City": "Omaha",
"State": "NE",
"ZIP": "68164",
"Country": "USA",
"Phone1": "8281112222",
"Phone2": "8282222333",
"OtherPhone": "8283334444",
"MobilePhone": "8284445555",
"Fax": "8285556666",
"EmailAddress": "j.doe@gmail.com",
"ReceiveAPRemittance": true,
"ContactTitle": "Supervisor",
"Salutation": "Ms.",
"OtherData": "",
"Remarks": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates a supplier remit-to contact
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
RemittoSequence
ContactName
ContactType
ContactJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier and remit-to must exist
- The country code must exist
- There must be one primary supplier remit-to contact record
- The contact name and contact type cannot be updated, only created
- There must be an email included in the call or on the existing contact for the ‘Receive AP Remittance’ flag to be set on the record.
- Any fields not included in the
ContactJSON
assume the default values of the new or existing supplier remit-to contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierRemittoCreate
Sample Request
{
"request": {
"SupplierID": "0410-1",
"SupplierRemittoJSON": {
"dsSupplierRemitto": {
"dtSupplierRemitto": [
{
"RemittoSequence": 73,
"RemittoName": "Supplier International",
"Address1": "11650 Miracle Hills Dr ",
"Address2": "Suite 100",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "68104",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "402-555-5645",
"AccountNumber": "SME-0312",
"Active": true,
"Primary": true,
"PrintOneCheckPerInvoice": false,
"ACHDetailType": "CTX",
"ACHCTXQualifier": "CX",
"ACHCTXMailboxID": "12450698",
"ACHCTXVersion": "004010",
"ACHCTXUsageIndicator": "TEST",
"APInterfaceInvoicePaymentTerms": "Supplier Default",
"APInterfaceCreditPaymentTerms": "Purchase Order",
"APInterfaceDefaultToHoldInvoice": false,
"APInterfaceBranchToApplyInvoice": "WESTONBRANCH",
"CalculateTaxInInvoiceEntry": true,
"TaxCode": "NE",
"APHandlingCode": "ATTN",
"APHandlingCodeAdditionalInfo": "PickUp",
"Misc1Value": "",
"Misc2Value": "",
"Misc3Value": "",
"Requires1099": true,
"Payment1099TypeCode": "Exp",
"TaxID1099": "123546",
"LegalID1099": "88-123456789",
"LegalName1099": "Supplier International",
"AmountThisYear1099": 100,
"AmountLastYear1099": 120,
"BankAccountType": "Checking",
"BankRoutingNum": "123456",
"BankAccountNum": "123456789"
}
]
}
}
}
}
Sample Response
{
"response": {
"RemittoSequence": 73,
"AuditResults": {
"dsAuditResults": {
"dtAuditResults": [
{
"AuditSequence": 1,
"AuditType": "Warning",
"AuditText": "An existing remit-to record’s primary flag was unset"
}
]
}
},
"ReturnCode": 2,
"MessageText": "Supplier Remit-to cannot be created. Supplier Remit-to already exists. (ID# 3316)"
}
}
Purpose
Create Supplier Remit-to record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
SupplierRemittoJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The Supplier record must exist before creating a Supplier Remit-to
- Any fields not included in the
SupplierRemittoJSON
assume the default values of a new supplier remit-to - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - If an existing sequence is sent in, then the call will fail as this API is only creating remit-to records
- If no sequence value is sent in, the system auto-assigns the next sequence number for the supplier
- If an existing remit-to record has the Primary option set in Agility and a new remit-to is created with the Primary tag set to true, the system automatically unsets the Primary option on the existing remit-to record
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierRemittosList
Sample Request
{
"request": {
"SearchBy": "Remit-to Address 1",
"SearchValue": "904",
"AdditionalSearchCriteriaJSON": {
"dsSupplierRemittoSearchRequest": {
"dtSupplierRemittoSearchRequest": [
{
"SupplierID": "NEL01",
"RemittoSequence": "",
"FetchOnlyChangedSince": null,
"ChunkStartPointer": null,
"RecordFetchLimit": 100,
"IncludeInactive": false
}
]
}
}
}
}
Sample Response
{
"response": {
"SupplierRemittoResponse": {
"dsSupplierRemittoResponse": {
"dtSupplierRemittoResponse": [
{
"SupplierID": "NEL01",
"SupplierName": "Nelson Supply",
"RemittoName": "Nelson Supply",
"RemittoSequence": 1,
"Address1": "904 Park Street",
"Address2": "Suite 4200",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "68118",
"Country": "USA",
"Phone": "(402)-189-0788",
"Primary": true,
"Active": true,
"LastChanged": "2024-02-09T12:14:09.000",
"Misc1Label": "Remit-to 1",
"Misc1Value": "",
"Misc2Label": "Remit-to 2",
"Misc2Value": "",
"Misc3Label": "Remit-to 3",
"Misc3Value": "",
"Requires1099": false,
"LegalID1099": "230-898984",
"LegalName1099": "Nelson Corporation LLC",
"Payment1099TypeCode": "Exp",
"TaxID1099": "NE-040124",
"AmountThisYear1099": 255.01,
"AmountLastYear1099": 200.99,
"BankAccountType": "Checking",
"BankRoutingNumber": "453198",
"BankAccountNumber": "100173216",
"PhoneFormat": USA,
"AccountNumber": "984069",
"PrintOneCheckPerInvoice": true,
"ACHDetailType": "CTX",
"ACHCTXQualifier": "00",
"ACHCTXMailboxID": "169",
"ACHCTXVersion": "004010",
"ACHCTXUsageIndicator": "Prod",
"APInterfaceInvoicePaymentTerms": "Invoice",
"APInterfaceCreditPaymentTerms": "Credit Invoice",
"APInterfaceDefaultToHoldInvoice": false,
"APInterfaceBranchToApplyInvoice": "WESTONBRANCH",
"CalculateTaxInInvoiceEntry": false,
"TaxCode": "NE_Omaha_Douglas",
"APHandlingCode": "",
"APHandlingCodeAdditionalInfo": ""
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of supplier remit-tos available in the branch the user is logged into
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
N/A
Optional Inputs
SearchBy
SearchValue
SupplierID
RemittoSequence
FetchOnlyChangedSince
ChunkStartPointer
RecordFetchLimit
IncludeInactive
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- List of supplier remit-to records
Notes
- This method allows a user to request supplier remit-tos that have changed since a particular date and time.
- This method allows the user to search for specific supplier remit-tos with limited criteria. Please see the Searchby topic for more information
- This method allows a user to request a specific number of records. Please see the Chunking topic for more information
- Because the number of records to be returned based on the search criteria could be large, DMSi recommends using the chunking feature, especially when requesting a list without specific supplier criteria specified.
- Valid SearchBy values:
- Remit-to name
- Remit-to Address 1
- Remit-to Address 2
- Remit-to City
- Remit-to State
- Remit-to Zip
- Remit-to Phone
- Tax ID
- When SearchBy = Tax ID, the
SearchValue
needs to be an exact match for the value in Agility. - The
TaxID1099
andBankAccountNumber
are stored as encrypted values; these values are are decrypted before being sent in the response - If the input value sent for
IncludeInactive
is blank or null, the system saves the value as false - If the ‘View 1099 Information’ security action is denied for the API user, values for these fields will not be returned in the response
Requires1099
LegalID1099
LegalName1099
PaymentType1099Code
TaxID1099
- If the ‘Update Bank Information’ security action is denied for the API user, values for these fields will not be returned in the response
BankAccountType
BankRoutingNumber
BankAccountNumber
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v609; fields added in v610; JSON structure changed and field added in v612
SupplierRemittoUpdate
Sample Request
{
"request": {
"SupplierID": "0410-1",
"SupplierRemittoJSON": {
"dsSupplierRemitto": {
"dtSupplierRemitto": [
{
"RemittoSequence": 1,
"RemittoName": "Supplier International",
"Address1": "11650 Miracle Hills Dr ",
"Address2": "Suite 100",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "68104",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "402-555-5645",
"AccountNumber": "SME-0312",
"Active": true,
"Primary": true,
"PrintOneCheckPerInvoice": false,
"ACHDetailType": "CTX",
"ACHCTXQualifier": "CX",
"ACHCTXMailboxID": "12450698",
"ACHCTXVersion": "004010",
"ACHCTXUsageIndicator": "TEST",
"APInterfaceInvoicePaymentTerms": "Supplier Default",
"APInterfaceCreditPaymentTerms": "Purchase Order",
"APInterfaceDefaultToHoldInvoice": false,
"APInterfaceBranchToApplyInvoice": "WESTONBRANCH",
"CalculateTaxInInvoiceEntry": true,
"TaxCode": "NE",
"APHandlingCode": "ATTN",
"APHandlingCodeAdditionalInfo": "PickUp",
"Misc1Value": "",
"Misc2Value": "",
"Misc3Value": "",
"Requires1099": true,
"Payment1099TypeCode": "Exp",
"TaxID1099": "123546",
"LegalID1099": "88-123456789",
"LegalName1099": "Supplier International",
"AmountThisYear1099": 100,
"AmountLastYear1099": 120,
"BankAccountType": "Checking",
"BankRoutingNum": "123456",
"BankAccountNum": "123456789"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Update existing Supplier Remit-to records
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
SupplierRemittoSequence
SupplierRemittoJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The remit-to supplier must exist
- Any fields not included in the
SupplierRemittoJSON
assume the default values of the existing supplier remit-to record - The Primary option is unset on an existing remit-to record in Agility if updating another remit-to record as the Primary
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierShipfromBranchCreate
Sample Request
{
"request": {
"SupplierID": "DID",
"ShipfromSequence": 6,
"SupplierShipfromBranchJSON": {
"dsSupplierShipfromBranch": {
"dtSupplierShipfromBranch": [
{
"EnableMiscSettingFlags": true,
"UpdateLead": true,
"EnableLoadUnloadFlags": true,
"LoadUnloadCallForAppointment": false,
"LoadUnloadFromHours": "09:30",
"LoadUnloadToHours": "10:24"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a supplier ship-from branch record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ShipfromSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier and ship-from must exist before creating a ship-from branch record
- Any fields not included in the
SupplierShipfromBranchJSON
assume the default values of a new supplier ship-from branch record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - The
UpdateLead
tag is processed only when theEnableMiscSettingFlags
tag is set totrue
- The
LoadUnloadCallForAppointment
,LoadUnloadFromHours
, andLoadUnloadToHours
tags are processed only when theEnableLoadUnloadFlags
is set totrue
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SupplierShipfromBranchUpdate
Sample Request
{
"request": {
"SupplierID": "DID",
"ShipfromSequence": 6,
"SupplierShipfromBranchJSON": {
"dsSupplierShipfromBranch": {
"dtSupplierShipfromBranch": [
{
"EnableMiscSettingFlags": true,
"UpdateLead": true,
"EnableLoadUnloadFlags": true,
"LoadUnloadCallForAppointment": false,
"LoadUnloadFromHours": "09:30",
"LoadUnloadToHours": "10:24"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates an existing supplier ship-from branch record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ShipfromSequence
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - Supplier ship-from branch records are updated in the branch specified in the request header.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SupplierShipfromContact
Sample Request
{
"request": {
"SupplierID": "1618T",
"ShipfromSequence": 1,
"ContactName": "Jane Doe",
"ContactType": "Secondary",
"ContactJSON": {
"dsSupplierShipfromContact": {
"dtSupplierShipfromContact": [
{
"Primary": false,
"Address1": "333 Main St.",
"Address2": "Ste 300",
"Address3": "PO BOX 300",
"City": "Omaha",
"State": "NE",
"ZIP": "68164",
"Country": "USA",
"Phone1": "8281112222",
"Phone2": "8282222333",
"OtherPhone": "8283334444",
"MobilePhone": "8284445555",
"Fax": "8285556666",
"EmailAddress": "jdoe@gmail.com",
"ContactTitle": "Manager",
"Salutation": "Miss",
"OtherData": "",
"Remarks": "Call mobile first"
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates a supplier ship-from contact
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ShipfromSequence
ContactName
ContactType
ContactJSON
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier and ship-from must exist
- The country code must exist
- There must be one primary supplier ship-from contact record
- The contact name and contact type cannot be updated, only created
- Any fields not included in the
ContactJSON
assume the default values of the new or existing supplier ship-from contact record - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierShipfromCreate
Sample Request
{
"request": {
"SupplierID": "cla22",
"SupplierShipfromJSON": {
"dsSupplierShipfrom": {
"dtSupplierShipfrom": [
{
"ShipfromSequence": 99,
"GrantAccessToAllBranchesOnCreate": false,
"ShipfromName": "Clarksons Supply",
"Address1": "22 Hawkeye Road",
"Address2": "",
"Address3": "",
"City": "Coralville",
"State": "IA",
"ZIP": "50689",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "4021112222",
"Fax": "4028881212",
"Memo": "",
"AssignAsDescToTallyRecords": true,
"Primary": true,
"NewItemSuppForNewPrimaryShipfrom": false,
"Active": true,
"UpdateLead": true,
"AutoRecvAutoDisplayInvoiceEntry": true,
"APReconBalanceBy": "P",
"LoadUnloadCallForAppointment": true,
"LoadUnloadFromHours": "1000",
"LoadUnloadToHours": "1200",
"Misc1Value": "Unload in dock 14A ",
"Misc2Value": "",
"Misc3Value": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"ShipfromSequence": 99,
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates a ship-from supplier record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
Optional Inputs
ShipfromSequence
Response
- ReturnCode
MessageText
ShipfromSequence
dsAuditResults
Notes
- The supplier must exist before creating a ship-from supplier
- Any fields not included in the
SupplierShipfromJSON
assume the default values of a new supplier ship-from - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - The system auto assigns the next sequential number as the ship-from sequence if the
ShipfromSequence
tag is not included in the request. - For the
GrantAccessToAllBranchesOnCreate
field, if any branch shares supplier ship-froms with the branch sent in the API header and shares item suppliers with other branches, access will be granted to all branches whether a true or false value is sent - If an existing ship-from record has the
Primary
option set in Agility and a new ship-from is created with thePrimary
tag set to true, the system will automatically unset thePrimary
option on the existing ship-from record
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SupplierShipfromLaserControls
Sample Request
{
"request": {
"SupplierID": "did",
"ShipfromSequence": 10,
"FormType": "PO",
"PrinterSequence": 1,
"LaserControlJSON": {
"dsSupplierShipfromLaserControls": {
"dtSupplierShipfromLaserControls": [
{
"PrinterName": "EMAIL",
"FaxEmailToSource": "Primary Remit-to contact",
"Fax": "",
"Email": "",
"Copies": 1,
"FormFooter": "Customer Copy "
}
]
}
}
}
}
Sample Response
{
"response": {
"dsAuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Creates or updates supplier ship-from laser controls
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ShipfromSequence
FormType
PrinterSequence
LaserControlJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The supplier ship-from must exist
- Any fields not included in the
LaserControlJSON
assume the default values of the new or existing supplier ship-from laser control record. - DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SupplierShipfromsList
Sample Request
{
"request": {
"SearchBy": "Ship-from Address 1",
"SearchValue": "2222",
"AdditionalSearchCriteriaJSON": {
"dsSupplierShipfromSearchRequest": {
"dtSupplierShipfromSearchRequest": [
{
"SupplierID": "cla22",
"ShipfromSequence": null,
"FetchOnlyChangedSince": "2024-02-08T10:00:00.000",
"ChunkStartPointer": 0,
"RecordFetchLimit": 50,
"IncludeInactive": false
}
]
}
}
}
}
Sample Response
{
"response": {
"SupplierShipfromResponse": {
"dsSupplierShipfromResponse": {
"dtSupplierShipfromResponse": [
{
"SupplierID": "CLA22",
"SupplierName": "CLARK SUPPLY",
"ShipfromName": "Clark Supply",
"ShipfromSequence": 1,
"Address1": "2222 Hawkeye Rd",
"Address2": "",
"Address3": "",
"City": "Coralville",
"State": "IA",
"ZIP": "50678",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "(319) 366-1222",
"Fax": "(319) 344-2999",
"Memo": "",
"AssignAsDescToTallyRecords": true,
"Primary": true,
"Active": true,
"UpdateLead": true,
"AutoRecvAutoDisplayInvoiceEntry": false,
"APReconBalanceBy": "Purchase Order",
"LoadUnloadCallForAppointment": false,
"LoadUnloadFromHours": "10:00",
"LoadUnloadToHours": "12:00",
"Misc1Label": "Misc 1",
"Misc1Value": "",
"Misc2Label": "Misc 2",
"Misc2Value": "",
"Misc3Label": "Misc 3",
"Misc3Value": "",
"LastChanged": "2024-05-16T11:51:47.000"
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 1,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of supplier ship-from records
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
N/A
Optional Inputs
SearchBy
SearchValue
SupplierID
ShipfromSequence
FetchOnlyChangedSince
ChunkStartPointer
RecordFetchLimit
IncludeInactive
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- List of supplier ship-from records
Notes
- This method allows the user to search for specific supplier ship-froms with limited criteria. Please see the
Searchby
topic for more information - This method allows a user to request supplier ship-froms that have changed since a particular date and time.
- This method allows a user to request a specific number of records. Please see the Chunking topic for more information
- Because the number of records to be returned based on the search criteria could be large, DMSi recommends using the chunking feature, especially when requesting a list without specific supplier criteria specified.
- If the input value sent for
IncludeInactive
is blank or null, the system saves the value as false - Valid
SearchBy
values:- Ship-from Name
- Ship-from Address 1
- Ship-from Address 2
- Ship-from City
- Ship-from State
- Ship-from Zip
- Ship-from Phone
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611; JSON structure changed and field added in v612
SupplierShipfromUpdate
Sample Request
{
"request": {
"SupplierID": "cla22",
"SupplierShipfromJSON": {
"dsSupplierShipfrom": {
"dtSupplierShipfrom": [
{
"ShipfromSequence": 9,
"ShipfromName": "Clark Supply",
"Address1": "1090 Hawkeye Rd",
"Address2": "",
"Address3": "",
"City": "Coralville",
"State": "IA",
"ZIP": "50678",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "3193661222",
"Fax": "3193442999",
"Memo": "",
"AssignAsDescToTallyRecords": true,
"Primary": false,
"NewItemSuppForNewPrimaryShipfrom": false,
"Active": true,
"UpdateLead": true,
"AutoRecvAutoDisplayInvoiceEntry": false,
"APReconBalanceBy": "Purchase Order",
"LoadUnloadCallForAppointment": false,
"LoadUnloadFromHours": "1000",
"LoadUnloadToHours": "1200",
"Misc1Value": "",
"Misc2Value": "",
"Misc3Value": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Updates an existing supplier ship-from record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
ShipfromSequence
SupplierShipfromJSON
Optional Inputs
- N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- The ship-from supplier record must exist
- Any fields not included in the
SupplierShipfromJSON
assume the default values of the existing supplier ship-from record - The
Primary
option will be unset on an existing ship-from record in Agility if updating another ship-from record as thePrimary
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v611
SuppliersList
Sample Request
{
"request": {
"SearchBy": "Supplier State",
"SearchValue": "NE",
"AdditionalSearchCriteriaJSON": {
"dsSupplierSearchRequest": {
"dtSupplierSearchRequest": [
{
"IncludeInactive": true,
"FetchOnlyChangedSince": "2024-04-24T08:39:32",
"ChunkStartPointer": 0,
"RecordFetchLimit": 50
}
]
}
}
}
}
Sample Response
{
"response": {
"SupplierResponse": {
"dsSupplierResponse": {
"dtSupplierResponse": [
{
"SupplierID": "333-2",
"SupplierName": "JF Supply 2",
"Address1": "123 Chicken Rd.",
"Address2": "",
"Address3": "",
"City": "Omaha",
"State": "NE",
"ZIP": "12345",
"Country": "USA",
"PhoneFormat": "USA",
"Phone": "(402) 137-1240",
"Fax": "",
"Website": "",
"GroupID": "Laminate",
"DivisionID": "100",
"Currency": "USD",
"PrintCurrency": "Symbol",
"Temporary": true,
"CarrierSupplier": true,
"CarrierType": "AMCAR",
"WMSIncludeLinkedOrders": true,
"WMSIncludeVerbalOrders": true,
"HistoryDisposition": "d",
"HistoryStartDate": "2020-01-22",
"HistoryDateFirstOrder": "2024-04-25",
"HistoryCompanyCode": "f",
"InvoiceDefaultVoucherStatus": "Ready for Payment",
"InvoiceStandardDiscount": 1,
"InvoicePaymentMethod": "ACH",
"InvoiceDaysToClear": 5,
"InvoicePaymentTermsCode": "eas",
"InvoiceCreditPaymentTermsCode": "katiou",
"InvoiceCostType": "PO",
"InvoiceXRefRequiredBySupplier": "X",
"InvoiceCashGLAccount": "",
"InvoiceCashGLComponent": "",
"InvoiceAllowDuplicates": true,
"InvoiceRejectDupInvoiceAndDate": true,
"InvoiceSuppCheckDupMonths": 3,
"InvoiceSuppRejectDupMonts": 5,
"Active": true,
"Misc1Label": "Misc 1",
"Misc1Value": "m1",
"Misc2Label": "Misc 2",
"Misc2Value": "m2",
"Misc3Label": "Misc 3",
"Misc3Value": "m3",
"LastChanged": "2024-04-24T11:45:12.000"
}
]
}
},
"MoreResultsAvailable": false,
"NextChunkStartPointer": 2,
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Returns a list of suppliers available to the user
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SearchBy
SearchValue
Optional Inputs
FetchOnlyChangedSince
ChunkStartPointer
RecordFetchLimit
IncludeInactive
Response
- ReturnCode
MessageText
MoreResultsAvailable
NextChunkStartPointer
- List of supplier records
Notes
- The
FetchOnlyChangedSince
parameter allows the user to determine if they would like records returned that have been modified since a particular date/time. This parameter is evaluated against the update date/time on the record. - This method allows a user to request a specific number of records. Please see the Chunking topic for more information
- Valid
SearchBy
options:- Supplier Name
- Supplier ID
- Supplier Address 1
- Supplier Address 2
- Supplier City
- Supplier State
- Supplier ZIP
- Supplier Phone
- Supplier Group ID
- Supplier Division ID
- A value of <all> can be specified in
SearchValue
- If the input value sent for
IncludeInactive
is blank or null, the system saves the value as false
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
SupplierUpdate
Sample Request
{
"request": {
"SupplierID": "CLASUP",
"SupplierJSON": {
"dsSupplier": {
"dtSupplier": [
{
"Name": "CLARK SUPPLY",
"Address1": "890 Hawkeye Rd",
"Address2": "Suite A",
"Address3": "PO Box 890",
"City": "Coralville",
"State": "IA",
"ZIP": "78945",
"Country": "USA",
"Phone": "3193374908",
"PhoneFormat": "1",
"Fax": "3193372222",
"Website": "",
"DivisionID": "200",
"GroupID": "EXP-UNIFORMS",
"Currency": "USD",
"PrintCurrency": "Symbol",
"Active": true,
"UpdShipFromActiveWhenSetActive": false,
"Temporary": false,
"CarrierSupplier": true,
"CarrierType": "Rail",
"WMSIncludeLinkedOrders": false,
"WMSIncludeVerbalOrders": false,
"HistoryDisposition": "Open",
"HistoryStartDate": "2024-12-12",
"HistoryDateFirstOrder": "2022-12-12",
"HistoryCompanyCode": "CLARK",
"InvoiceDefaultVoucherStatus": "On hold",
"UpdOpenVoucherWithStatusChange": false,
"InvoicePaymentMethod": "ACH",
"InvoiceDaysToClear": 4,
"InvoicePaymentTermsCode": "eas",
"InvoiceCreditPaymentTermsCode": "eas",
"InvoiceCostType": "PO",
"InvoiceXrefRequiredBySupplier": "u",
"InvoiceCashGLAccount": "",
"InvoiceCashGLComponent": "xxx.0050021",
"InvoiceCashGLComponentLevel": 3,
"InvoiceAllowDuplicates": "true",
"InvoiceRejectIfDupInvoiceAndDate": false,
"InvoiceSuppCheckDupMonths": 1,
"InvoiceSuppRejectDupMonths": 1,
"Misc1Value": "",
"Misc2Value": "",
"Misc3Value": ""
}
]
}
}
}
}
Sample Response
{
"response": {
"AuditResults": {
"dsAuditResults": {}
},
"ReturnCode": 0,
"MessageText": ""
}
}
Purpose
Update existing supplier record
Header
ContextId
Branch
Content-Type
= application/json
Required Inputs
SupplierID
Optional Inputs
N/A
Response
- ReturnCode
MessageText
dsAuditResults
Notes
- DMSi strongly recommends reviewing
dsAuditResults
regardless of theReturnCode
value - For the
InvoiceCashGLComponent
request field, you must use an X or # as the placeholder character for spaces if the account or component begins with or contains spaces. - The
UpdShipFromActiveWhenSetActive
request field allows you to set all ship-from records as active when setting the supplier record as active. - The
UpdOpenVoucherWithStatusChange
request field allows you to update all open vouchers for the updated supplier with the updated invoice voucher status.
Relationships
ContextId
andBranch
come from Login- Alternate branches come from BranchList
Version Deployed
v610
Agility API Technical Information
Agility API and Service
This Agility API and Agility service contains multiple methods used to create, update, delete, and view records.
AccountsPayableCreateInvoice
Purpose
Creates an A/P invoice
ChangeBranch
Purpose
Changes the branch associated with a specified context id
CustomerBranchShiptoGet
Purpose
Gets customer branch ship-to information
CustomerBranchShiptoUpdate
Purpose
Updates customer branch ship-to information
GetAgilityVersion
Purpose
Returns the customer’s Agility version the web service is accessing
GetBranchList
Purpose
Returns a list of branches the user has access to
GetRemanOrder
Purpose
Returns a specific reman order, including its inputs, operations and outputs
InventoryGetTagInfo
Purpose
Returns the information related to a specified tag or tags
InventoryGetTagValues
Purpose
Returns the next available tag sequences
InventoryPrintTags
Purpose
Prints inventory tags to a specified printer
Login
Purpose
Logs the user into Agility and returns a context id
Logout
Purpose
Logs a user out of Agility and removes the context id
MessageCreate
Purpose
Creates transaction messages in the branch the user is logged into
RemanCreateHeader
Purpose
Creates a new reman order
RemanCreateInputs
Purpose
Creates one or more reman inputs on an existing, open reman order
RemanCreateOperations
Purpose
Creates one or more operations on an existing, open reman order
RemanCreateOutputs
Purpose
Creates one or more reman outputs on an existing, open reman order
RemanDeleteInputs
Purpose
Deletes one or more inputs from an existing, open reman order
RemanDeleteOperations
Purpose
Deletes one or more operations from an existing, open reman order
RemanDeleteOutputs
Purpose
Deletes one or more outputs from an existing, open reman order
RemanReplaceStorage
Purpose
Deletes one or more outputs from an existing, open reman order
RemanSpecifyTagsToCommit
Purpose
Commits inventory tags to input items on reman work orders in the branch the user is logged into
SignatureCreate
Purpose
Creates signatures for sales order shipments and credit memo transactions in the branch the user is logged into