# Capabilities

## Overview

NexumAPI is the quickest way to use SymXchange and fortunately it comes with a growing feature set of new capabilities. Discover what's possible and what's coming to NexumAPI.

<table><thead><tr><th width="150">Feature</th><th width="242">Description</th><th>Status</th></tr></thead><tbody><tr><td><a href="#restful-interface-in-json">RESTful interface in JSON</a></td><td>all SymXchange services and operations are available through NexumAPI in JSON</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#full-content-symx-api-reference">Full content SymX API reference</a></td><td>end-to-end coverage of parameter descriptions and mocks with working playground requests (5 out of 36 complete)</td><td><mark style="color:yellow;"><code>In Progress</code></mark></td></tr><tr><td><a href="#http-error-codes">HTTP error codes</a></td><td>all SymXchange error responses are translated to HTTP error codes for better stack management</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#recursive-order-agnostic-request-elements">Recursive order agnostic request elements</a></td><td>ignore the schema-mandated ordering of request elements</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#form-urlencoded-content-type">Form URLEncoded content-type</a></td><td>send silent NaaS requests through custom PowerOn requests</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#multi-version-support">Multi-version support</a></td><td>we maintain translations for all supported SymXchange versions</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#symxchange-native-passthrough">SymXchange native passthrough</a></td><td>gain insight on all third-party connections to your SymXchange instance</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#detailed-logging-transports">Detailed logging transports</a></td><td>track all SymXchange requests and bubble up critical user information with little to no configuration</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#managed-infrastructure">Managed infrastructure</a></td><td>we manage all of the infrastructure</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#automatic-updates">Automatic updates</a></td><td>we automatically update NexumAPI on new releases</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#load-balancing-and-auto-scaling">Load balancing &#x26; auto scaling</a></td><td>we will load balance requests and automatically provision new compute resources to meet any demand</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#high-availability">High availability</a></td><td>we host your NexumAPI instance in multiple availability zones to ensure that we're always operational</td><td><mark style="color:green;"><code>Available</code></mark></td></tr><tr><td><a href="#custom-chained-actions">Custom chained actions</a></td><td>we're building custom routes which combine popular requests to reduce development burden</td><td><mark style="color:orange;"><code>Coming soon</code></mark></td></tr></tbody></table>

## RESTful interface in JSON

NexumAPI provides a way to interact with Symitar data strictly from JSON in a RESTful-like way using a proprietary translation engine compiled in native code for virtually no impacts on performance.

> "...NexumAPI isn’t just another middleware or endpoint; it’s a revolution for Symitar credit unions. It transforms the way we interact with the Symitar database, replacing outdated software and systems with a modern, streamlined approach. It significantly lowers the barrier to entry for working with the Symitar database via SymXchange..." — *Ray Satterfield, Programmer II, Dover Federal Credit Union*

## Full content SymX API reference

