Library OpenApi Overview About these APIs Architecture Authentication Error Responses Locating a Server Sessions Design Guides Guides and Hints Examples Pricing for Websites Accepting Vouchers PreAuth Payment Replication Common Apis The most used APIs Create New Sale Payment Completion Multiple Locations Delivery Addresses Create New Sale v2 Customers Locations Products Staff WebHooks eCommerce Apis These APIs are often used with eCommerce website integrations Get Pricing Card Inquiry Report & Analysis Grouped or analysed report data. Typically used to build reports and dashboards Today Login Access Pinboard ReportRequest Advanced Information More indepth information Caller Handling HTTP Protocol Bulk Data Downloads Document Uploading RetailConfig Under Development Details of APIs that will be available shortly. Documentation provided is for early adopters Get Receipt

Fieldpine Architecture

The Fieldpine application uses a distributed database and server approach and can have multiple ways of being put together. This approach permits very high reliability for store trading operations and also flexibility to allow different technologies to be used for different purposes.

The notes below discuss in terms of connecting an external WebServer however it can be any technology external to the retailer private network, such as Mobile Apps or 3rd party applications, that is capable of requesting or receiving API messages.

Basic Configuration

API Server
aka
Store Server
Each retailer starts by having a Store-Server, which we will refer to as an API-Server. The API Server is essentially an application server and responds to various API calls.

The calls you make via the OpenApi interface will eventually be handled by an API Server somewhere.

Retailers may elect to run this server on a computer inside their store or network. While we call it a server, it can run on standard Windows desktops or Windows Server

Multi Store/Multi Lane Configuration

API Server
Store #1
Register
API Server
Store #2
Register
 
Register

If multiple stores exist, then a store server will often be deployed to each store. The lanes in that store communicate initially to their store server.

The store servers communicate with each other to stay in sync.

The term 'register' is used in the diagrams, but it can be any API consumer: executables, browsers, mobile apps, voice agents.

With many stores a head office server might be deployed to coordinate store servers

Register
Store #3
API Server
Store #1
Register
Head Office
Server
API Server
Store #2
Register
 
Register

A head office server is still an API Server, but amalgamates information from all the stores. While a store server knows about itself, a head office server knows more about all the stores.

Small stores can communicate directly to Head Office

As a developer, this simply means you might be talking to different servers for different reasons. If you are developing a mobile app for instore use, you will communicate to the local store server. If your solution is more enterprise wide, then you will use the head office server.

Despite there being multiple servers, as a developer you will still only need to talk to one server

Adding an External Webserver with Firewall Opening

Internet 
 
WebServerAPI Server
aka
Store Server

 

When a webserver is added if a port is opened in the router then the webserver can freely communicate to the API server.

This requires the retailer to open their firewall, to have static IP addresses, and to have the API server constantly running. We recommend using Cloudflare to provide additional protection for the API Server

In the documentation this method is called With Firewall and has potential access to the full set of OpenApi functions

Adding an External Webserver with Polling

Internet 
 
WebServer«API Server
aka
Store Server

If a firewall port is not opened, the API server can connect to the webserver. This means it can poll the webserver at regular intervals to send information and retrieve information.

While the polling technique works well, it does not fully permit the APIs provided under OpenApi to be used, so websites are limited in what they can do.

In the documentation this method is called With Polling and has access to a subset of API functions that have been specifically enabled.

Connecting to Fieldpine.com websites

Internet Fieldpine.com
 
WebServer API Server
aka
Store Server

Another option is that Fieldpine.com is able to act as a store server for a retailer as well. This is possible even if the firewall is closed, as the other store servers know they need to call out to Fieldpine when this is configured.

This means that internet sites can now use OpenApi, via Fieldpine.com to communicate directly to retailers systems.

Clearly, there is a lot of security around all this as well.

In the documentation this method is called Using Fieldpine and has potential access to the full set of OpenApi functions, although retailer configuration may be required to authorise some types of data transfer.

This configuration has 3 pricing plans, premium, standard and bulk. Each of these has slightly different characteristics.

BulkStandardPremium
ReliabilityBest EffortBest EffortServerless Design
Use Cases
  • Transaction Routing
  • General Purpose
  • Website integration
  • Mobile Apps
  • Customer/Supplier Portals
  • High Reliability
Data AccessNone, Cloned, Tunnel, PartialCloned, Tunnel, PartialVaries
Price PointVery low costStandardHigher
API RangeQueue type operations onlyAllSubset
/Sales (create)

Using a Relay Station

Internet Relay Server
 
Mobile App API Server
aka
Store Server

A less obvious option that can also be used is the use of a relay server. A relay server acts like a Post Office, or queue. Either party can send messages to the relay server and retrieve messages from it. This is not typically used for web servers, more for mobile apps or transient clients

Relay servers can be created using various technologies Azure/AWS Queues, blob storage, an FTP server, dweetpro.io and many more. The key concept is that the source app and api server both know where and how to leave messages for each other

When using a relay server the messages for each other would typically be encrypted or obfusticated.

In the documentation this method is called Using a Relay and has limited access to OpenApi functions. All API calls are possbile, but there can be long request/response delays. It is not a realtime technique.