orpythonsdk (1.4.0)
Installation
pip install --index-url --extra-index-url https://pypi.org/simple orpythonsdkAbout this package
Python SDK for the OnRamp public API.
OnRamp Python SDK
Python client for the OnRamp public API.
Install
python -m pip install --extra-index-url https://git.onramp-solutions.com/api/packages/OnRampSDK/pypi/simple orpythonsdk
Basic Usage
from orpythonsdk import OnRampAPI
api = OnRampAPI("https://onramp.customer.com/ProductionCopy/")
api.APILogin("api_user", "api_password")
print(api.SessionID)
api.KeepSessionAlive()
api.LogOut()
APILogin stores the session ID on the OnRampAPI instance. Most methods use that stored session, so callers do not need to pass sess into every API call.
To attach to an existing session:
api = OnRampAPI("https://onramp.customer.com/ProductionCopy/")
API Queries
Use RunAPIQuery for registered API queries.
Use a dictionary when the query parameters are named in OnRamp.
rows = api.RunAPIQuery("QL-10000008", {"param_name": "param_value"})
for row in rows:
print(row)
Use a list as args when the query expects indexed or positional parameters.
customers = api.RunAPIQuery("Q-10010176", ["1/1/1900"])
for customer in customers:
print(customer["cusm_id"], customer["cusm_name"])
If a registered query performs an action and returns Executed, RunAPIQuery returns that response. If the response is neither an array nor Executed, the SDK raises an exception.
Screen Calls
from orpythonsdk import ORApiScreenMode, ORApiScreenOKCancel
screen = api.ScreenLoad("S2431")
api.ScreenEnterFrame(screen, "01")
api.ScreenEnterMode(screen, ORApiScreenMode.Add)
api.ScreenSetControlValue(screen, "01-01-01", "TaskID ID")
api.ScreenSetControlValue(screen, "01-01-02", "TaskID Desc")
api.ScreenOKCancel(screen, ORApiScreenOKCancel.OK)
errors = api.ScreenGetCurrentErrors(screen)
api.CloseScreen(screen)
Message Boxes And Files
Some screen actions can trigger modal message boxes. Use SetAutoMsgBoxAnswer to choose the automatic answer for future prompts in the current session.
from orpythonsdk import ORApiAutoAnswerMsgBoxOption
api.SetAutoMsgBoxAnswer(ORApiAutoAnswerMsgBoxOption.Yes)
# Do work that may trigger a modal prompt.
api.SetAutoMsgBoxAnswer(ORApiAutoAnswerMsgBoxOption.NoneOption)
The setting is sticky for the session. Reset it to NoneOption when finished.
File Download
screen = api.ScreenLoad("S2431")
file_name = api.ScreenGetControlValue(screen, "01-01-03")
api.ScreenGetControlFile(screen, "01-01-03", f"C:\\Temp\\{file_name}")
api.CloseScreen(screen)
Full Example
The full example code is included below.
import sys
from pathlib import Path
# Local repo debug import:
#sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from OnRampAPI import OnRampAPI
from OnRampAPI import ORApiAutoAnswerMsgBoxOption, ORApiScreenMode, ORApiScreenOKCancel
DOWNLOAD_FOLDER = r"C:\Temp"
def print_api_error(error):
if len(error.args) == 4:
status_code, message, error_type, stack_trace = error.args
print("StatusCode =", status_code)
print("Message =", message)
print("Type =", error_type)
print("StackTrace =", stack_trace)
return
print("Error type:", type(error).__name__)
print("Error:", error)
def test_web_api():
# Create an instance of OnRampAPI.
api = OnRampAPI()
# ProductionCopy endpoint.
api.Url = "https://onramp.customer.com/ProductionCopy/"
# Production endpoint.
# api.Url = "https://onramp.customer.com/Production/"
try:
# The web requests themselves are handled in the OnRampAPI package.
# Exceptions can be raised on any request. OnRamp server exceptions include
# status code, message, type, and stack trace details.
api.APILogin("api_user", "api_password")
# Sessions expire after a configured timeout. If your thread is alive for a
# long period of time, KeepSessionAlive can push the active session forward.
api.KeepSessionAlive()
# Execute query QL-10000008 with named parameter part_type for purchased parts.
api.RunAPIQuery("QL-10000008", {"part_type": "P"})
# Get data from OnRamp with a specified query number and iterate over results.
# Parameters are denoted in the query and passed as an array to RunAPIQuery.
customer_data = api.RunAPIQuery("Q-10010176", ["1/1/1900"])
for customer in customer_data:
customer_id = customer["cusm_id"]
customer_name = customer["cusm_name"]
print(customer_id + "-" + customer_name)
customer_contacts = api.RunAPIQuery("Q-10010177", [customer_id])
for contact in customer_contacts:
contact_name = contact["peop_full_name"]
contact_email = contact["peop_email"]
print(" Contact:", contact_name, contact_email)
customer_open_invoices = api.RunAPIQuery("Q-10010178", [customer_id])
for invoice in customer_open_invoices:
inv_number = invoice["ivcm_inv_num"]
inv_open_bal = invoice["ivcm_open_bal"]
print(" Invoice:", inv_number, inv_open_bal)
# Example of using the API to open screen S2431.
screen = api.ScreenLoad("S2431")
# Get file name from control value and create a save file path.
file_name = api.ScreenGetControlValue(screen, "01-01-03")
file_path = f"{DOWNLOAD_FOLDER}\\{file_name}"
# Download file from that screen control.
api.ScreenGetControlFile(screen, "01-01-03", file_path)
# All API screen functions require the screen instance GUID as the first argument.
api.ScreenEnterFrame(screen, "01")
# Mimic a user activating a frame mode.
api.ScreenEnterMode(screen, ORApiScreenMode.Add)
# Mimic a user entering data into fields. Use F1 in OnRamp text boxes to get IDs.
api.ScreenSetControlValue(screen, "01-01-01", "TaskID ID")
api.ScreenSetControlValue(screen, "01-01-02", "TaskID Desc")
# Commit data to the databound frame.
api.ScreenOKCancel(screen, ORApiScreenOKCancel.OK)
# Retrieve a specific value on the screen.
current_value = api.ScreenGetControlValue(screen, "01-01-01")
print("Current value:", current_value)
# Retrieve current screen errors.
errors = api.ScreenGetCurrentErrors(screen)
print("Screen errors:", errors)
# Jump to a specific grid record by key value.
api.ScreenGridFind(screen, "01-01-01", "asdf")
# Close screen and garbage collect on server.
api.CloseScreen(screen)
# Reset sticky modal dialog behavior for this session.
api.SetAutoMsgBoxAnswer(ORApiAutoAnswerMsgBoxOption.NoneOption)
api.LogOut()
print("TestWebAPI completed successfully.")
except Exception as error:
print_api_error(error)
if __name__ == "__main__":
test_web_api()