Overview
Jonas provides the ability to import and export data to external third-party applications (such as Salesforce or QuickBooks) through a SOAP web service. The service exchanges data for a variety of business objects using JSON payloads that comply with a well-defined schema.
Endpoint
https://websvcazure.jonasportal.com/jonasAPI/japi.asmxWSDL & introspection
The service publishes a WSDL document for client code generation:
https://websvcazure.jonasportal.com/jonasAPI/japi.asmx?WSDL
HTTPS is required for all calls; HTTP is not accepted. The service uses
jonas.jonasportal.com/ as its SOAP/XML namespace — the per-endpoint pages on this
portal use the correct namespace in their request samples.
For interactive testing, consider importing this WSDL into SoapUI. SoapUI can generate request templates and submit SOAP calls while you develop and troubleshoot integrations.
Web service operations
1. Login
<securityToken>string</securityToken>
<username>string</username>
<password>string</password>Returns a serialized JSON object:
{ "isAuthenticated": true, "isValid": true, "data": "...", "message": "..." }2. JonasAPI
<securityToken>string</securityToken>
<username>string</username>
<password>string</password>
<apiParams>string</apiParams>Returns a serialized JSON object:
{ "isAuthenticated": true, "isValid": true, "data": "...", "message": "..." }
Login and JonasAPI are independent — every JonasAPI call
re-authenticates from the supplied credentials, so calling Login first is optional
and does not establish a session. See Authentication & tenancy below.
Parameters
| Parameter | Description |
|---|---|
securityToken | Security hash key provided by Jonas. |
username | A valid customer's Jonas system user name. |
password | A valid customer's Jonas system password. |
apiParams | Valid JSON string compliant with a Jonas API schema. For all support inquiries this must be provided (in a text file). |
Authentication & tenancy
Every call carries three credentials in the SOAP envelope: securityToken,
username, and password.
- The
securityTokenidentifies the tenant — one token maps to exactly one Jonas customer environment, and the service routes requests to that tenant's on-premise Jonas engine. Tokens are issued by Jonas and rotation requires contacting Jonas support; clients cannot rotate tokens themselves. usernameandpasswordare the user's Jonas system credentials. They are forwarded to the tenant's engine and validated on every call; there is no session, token, or cookie that persists between requests.- HTTPS is required for every call. The internal hop from the public service to the tenant's engine runs over a separate mutual-TLS channel pinned to a per-tenant client certificate.
Functions
| Function Name | Function Code | Purpose |
|---|---|---|
| Customers | GJZJ6J | Create, update, and export A/R customer records |
| Work Orders | GJZJ18J | Create, update, and export work order records |
| Job Master | GJZJ28J | Create, update, and export job master records |
| Reading Data | GJZJ82J | Export or read data using paginated datamart templates |
| Purchase Orders | GJM10J | Upload and manage purchase order records |
| Receive Parts Against PO | GJM25ULJ | Receive parts against existing purchase orders |
| Requisition Upload | GJZJ25J | Add Requisition Orders |
| AP Invoice Batch | GJZJ4J | Import accounts payable invoice batches |
| CDN Payroll Employees | GJZF21J | Upload Canadian Payroll employee records |
| Parts Invoices | GJR01J | Upload and process parts invoice transactions |
| Inventory Upload | GJZJ7J | Import and update inventory item records |
| Subcontract Change Orders | GJZJ40J | Upload subcontractor change orders to job contracts |
| Upload Estimates | GJJ22CTJ | Import job cost estimates by cost code |
| Upload Forecast Final | GJJ36CTJ | Submit final forecast values for job cost items |
| Revision to Estimate / Change Orders | GJJC1J | Post revisions to job estimates and change orders |
| Internal Estimate Change Orders | GJJC5J | Record internal budget adjustments to job estimates |
| Record Job Unit Qty's | GJJ31J | Record unit quantities completed for job cost items |
| Takeoff | GJJ72J | Import quantity takeoff data for job estimating |
| Payment Certificate Progress to Date | GJZJ41J | Submit progress billing payment certificate amounts |
| Job Invoices | GJRU22J | Generate and upload invoices for job contracts |
| Charge Parts to Jobs & Work Orders | GJRP88J | Post parts and material charges to jobs or work orders |
| Customer Service Items | GJZJ9J | Upload and manage customer service item records |
| Equipment Usage | GJES5J | Record equipment usage and hours against jobs |
Options
Each call object supports the following options; each returns a different result set:
| Option | Result |
|---|---|
Template | Returns the JSON template containing the data fields with no data. |
Download | Returns the JSON template populated with data. |
Scan | Error scan only — does not upload data. |
Update | Submits records to be scanned for errors and uploaded into the system. |
Response shape
Both Login and JonasAPI return a SOAP body whose
JonasAPIResult element contains a serialized JSON object:
{
"isAuthenticated": true,
"isValid": true,
"data": "{\"WebMethod\":\"GJZJ6J\",\"Option\":\"scan\",...,\"ErrorsFound\":\"0\"}",
"message": "Login Successful : UserID GJSYSTEM ..."
}| Field | Meaning |
|---|---|
isAuthenticated | The user's credentials were accepted by the Jonas engine. |
isValid | The web-service request itself was valid. This field applies to the web-service layer and does not indicate whether the underlying business operation completed successfully. |
data | A JSON-encoded JSON string — parse it a second time to read the result. For scan / update options, the parsed payload can include RecordsProcessed, an error count named ErrorsFound or errorsFound, and an errors[] array when validation fails. Empty string when no business payload is returned (e.g. Login). |
message | Diagnostic text emitted by the Jonas engine. Useful for support tickets; not safe to parse — content and format are not contractual. |
Decode the body in two steps: parse the outer object, then if data is non-empty,
parse data as JSON to read the business result.
Errors
Errors arrive in two layers, both delivered inside a normal HTTP 200 SOAP response — there are no SOAP faults under regular operation.
For scan and update operations, overall business-operation success is
generally based on the parsed JSON result's error count. Responses document this field as either
ErrorsFound (often the string "0") or errorsFound (often the
number 0). Read whichever documented spelling is present, normalize its value to a
number, and consider the operation successful only when that number equals 0. A missing,
non-numeric, or nonzero error count means the operation did not complete successfully. The outer
isValid field reports only web-service-layer validity.
Envelope-level errors
Returned with isAuthenticated=false and/or isValid=false, with a short
fixed string in message. These cover misconfigured calls and transport-level
failures before the request reaches the Jonas engine.
| Message | Cause / action |
|---|---|
Security token is required | The securityToken SOAP element was empty. |
User name is required | The username SOAP element was empty. |
Password is required | The password SOAP element was empty. |
Account not found | The securityToken doesn't match any registered tenant. Verify the token with Jonas support. |
Communication info not found | The tenant exists but has no communication endpoint configured. Contact Jonas support. |
Failed to create communication client | The service could not open a channel to the tenant's engine — typically a certificate issue. Contact Jonas support. |
No response from PVX API | The tenant's engine accepted the call but returned an empty response. Retry once; if persistent, contact Jonas support. |
Web service error | An unhandled error inside the service. Treat as opaque, retry once, escalate to Jonas support if persistent. |
Invalid Password or UserName <userId> | The Jonas engine rejected the credentials. Verify username and password. |
Business-rule errors
When isAuthenticated is true but the engine rejects the payload — for
example, an unknown CompanyCode, a missing required field, or a duplicate primary
key — the failure surfaces inside the parsed data JSON:
{
"WebMethod": "GJZJ6J",
"Option": "scan",
"CompanyCode": "TT",
"ARSubledgerCode": "AR",
"errors": ["Invalid CompanyCode"],
"ErrorsFound": "1",
"RecordsProcessed": "0"
}
Always send an Option: scan request first to surface validation errors without
committing data, then resend with Option: update once ErrorsFound is
0.
Limits, timeouts & concurrency
| Aspect | Value |
|---|---|
| Maximum request size | 50 MB (after SOAP envelope & JSON encoding) |
| Maximum response size | 10 MB |
| Single-call latency | Up to ~10 minutes for large scan / update operations |
| Recommended HTTP client timeout | ≥ 12 minutes |
| Per-tenant concurrency | 5 simultaneous calls; additional requests queue for up to 2 minutes |
For datasets that exceed the size limits, prefer GJZJ82J datamart reads with
PageSize pagination, and chunk large upload arrays
(AR_CustomerMaster_tbl, WO_Headers_tbl, etc.) into multiple
update calls of a few hundred rows each. The service does not support resuming a
partially-applied update; if a chunk fails, resend the same chunk after correcting
the errors reported in errors[].
Sample method calls
Each endpoint page in the sidebar documents the available SOAP request/response
samples for that function's Template, Download,
Scan, and Update options. A
typical SOAP call wraps the JSON apiParams payload inside the
standard authentication envelope. Enclose the JSON payload in a
<![CDATA[ ... ]]> section so its contents are not interpreted
as XML markup, for example:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<JonasAPI xmlns="jonas.jonasportal.com/">
<securityToken>...</securityToken>
<username>...</username>
<password>...</password>
<apiParams><![CDATA[
{ "WebMethod": "GJZJ6J", "Option": "Template", "CompanyCode": "JC" }
]]></apiParams>
</JonasAPI>
</soap:Body>
</soap:Envelope>Next steps
- Reading Data — simple datamart queries.
- Customers — scan / update samples.
- Work Orders — import request / response pairs.
- Job Master — create jobs.