AlmondTill/G3N API

Pick, pack and ship or hand over an order

Start the fulfilment job, pick it, pack it, and either ship it with the carrier or stage it for pickup and hand it to the customer.

Payments & fulfillment · a play in 4 steps.

The steps

  1. Start the fulfilment — the pick/pack/ship or pickup job. — createFulfillment
  2. Start picking — the picker takes the job — then pack it, sealed and ready. — startPickFulfillment, packFulfillment
  3. Ship it — it leaves with the carrier; shipped stock leaves your books. — shipFulfillment
  4. Or stage it for pickup and hand it to the customer — the delivery moment. — stagePickupFulfillment, handoverFulfillment

The calls

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

createFulfillment

createFulfillment — mutation · Start a fulfilment — the pick/pack/ship (or pickup) job for an order’s items.

Example request

mutation ExampleCreateFulfillment($input: NewFulfillmentInput!) {
  createFulfillment(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

Variables:

{
  "input": {
    "caption": "Blue jeans",
    "orderId": "01900000-0000-7000-8000-f6d8263a0000",
    "method": "ship",
    "lines": [
      {
        "orderLineNo": 1,
        "quantity": "2"
      }
    ]
  }
}

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

Example response

{
  "data": {
    "createFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

startPickFulfillment

startPickFulfillment — mutation · Start picking a fulfilment — the picker takes the job.

Example request

mutation ExampleStartPickFulfillment($id: ID!, $revision: ID!, $reason: String) {
  startPickFulfillment(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

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": {
    "startPickFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

packFulfillment

packFulfillment — mutation · Pack a picked fulfilment — sealed and ready to go.

Example request

mutation ExamplePackFulfillment($id: ID!, $revision: ID!, $reason: String) {
  packFulfillment(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

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": {
    "packFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

shipFulfillment

shipFulfillment — mutation · Ship a fulfilment — it leaves with the carrier.

Example request

mutation ExampleShipFulfillment($input: ShipFulfillmentInput!) {
  shipFulfillment(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

Variables:

{
  "input": {
    "fulfillmentId": "01900000-0000-7000-8000-82dcede40000",
    "expectedRevision": "01900000-0000-7000-8000-e02b2e6c0000",
    "shipTo": {
      "name": "Blue jeans",
      "addressLines": [
        "<address lines>"
      ],
      "city": "Toronto",
      "region": "ON",
      "countryCode": "CA"
    }
  }
}

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

Example response

{
  "data": {
    "shipFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

stagePickupFulfillment

stagePickupFulfillment — mutation · Stage a pickup fulfilment — ready and waiting for the customer.

Example request

mutation ExampleStagePickupFulfillment($id: ID!, $revision: ID!, $reason: String) {
  stagePickupFulfillment(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

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": {
    "stagePickupFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}

handoverFulfillment

handoverFulfillment — mutation · Hand a pickup fulfilment to the customer — the goods change hands.

Example request

mutation ExampleHandoverFulfillment($id: ID!, $revision: ID!, $reason: String) {
  handoverFulfillment(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    orderId
    organizationId
    method
    carrierName
    trackingRef
    packedAt
  }
}

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": {
    "handoverFulfillment": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "FF-EXMP-0000-000F",
      "type": "Fulfillment",
      "caption": "Blue jeans",
      "status": "pending",
      "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",
      "orderId": "01900000-0000-7000-8000-f6d8263a0000",
      "organizationId": "01900000-0000-7000-8000-44b781470000",
      "method": "ship",
      "carrierName": "Blue jeans",
      "trackingRef": "<tracking ref>",
      "packedAt": "2027-01-31T00:00:00.000Z"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}