System Five Add-Ons & Integrations help simplify the way you do things.
Our catalog of services has topic-based, role-based, or technical plans that can help you maximize your software investment.
Copyright © 1984-present
Windward Software Systems Inc.
All Rights Reserved.
Privacy Policy
The s5webAPI solution runs as a 32-bit service and provides a doorway to push and pull information from a System Five database. This technology will work with both on premise installations and our System Five on Cloud deployments.
The following is an explanation for retrieving and using the Swagger 2.0 documentation from all available endpoints of the Windward S5WebAPI. Several endpoints have been marked as deprecated in version 6.2.2.175 which occurred in August of 2018. Deprecated methods will continue to operate but no new development is planned for these areas.
As a developer, keep in mind since this is a 32-bit service, it will not be able to access more than 4GB limited by this address space. Asking for large amounts of data such as inventory should use pagination and will give you better performance and memory utilization.
As of the 6.2.2.175 there are multiple endpoints available for the Windward Web API each providing different functions for the S5WebAPI. These endpoints are the following:
All of these endpoints can be accessed with the following URL:
As of the 6.2.2.175 the following methods in the endpoint TServerMethodsWebAPI are deprecated. Deprecated methods will continue to operate but no new development is planned for these.
Prior to 6.2.2.175 released versions of the Web API had a maximum limit of 32 concurrent connections. This limit has been removed and is now limited by how much available memory (max 4GB as this is a 32-bit service) running the API.
The Swagger 2.0 interface is only supported via HTTP, it is not supported via HTTPS. The other methods described below can be used when HTTPS is the only protocol configured.
Configuring both HTTP and HTTPS is not required, but in order to support HTTPS communication and allow the use of the Swagger interface, both need to be configured.
Azure Hosting - Network Security - Both the HTTP Port 80 and the HTTPS Port 443 need to be opened in order to allow external communication. The use of other Ports can be supported, but it is recommended that the standard HTTP - 80 and/or HTTPS - 443 be used to eliminate confusion.
Azure VM - Firewall Rules - Inbound rules for the same HTTP Port 80 and/or HTTPS port 440 need to be added.
The specific instance of the S5WebAPISvc.exe needs to have UDP and TCP Inbound rules to allow communication.
Azure Environment Variables on the VM - A System Environment Variable named S5INIPATH must exists and contain the path to the SystemFive_SaaS.ini file that is used by System Five SaaS to launch the application. This INI file should already exists and be in use by the installation of SystemFiveSaaS.exe. The API now uses this same INI file to obtain required settings.
The Swagger documentation for a particular endpoint can be retrieved by using a method of the endpoint. Using your preferred method or app (we suggest Postman), send a GET request to the following URL:
The contents of the response from the calls are the Swagger 2.0 documentation, after copying the response text and saving it into a text file using your preferred Swagger editor (we suggest editor.swagger.io) to view the Swagger documentation.
You can also turn on “Enable Swagger Publishing” in your S5WebAPISvc.ini and which will be located in the bin folder of the System Five application. You will then be able to interact with the Swagger 2.0 documentation and the Web API through a browser, without using Postman or a Swagger editor.
Depending on the feature you may be looking for in an endpoint you may need to know what version you are running. It is common to have a training and production WebAPI configured when testing new features. Assuming the API is running and you are authenticated, you can access the application version using the TServerMethodsWebAPI and the Connect endpoint.
{"result":[{"Response":"Success","CompanyName":"System Five","Serial":"103000", "Department":"1","ApplicationVersion":"6.2.2.350","DataVersion":"6.2.2.21"}]}
There can be functionality available in our beta that will not be present in our released product. Typically new enhancement work is completed in this release.
Best practices when troubleshooting errors or issues for escalation with engineering or another technician.
Getting POS Failure! {“error”:“Assertion failure (R:\system5\projects\prgs\FullInvoice.pas, line 50886)”} when pushing an order through WEB API .
Reasons : The JSON that is being used is invalid.
Only 1 InvoiceLines Array is allowed. The Description must only have 255 characters MAXIMUM! The database will throw away anything longer. The Invoice Comment must not contain invalid characters. (Carriage Returns and Line Feeds)
Additional information: You do not need to include the InvoiceCustomer / InvoiceShipTo unique numbers AND the InvoiceShipping / InvoiceBilling One or the other is all that is required. If you know the Unique Numbers, use them. The system will ignore InvoiceShipping and InvoiceBilling data. If you don’t, then use the InvoiceShipping and InvoiceBilling. The system will look-up the Account records or create them.
Here is what it should look like:
{ "Invoice": [ { "InvoiceHeader": { "InvoiceSubTotal": 87, "InvoiceTaxTotal": 8.97, "InvoiceOrdered": "2019-08-13T16:15:11.282Z", "InvoiceDate": "2019-08-13T16:15:11.282Z", "InvoiceType": "W", "InvoiceSubType": "O", "InvoiceDepartment": 0, "InvoiceBookMonth": "2019-08-13T16:15:11.282Z", "InvoiceCustomer": 31599, "InvoiceShipTo": 31599, "InvoiceSalesman": 1, "InvoiceComment": "This is a test order. Please do not process! Item 1: This is a delivered product. Delivery 321 elm street 60607 Business. Product Name: Arrangement. Product Options: Color: Earth - 0, Size: Large - 20, Delivery: 60607 - 17. Recipient: TesterChicago, 3332221111, [email protected]. Card message: Hi, nnLook forward to you receiving these testing flowers.nnJoe. Delivery date 08/31/19." }, "InvoiceTenders": [ { "Type": "O", "Amount": 95.92 } ], "InvoiceLines": [ { "PartUnique": 15868, "Ordered": 1, "Price": 50, "Description": "This is a test order. Please do not process!" }, { "Part": "SHIPPING", "Ordered": 1, "Price": 17, "Description": "SHIPPING/DELIVERY" } ] } ], "ConnectionInfo": { "TerminalNumber": 0 } }
You can prevent all of these problems by simply checking the JSON payload in a JSON editor like: https://jsoneditoronline.org/
Adding Newline Feed on Invoice Comment
In /addInvoice method, you can add Invoice Comment. In the parameter, look for this field “InvoiceComment” and add your comment.
To add a new line feed, add this \\n in the comment.
Access Violation when making API call
When troubleshooting the s5webAPI if receiving an access violation when making an API call, XML may require re-installation.
Getting a User Security Error on WordsToo.btr
If you are presented with a “User # Security Error on WordsToo.btr. User Record has been tampered with” message.
The reason for this error message is due to the user account being locked out or expired and the S5webapi is trying to login using those credentials.
To resolve this issue:
LogAnaylytics:Socket Connection Error 10060
This happens when the Log Analytics workspace is unreachable. The API service keeps trying to connect to the workspace which causes it to use too much CPU on the client's server.
As a workaround, we removed the Log Analytics argument from the ini file.
Once it is removed, CPU usage goes back to normal.