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.asmx

WSDL & 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.

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

ParameterDescription
securityTokenSecurity hash key provided by Jonas.
usernameA valid customer's Jonas system user name.
passwordA valid customer's Jonas system password.
apiParamsValid JSON string compliant with a Jonas API schema.
For all support inquiries this must be provided (in a text file).

The apiParams JSON may optionally include clientid, username, and password keys; if absent, the service auto-fills them from the SOAP envelope values. Tenant routing is determined by securityToken only — including clientid in the body does not change which tenant a call reaches.

Authentication & tenancy

Every call carries three credentials in the SOAP envelope: securityToken, username, and password.

  • The securityToken identifies 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.
  • username and password are 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 NameFunction CodePurpose
CustomersGJZJ6JCreate, update, and export A/R customer records
Work OrdersGJZJ18JCreate, update, and export work order records
Job MasterGJZJ28JCreate, update, and export job master records
Reading DataGJZJ82JExport or read data using paginated datamart templates
Purchase OrdersGJM10JUpload and manage purchase order records
AP Invoice BatchGJZJ4JImport accounts payable invoice batches
Parts InvoicesGJR01JUpload and process parts invoice transactions
Inventory UploadGJZJ7JImport and update inventory item records
Subcontract Change OrdersGJZJ40JUpload subcontractor change orders to job contracts
Upload EstimatesGJJ22CTJImport job cost estimates by cost code
Upload Forecast FinalGJJ36CTJSubmit final forecast values for job cost items
Revision to Estimate / Change OrdersGJJC1JPost revisions to job estimates and change orders
Internal Estimate ChangesGJJC5JRecord internal budget adjustments to job estimates
Record Job Unit Qty'sGJJ31JRecord unit quantities completed for job cost items
TakeoffGJJ72JImport quantity takeoff data for job estimating
Payment Certificate Progress to DateGJZJ41JSubmit progress billing payment certificate amounts
Job InvoicesGJRU22JGenerate and upload invoices for job contracts
Charge Parts to Jobs & Work OrdersGJRP88JPost parts and material charges to jobs or work orders
Customer Service ItemsGJZJ9JUpload and manage customer service item records
Equipment UsageGJES5JRecord equipment usage and hours against jobs

Options

Each call object supports the following options; each returns a different result set:

OptionResult
TemplateReturns the JSON template containing the data fields with no data.
DownloadReturns the JSON template populated with data.
ScanError scan only — does not upload data.
UpdateSubmits 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 ..."
}
FieldMeaning
isAuthenticatedThe user's credentials were accepted by the Jonas engine.
isValidThe requested operation completed successfully. For Login, this equals isAuthenticated. For JonasAPI, it reflects whether the underlying business method ran without error — gate "did the call succeed?" checks on this field.
dataA JSON-encoded JSON string — parse it a second time to read the result. For scan / update options, the parsed payload includes RecordsProcessed, ErrorsFound, and an errors[] array when validation fails. Empty string when no business payload is returned (e.g. Login).
messageDiagnostic 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 isValid is true and 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.

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.

MessageCause / action
Security token is requiredThe securityToken SOAP element was empty.
User name is requiredThe username SOAP element was empty.
Password is requiredThe password SOAP element was empty.
Account not foundThe securityToken doesn't match any registered tenant. Verify the token with Jonas support.
Communication info not foundThe tenant exists but has no communication endpoint configured. Contact Jonas support.
Failed to create communication clientThe service could not open a channel to the tenant's engine — typically a certificate issue. Contact Jonas support.
No response from PVX APIThe tenant's engine accepted the call but returned an empty response. Retry once; if persistent, contact Jonas support.
Web service errorAn 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

AspectValue
Maximum request size50 MB (after SOAP envelope & JSON encoding)
Maximum response size10 MB
Single-call latencyUp to ~10 minutes for large scan / update operations
Recommended HTTP client timeout≥ 12 minutes
Per-tenant concurrency5 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 Schema, Template, Download, Scan, and Update options. A typical SOAP call wraps the JSON apiParams payload inside the standard authentication envelope, 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>
        { "WebMethod": "GJZJ6J", "Option": "Schema", "CompanyCode": "JC" }
      </apiParams>
    </JonasAPI>
  </soap:Body>
</soap:Envelope>

Next steps