FD1 Client Protocol
Library Developer Home FD1 Client Protocol Home Conceptual Overview Using GET/POST Protocol Definition Authentication Authorisation Firehoses Examples General curl websocat Major APIs / Endpoints Endpoint Overview Accounts Customers Fetch Data Departments Devices Locations Products Sales Session Less Common Endpoints User Interface Worked Examples Temperature Monitor Custom Report Instore Customer Display External Customer Display Cross Domain Reporting Advanced Integration FieldpineDevices External Website Schema Definitions custdisp.sale.* device.bluetooth.announcement device.scale.reading firehose.status sale.create sale.read Diagnostic Schema tufe.error tusp.entry

Conceptual Overview

Understanding the complete picture can make using a new protocol easier, so this page attempts to lift the veil a little and explain at a higher level.

This page outlines at a high level, where information here conflicts with technical documentation, the technical documentation is correct

Multiple Servers

FD1 servers are designed around multiple redundant servers. Most cloud solutions take a domain like retail.example.com and point to a processing facility, where high end routers, load balancers and other hardware send it to a final computer. Fd1 uses exactly that method as well, but we additionally spin up completely seperate domains, in different locations. So, while retail.example.com may be your primary domain, you might also be able to use custard-rhubard-14.germany-hosting-provider.de

As a developer, you can simply use one domain, as per classic solutions, or you can add logic to dynamically switch target domains. We help you with how to do that.

With this approach in place, it also means we can deploy a "web server" into your computers in store. This is what Fieldpine Devices is for. Local PCs of course aren't typically reachable from the internet, or are rebooted regularly for "windows updates", or are just plain turned off by staff. If we go cloud only, reliability depends on cloud servers and internet working, if we go local only, reliability depends on less reliable hardware and environments.

iPad
InStore Server
Fieldpine Cloud Sever

Cloud Sever B

So, Fieldpine FD1 is generally talking to servers that are self redundant. An ordering iPad in store should connect to the local stores FieldpineDevices if available, but if not, it should silently fail over to your cloud servers. To do this reliably, client code needs to handle it. It's not hard to do generally. While you might think we can get around this with DNS, thats not really true due to caching delays and that we cannot issue HTTPS certificates

And, one added bonus, we charge for traffic in/out of Fieldpine servers, so the iPad in store talking to a local in store FieldpineDevices? Not talking to Fieldpine = not being charged. Of course there is traffic to Fieldpine Servers still, but the volume is much lower. And from our perspective, while we forgo some potential revenue, it means you aren't betting your stores operation on a cloud server being reachable 24/7, this directly translates to much less stress for support

Everything is a Table

To keep FD1 protocol simple, we try and model everything as a table. This doesn't mean it is internally stored in a SQL table, simply the view presented is a flat table like structure. The table "products", might look like this

IdDescriptionSkuInStockPriceLast Supplier
100Plastic BucketPB111.98Acme Buckets
101Stainless BucketSB10142.50Acme Buckets

When a table is editted, we typically store everything in a log table, and the "products" you see is the last version of that. The log tables don't actually look like this, just keeping it simple for now

Date UTCIdDescriptionSku
1-jan-2026 14:00100bucket, plastic. Ace rangePB1
1-jan-2026 14:02101Stainless BucketPB1
1-jan-2026 15:12101Stainless BucketSB1
2-jan-2026 9:05100platsic bucketPB1
2-jan-2026 9:06100Plastic BucketPB1

Columns "price" and "last supplier" may not reside in the log table as saved facts, but probably come from somewhere else. Price depends on who you are. A checkout in a store probably wants to see "local store price", while a customer portal should see any customer specific pricing.