For years, users have wanted to gain access to the OASIS database to integrate software on their own. However, the database is fairly complex, and external software has been known to produce performance issues. Enter JSON.
JSON is an internet standard and is simple to understand and utilize by any trained software developer. There are several benefits of using JSON:
- Most third party software is able to integrate with applications like OASIS with a basic JSON API.
- JSON accesses the same routines used in OASIS and produces the same totals seen on screen.
- Routines are programmed with locking technology, which reduces the performance of impact of external access to the OASIS database.
- The JSON API won't change much over the years as it is a publicly facing integration point. Changes to the database happen regularly as data is moved from one table to another to implement new features. The listing, TSet, and other similar technologies are updated and draw data from the new database storage area.
Support
The JSON calls are offered WITHOUT SUPPORT. Only the following support actions are offered:
- This document.
- If a defect is found, submit details to support@oasissalessoftware.com. Analysis and development teams will follow standard software development processes. No priorities will be accepted.
- Professional services or custom software development may be requested for charge. Note: developer questions are a for charge service.
Logistics and Rollout
To comply with our vendor licensing, we have the following methods to access the JSON API. Note: what can be done and what can be done without breaking a contract are two entirely different things. Contact Ingen Software support (501 843 6750) if you have any questions. Our vendors are billion dollar companies and have no problem verifying your licensing or ours.
O4- Ingen Cloud Servers
Due to licensing changes by our database vendors, the best option is to use JSON and integrate with O4. To do so, complete the following:
- Email OASIS Sales at sales@oasissalessoftware.com to move to O4
- Confirm any login to be used when logging into the UI URL. O4 URLs will look something like "https://webXX.oasissalessoftware.com/COMPANY/UI"
- The JSON interface is an API URL. Switch the UI with API and continue below. Note: UI is User Interface.
Use of APIs and integration require full "per core" database licenses from the database vendors. Because Ingen Software is required to buy this kind of license for O4 cloud servers, you can use our licenses. Note: we do monitor usage. If usage is high, we will initially disable the API and contact you to ensure a login has not been hacked. To reinstate, we will limit the call bandwidth or charge.
JSON- The Call Technical Details
The call is a HTTP 1.1 call where the JSON request is made either as a POST or a GET:
- POST- the JSON request is sent as the POST data.
- GET- the JSON request is "flattened" to be a URL encoded key value pairs. Note: this method is not supported by all OASIS JSON APIs.
In both cases, the response is usually as JSON and is returned by the server. Note: attachment API calls will return attachment data.
In either case, the URL must have an ajax= key value to select the requested API: http://localhost:8080/OASIS/API?ajax=POListing
JSON- Security
Previously, JSON calls for OASIS required the user email and password in the URL. As of February 2023, JSON calls for OASIS will no longer accept email/password string logins. Users will now be required to use bearer tokens in O4 to authorize the call from the header in your external API platform. With this new requirement comes increased security and efficiency.
To learn more about creating bearer tokens in O4, click here.
JSON- Listing APIs
This group of JSON APIs essentially perform the common OASIS function of searching in one of the OASIS applications using the "Find" feature and showing the columns available in the "Preferences" feature. Note: this documentation refers one to the File->Find and File->Preferences in the related application for field names to use in the JSON Calls.
The calls may be made as a GET or a POST:
- GET - Place the find field values as key-value pairs in the URL. Add in a comma separated list of columns to return in the Listing= key as shown below.
- http://{O4 URL}/OASIS/API?&ajax=POListing&PONumber=A*&Listing=PONumber
- POST- place the find object and the listing array in the request object as shown.
- "Find":{"PONumber":"A*"},
"Listing":["PONumber"]}
- "Find":{"PONumber":"A*"},
The result will be an object with an array with each returned row under the key "Listing."
Example
Request: http://{O4 URL}/OASIS/API?&ajax=POListing&PONumber_fnd=A*&Listing=PONumber
Result: {"Listing":[{"PONumber":"A1","Total Price":"0.00"},{"PONumber":"AA98234","Total Price":"200.00"},{"PONumber":"AAA","Total Price":"0.00"},{"PONumber":"AAA","Total Price":"0.00"},{"PONumber":"AAABBZZZ","Total Price":"0.00"},{"PONumber":"AABBOUT","Total Price":"0.00"},{"PONumber":"AABB1122","Total Price":"0.00"},{"PONumber":"AABB33","Total Price":"0.00"},{"PONumber":"AABB3322","Total Price":"0.00"},{"PONumber":"AABB777238","Total Price":"0.00"},{"PONumber":"AABB9898","Total Price":"0.00"},{"PONumber":"AABBCC","Total Price":"0.00"},{"PONumber":"AABBCC333","Total Price":"0.00"},{"PONumber":"ABC","Total Price":"100.00"},{"PONumber":"ABC123","Total Price":"0.00"},{"PONumber":"AE TEST 1","Total Price":"1822.40"},{"PONumber":"AFTER INITIAL SYNC","Total Price":"1050.00"},{"PONumber":"AGENCY HOLD TEST","Total Price":"0.00"},{"PONumber":"AGENT NUMBER TEST","Total Price":"0.00"},{"PONumber":"AGENT NUMBER TEST","Total Price":"0.00"},{"PONumber":"AHFR001","Total Price":"0.00"},{"PONumber":"AHFR002","Total Price":"0.00"},{"PONumber":"AHFR003","Total Price":"0.00"},{"PONumber":"AHFR T1","Total Price":"0.00"},{"PONumber":"AHFR T2","Total Price":"0.00"},{"PONumber":"AHID","Total Price":"0.00"},{"PONumber":"AHTEST1","Total Price":"0.00"},{"PONumber":"ALA EXAMPLE","Total Price":"200.00"},{"PONumber":"ALA EXAMPLE 2","Total Price":"340.00"},{"PONumber":"ALT TST","Total Price":"100.00"},{"PONumber":"ANOTHER ORDER","Total Price":"200.00"},{"PONumber":"ANOTHER RELEASE","Total Price":"1000.00"},{"PONumber":"A PO NUMBER","Total Price":"0.00"},{"PONumber":"A PO NUMBER 12","Total Price":"0.00"},{"PONumber":"APONUMBER13","Total Price":"0.00"},{"PONumber":"A PO NUMBER 2","Total Price":"0.00"},{"PONumber":"A PO NUMBER 3","Total Price":"0.00"},{"PONumber":"A PO NUMBER 4","Total Price":"0.00"},{"PONumber":"A PO NUMBER 5","Total Price":"0.00"},{"PONumber":"APPLY 1 TEST","Total Price":"0.00"},{"PONumber":"AR2323","Total Price":"0.00"},{"PONumber":"ARCH_LED_004","Total Price":"0.00"},{"PONumber":"ARCH_LED_004","Total Price":"0.00"},{"PONumber":"ARCHER TRAINING","Total Price":"155.00"},{"PONumber":"A RESELL TEST PO NUMBER 5","Total Price":"2380.00"},{"PONumber":"ASDASDF","Total Price":"0.00"},{"PONumber":"ASDF","Total Price":"1000.00"},{"PONumber":"ASDF","Total Price":"2200.00"},{"PONumber":"ASDFO987","Total Price":"0.00"},{"PONumber":"ASDF12345","Total Price":"0.00"},{"PONumber":"ASDFADFS","Total Price":"4090.00"},{"PONumber":"ASDFASDF","Total Price":"0.00"},{"PONumber":"ASDFASDF","Total Price":"0.00"},{"PONumber":"ASDFASDF222","Total Price":"0.00"},{"PONumber":"ASDFASDFPICKER","Total Price":"20.00"},{"PONumber":"ASDLKJ897","Total Price":"2000.00"},{"PONumber":"ATTACH TEST 2","Total Price":"0.00"},{"PONumber":"ATTACH TEST 3","Total Price":"0.00"},{"PONumber":"ATT TEST 1","Total Price":"1000.00"},{"PONumber":"AUTO 1","Total Price":"100.00"},{"PONumber":"AUTO CLOER","Total Price":"0.00"}]}
Implemented Listing APIs
- ContactsListing- listing parameters from the Contacts section of O4
- CustomersListing- listing parameters from the Customers section of O4
- ManufacturersListing- listing parameters from the Manufacturers section of O4
- POListing- listing parameters from the Orders section of O4
- QuoteListing- listing parameters from the Quotes section of O4
- PaymentListing- listing parameters from the Payments section of O4
- InvoiceListing- listing parameters from the Invoices section of O4
Comments
1 comment
Hello, will this support article be updated to reflect the proposed February 2023 authentication changes?
Please sign in to leave a comment.