AlmondTill/G3N API

Set up a register position — and shut a lost till off

Create the till position a device drives, point the paired device at it, record the printer, scanner or card reader on the device — and when a till is lost or compromised, suspend it immediately and retire it for good.

POS estate · a play in 4 steps.

The steps

  1. Create the register — one till position. — createRegister
  2. Point the paired device at it — which drawer this till drives. — pairDeviceToRegister
  3. Record the peripheral on the device — printer, scanner, card reader. — createDevicePeripheral
  4. A till is lost or compromised: suspend it — it stops immediately — clear its register binding, and retire it for good when it will not come back. — suspendDevice, unpairDevice, doomDevice

The calls

Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.

createRegister

createRegister — mutation · Create a new register — one till position a device drives at your organization.

Example request

mutation ExampleCreateRegister($input: NewRegisterInput!) {
  createRegister(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    code
  }
}

Variables:

{
  "input": {
    "caption": "Blue jeans",
    "logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000"
  }
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "createRegister": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "RG-EXMP-0000-000F",
      "type": "Register",
      "caption": "Blue jeans",
      "status": "active",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

pairDeviceToRegister

pairDeviceToRegister — mutation · Point a POS device at a register — which drawer this till drives.

Example request

mutation ExamplePairDeviceToRegister($input: PairDeviceToRegisterInput!) {
  pairDeviceToRegister(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    deviceType
    registerId
    code
  }
}

Variables:

{
  "input": {
    "deviceId": "01900000-0000-7000-8000-7c291d9e0000",
    "registerId": "01900000-0000-7000-8000-c30413dd0000",
    "expectedRevision": "01900000-0000-7000-8000-e02b2e6c0000"
  }
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "pairDeviceToRegister": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "DE-EXMP-0000-000F",
      "type": "Device",
      "caption": "Blue jeans",
      "status": "pending_pairing",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "deviceType": "pos_native_ios_phone",
      "registerId": "01900000-0000-7000-8000-c30413dd0000",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

createDevicePeripheral

createDevicePeripheral — mutation · Create a new device peripheral — a printer, scanner, or card reader on a device at your organization.

Example request

mutation ExampleCreateDevicePeripheral($input: NewDevicePeripheralInput!) {
  createDevicePeripheral(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    peripheralType
    model
    connection
    readerRef
  }
}

Variables:

{
  "input": {
    "caption": "Blue jeans",
    "deviceId": "01900000-0000-7000-8000-7c291d9e0000",
    "peripheralType": "barcode_scanner",
    "model": "<model>",
    "connection": "native_usb"
  }
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "createDevicePeripheral": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "PH-EXMP-0000-000F",
      "type": "DevicePeripheral",
      "caption": "Blue jeans",
      "status": "active",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "peripheralType": "barcode_scanner",
      "model": "<model>",
      "connection": "native_usb",
      "readerRef": "<reader ref>"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

suspendDevice

suspendDevice — mutation · Suspend a device — the kill switch for a lost or compromised till.

Example request

mutation ExampleSuspendDevice($id: ID!, $revision: ID!, $reason: String) {
  suspendDevice(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    deviceType
    registerId
    code
  }
}

Variables:

{
  "id": "01900000-0000-7000-8000-37386ae00000",
  "revision": "01900000-0000-7000-8000-b7960e180000",
  "reason": "Correcting a miscount."
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "suspendDevice": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "DE-EXMP-0000-000F",
      "type": "Device",
      "caption": "Blue jeans",
      "status": "pending_pairing",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "deviceType": "pos_native_ios_phone",
      "registerId": "01900000-0000-7000-8000-c30413dd0000",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

unpairDevice

unpairDevice — mutation · Clear a device’s register binding.

Example request

mutation ExampleUnpairDevice($input: UnpairDeviceInput!) {
  unpairDevice(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    deviceType
    registerId
    code
  }
}

Variables:

{
  "input": {
    "deviceId": "01900000-0000-7000-8000-7c291d9e0000",
    "expectedRevision": "01900000-0000-7000-8000-e02b2e6c0000"
  }
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "unpairDevice": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "DE-EXMP-0000-000F",
      "type": "Device",
      "caption": "Blue jeans",
      "status": "pending_pairing",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "deviceType": "pos_native_ios_phone",
      "registerId": "01900000-0000-7000-8000-c30413dd0000",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

doomDevice

doomDevice — mutation · Permanently retire a registered device — a till, terminal, or bridge your group enrolled.

Example request

mutation ExampleDoomDevice($id: ID!, $revision: ID!, $reason: String) {
  doomDevice(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    deviceType
    registerId
    code
  }
}

Variables:

{
  "id": "01900000-0000-7000-8000-37386ae00000",
  "revision": "01900000-0000-7000-8000-b7960e180000",
  "reason": "Correcting a miscount."
}

Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.

Example response

{
  "data": {
    "doomDevice": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "DE-EXMP-0000-000F",
      "type": "Device",
      "caption": "Blue jeans",
      "status": "pending_pairing",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "deviceType": "pos_native_ios_phone",
      "registerId": "01900000-0000-7000-8000-c30413dd0000",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}