Wiki

Case Status
Log In

Wiki

 
OASIS Technical Documents»OASIS JSON API
  • RSS Feed

Last modified on 3/8/2019 11:58 AM by User.

Tags:

OASIS JSON API

Overview

For years, users have wanted to gain access to the OASIS database to integrate software on their own. The difficulties become clear quickly as the database is fairly complex and external software can produce interesting performance issues.

Enter JSON - an internet standard. The technology is pretty simple to understand and utilize by any trained software developer. Additionally, some third party software is able to integrate with applications like OASIS with a basic JSON API.

W JSON the API accesses the same routines used in OASIS producing the same totals seen on screen. Additionally, these routines are programmed with locking technology which reduces the performance impact of external access to the OASIS database.

But the biggest advantage is the API is fairly stable. Changes to the database happen regularly as we move data from one table to another to implement new features. The listing, TSet and similar technologies are updated and draw data from the new database storage area.
 

Support

The JSON calls are offered WITHOUT SUPPORT. Here are the ONLY support actions offered:

  • This document
  • If a defect is found, submit details to support@OasisSalesSoftware.com. Analysis and development will follow standard Ingen Software development processes - no priorities will be accepted.
  • Professional Services or Custom Software development may be requested FOR CHARGE. Developer questions are a FOR CHARGE SERVICE. 
     

Quick Start

  1. Open OASIS and login normally
  2. On your login, set an email address and password (both required for security)
  3. Start the "quick server": 
    • Select "Configuration" then "Software" then "Tools"
    • Select O4-8080 (you should receive confirmation the service is running)
  4. Open a browser to: http://localhost:8080/OASIS/API

WARNING: This quick start web service runs on plain HTTP only, not HTTPS. Passwords sent to this service are sent in plain text and are visible to packet sniffers. Do not expose this service to the Internet, and it is probably best to use a quarantined user account who does not have access to sensitive data.

Logistics/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.

The Quick Server

The quick server is a very simple web listener built into the OASIS GUI. The primary use is for testing, but for small projects pulling or pushing data between OASIS and another application, this is the way to go. The speed isn't great, but this is how we manage the license:

  • Someone logs into OASIS, consuming a full license
  • The Service is turned on
  • JSON calls are made

The Web Application - Local Server

NOTICE: Due to licensing, local OASIS web services are discontinued and will no longer be supported. An OASIS O4 cloud service must be used for production work.

OASIS O4 - Ingen Cloud Servers

Due to licensing changes by database vendors, the best option is to use JSON and integrate with OASIS. Here's how:

  • Call Ingen Software to start OASIS O4 Cloud
  • Confirm any login to be used when integrating by logging into the UI URL. O4 cloud URLs look something like "https://webXX.OasisSalesSoftware.com/COMPANY/UI". The UI is User Interface.
  • The JSON interface is an API url. Just switch the UI with API and continue below.

Use of APIs and integration require full "per core" database licenses from the database vendors. Since Ingen Software is required to buy this kind of license for OASIS 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 someone hasn't hacked your login. To re-instate, 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 either made either as a POST or a GET:

  • GET - the JSON request is "flattened" to be URL encoded key value pairs. This method is not supported by all OASIS JSON APIs
  • POST - the JSON request is sent as the POST data

In both cases, the response is usually as JSON and is returned by the server. (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

This section will change over time as we adapt the technology and keep it secure. For now, the quickest and easiest method to make a JSON call is to include the user email and password on the URL:  http://localhost:8080/OASIS/API?ajax=POListing&EMail=demo@demo.com&Password=demo

When sending a request using HTTP POST, then Security or Login object may be sent in the request:

POST http://localhost:8080/OASIS/API?ajax=POListing HTTP1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: ...

{"Login":{"EMail":"test","Password":"test"},"Find": ...

(The content length would be required in most implementations but may only be calculated once the rest of the request was known.)

 

 

JSON - Listing APIs

This group of JSON APIs essentially perform the common OASIS function of searching in one of the OASIS applications (e.g. orders) and showing the columns available in File -> Preferences. In fact, 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://localhost:8080/OASIS/API?EMail=&Password=&ajax=POListing&PONumber=A*&Listing=PONumber

POST - Place the find object and the listing array in the request object as shown.

  • {"Login":{"EMail":"","Password":""},
    "Find":{"PONumber":"A*"}, 
    "Listing":["PONumber"]}

The result will be an object with an array with each returned row under the key "Listing". 

Example request:  http://localhost:8080/OASIS/API?EMail= &Password= &ajax=POListing&PONumber=a*&Listing=PONumber,Total%20Price

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 - Find and listing parameters from the Contacts section of OASIS
-    CustomersListing - Find and listing parameters from the Customers section of OASIS
-    ManufacturersListing - Find and listing parameters from the Manufacturers section of OASIS
-    POListing - Find and listing parameters from the Orders section of OASIS
-    QuoteListing - Find and listing parameters from the Quotes section of OASIS
-    PaymentListing - Find and listing parameters from the Payments section of OASIS