We provide a complete SymXchange API reference for every service and operation to use with NexumAPI. This includes detailed parameter descriptions, references to [Symitar eDocs](https://learnmore.symitar.com/edocs/#enus/GUID-E38BF7C1-D941-4A30-99E0-206788EF9D89.html), and working request payloads for the NexumAPI Playground or your credit unions environment.

{% hint style="warning" %}
We're working hard to provide complete coverage for detailed parameter descriptions and working sample request payloads for each operation through a mix of generative AI, our translation engine, and manual validation. Below is a list of full-content SymX services maintained in a best effort fashion and may not reflect all changes being made.\
\
[Full-content SymX services (7 of 36)](#user-content-fn-1)[^1]

* [BatchJobService](/nexum/symxchange/api-reference/persistent/batchjobsservice.md)
* [InformationService](/nexum/symxchange/api-reference/persistent/informationservice.md)
* [FindByService](/nexum/symxchange/api-reference/persistent/findbyservice.md)
* [PowerOnService](/nexum/symxchange/api-reference/persistent/poweronservice.md)
* [SymXchangeVerificationService](https://github.com/libum-llc/corporate-docs/blob/main/src/nexum/symxchange/api-reference/persistent/symxverificationservice.md)
* [UserService](/nexum/symxchange/api-reference/persistent/userservice.md)
* [UserManagementService](/nexum/symxchange/api-reference/persistent/usermanagementservice.md)
  {% endhint %}

## HTTP error codes

NexumAPI uses the standard HTTP status codes to indicate the success or failure of an API request. The <mark style="color:purple;">`2xx`</mark> codes will generally indicate success, <mark style="color:purple;">`4xx`</mark> will indicate an error within the information provided (e.g. invalid payload), and <mark style="color:purple;">`5xx`</mark> will indicate an error on our side (this shouldn't happen).

```http
              
              200 - OK  Everything worked as intended.
          
     400 - Bad Request  Request was unacceptable.
          
       404 - Not Found  Endpoint doesn't exist, resource not found.
   
    500 - Server Error  Something happened within NexumAPI.

```

{% hint style="info" %}
**Symitar eDocs References:** [SymXchange Specification Response Codes](https://learnmore.symitar.com/edocs/#h2d/Admin/symconnect/syc_specresponsecodes.html), [SymXchange Error Messages](https://learnmore.symitar.com/edocs/#xml/DeviceControl/PagerSymExchangeErrorMessages_Ref.html), [SymXchange Error Codes](https://learnmore.symitar.com/edocs/#Guides/SymXchangeDevelopersGuide/SymXErrorCodes_R.html)
{% endhint %}

## Recursive order agnostic request elements

NexumAPI provides flexibility when constructing SymXchange request payloads. This prevents developers from having to reference a schema and ensure the order of their many request elements match 100%. We take care of this for every request, no matter the depth.

## Form URLEncoded content-type

NexumAPI supports the <mark style="color:purple;">`application/x-www-form-urlencoded`</mark> content-type for all requests, enabling developers to easily send silent HTTP requests from inline PowerOn.

Check out our white paper on sending a NexumAPI request via Validation PowerOn to circumvent inherent PowerOn limitations:

{% file src="/files/EK9hpFvSDxCnplE5PLIx" %}
Using NexumAPI as a Service (NaaS) with a Validation PowerOn, October 2023
{% endfile %}

## Multi-version support

NexumAPI supports every Jack Henry supported SymXchange version (<mark style="color:purple;">`v2018`</mark> through <mark style="color:purple;">`v2023`</mark> + <mark style="color:purple;">`Persistent endpoint`</mark>).

## SymXchange native passthrough

<mark style="color:blue;">`Libum-hosted`</mark> • Most third-party SymXchange traffic is unknown to a credit union unless there's a failure. Even then, it can be tricky to quickly access and interpret the available logging information. NexumAPI can gain insight on all third-party traffic over any SymXchange instance without making any internal Symitar configuration changes, simply tell your vendor to access SymXchange through a new endpoint.

{% hint style="success" %}
The participating third-party can send either native SymXchange or NexumAPI request payloads to the endpoint and the traffic is interpreted and logged just the same.
{% endhint %}

## Detailed logging transports

All NexumAPI traffic is accessible through all logging transports and bubbles up critical user identifying information desired by auditors. Even further, this can be coupled with NexumAPI attributes using <mark style="color:purple;">`customFields`</mark> to expose custom metadata to various logging levels.

## Managed infrastructure

<mark style="color:blue;">`Libum-hosted`</mark> • NexumAPI is available on a completely managed infrastructure with availability subject to our published [SLA](https://libum.io/legal/sla/). For those wondering, this is handled completely by infrastructure as code (IaC) on a serverless compute engine on AWS.

## Automatic updates

<mark style="color:blue;">`Libum-hosted`</mark> • As new features become available, NexumAPI will automatically be updated using non-invasive techniques keeping your institution on the latest release without the need for scheduled updates or even downtime.

## Load balancing & auto scaling

<mark style="color:blue;">`Libum-hosted`</mark> • Given NexumAPI's infrastructure is serverless it is also governed by a load balancer such that it automatically distributes incoming application traffic across multiple targets and virtual appliances to meet your SymXchange demand.

## High availability

<mark style="color:blue;">`Libum-hosted`</mark> • NexumAPI is spread across multiple availability zones to meet the standards described in our [SLA](https://libum.io/legal/sla/).

## Custom chained actions

NexumAPI is constantly being equipped with new custom request paths that provide developers a nice alternative to self-managing tedious chained SymXchange calls (e.g. <mark style="color:purple;">`findbySSN`</mark> + <mark style="color:purple;">`getAccount`</mark>).

[^1]: as of Jul 18, 2024


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.libum.io/nexum/capabilities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
