From 5f44b2c0b42217acf91f1690205ae6d7658613e7 Mon Sep 17 00:00:00 2001 From: "Ronald A. Richardson" Date: Fri, 21 Aug 2026 20:45:22 +0800 Subject: [PATCH] feat(pallet): add the Pallet API collection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Covers the Fleetbase Pallet consumable API — inventory and warehouse management — across thirteen resources and sixty requests, in the repo's Local Mode layout with the legacy single-file placeholder alongside it. Folders are ordered so a full run builds its own fixtures and tears them down afterwards. Deletes live in a Cleanup folder at the end rather than closing each resource folder, because deleting as you go removes the very records the later folders reference. Fixture SKUs and warehouse codes carry {{$timestamp}}: both are unique columns, so fixed values let the collection succeed exactly once. The collection-level afterResponse script asserts 2xx, a JSON body, and no error payload, plus one Pallet-specific check — that no uuid-bearing key appears in any response. Public ids are the addressing scheme for this API, so a uuid on the wire means an internal identifier leaked. That check found a real leak in the audits endpoint during authoring, fixed in fleetbase/pallet. Coverage was verified by diffing the collection's requests against the routes the application actually registers: sixty for sixty, nothing missing in either direction. The eight PATCH routes are PUT aliases and are documented once, as the other collections here do. validate-collections.js asserted an exact count of five collections, which a sixth necessarily fails. Co-Authored-By: Claude Fable 5 --- .postman/resources.yaml | 1 + collections/apis/pallet-api/README.md | 44 ++++++++++ collections/apis/pallet-api/collection.yaml | 17 ++++ package.json | 1 + .../.resources/definition.yaml | 50 +++++++++++ .../Audits/.resources/definition.yaml | 4 + .../Audits/.resources/object.yaml | 32 ++++++++ .../Audits/List Audits.queryParams.yaml | 14 ++++ .../Audits/List Audits.request.yaml | 16 ++++ .../Retrieve an Audit Entry.request.yaml | 8 ++ .../Batches/.resources/definition.yaml | 4 + .../Batches/.resources/object.yaml | 30 +++++++ .../Batches/List Batches.queryParams.yaml | 14 ++++ .../Batches/List Batches.request.yaml | 16 ++++ .../Batches/Retrieve a Batch.request.yaml | 8 ++ .../Bin Locations/.resources/definition.yaml | 4 + .../Bin Locations/.resources/object.yaml | 37 +++++++++ .../Create Bin Location.params.yaml | 13 +++ .../Create Bin Location.request.yaml | 26 ++++++ .../List Bin Locations.queryParams.yaml | 14 ++++ .../List Bin Locations.request.yaml | 8 ++ .../Retrieve a Bin Location.request.yaml | 8 ++ .../Update Bin Location.params.yaml | 5 ++ .../Update Bin Location.request.yaml | 16 ++++ .../Cleanup/.resources/definition.yaml | 4 + .../Cleanup/Delete Bin Location.request.yaml | 8 ++ .../Delete Cancelled Transfer.request.yaml | 8 ++ .../Delete Destination Warehouse.request.yaml | 8 ++ .../Delete Product Variant.request.yaml | 8 ++ .../Cleanup/Delete Product.request.yaml | 8 ++ .../Delete Purchase Order.request.yaml | 8 ++ .../Cleanup/Delete Sales Order.request.yaml | 8 ++ .../Cleanup/Delete Stock Product.request.yaml | 8 ++ .../Delete Stock Transfer.request.yaml | 8 ++ .../Cleanup/Delete Supplier.request.yaml | 8 ++ .../Delete Warehouse Zone.request.yaml | 8 ++ .../Cleanup/Delete Warehouse.request.yaml | 8 ++ .../Inventory/.resources/definition.yaml | 4 + .../Inventory/.resources/object.yaml | 53 ++++++++++++ .../Check Availability.queryParams.yaml | 14 ++++ .../Inventory/Check Availability.request.yaml | 8 ++ .../Inventory/List Inventory.queryParams.yaml | 14 ++++ .../Inventory/List Inventory.request.yaml | 16 ++++ .../Retrieve a Stock Record.request.yaml | 8 ++ .../.resources/definition.yaml | 4 + .../Product Variants/.resources/object.yaml | 40 +++++++++ .../Create Product Variant.params.yaml | 16 ++++ .../Create Product Variant.request.yaml | 27 ++++++ .../List Product Variants.queryParams.yaml | 14 ++++ .../List Product Variants.request.yaml | 8 ++ .../Retrieve a Product Variant.request.yaml | 8 ++ .../Update Product Variant.params.yaml | 5 ++ .../Update Product Variant.request.yaml | 16 ++++ .../Products/.resources/definition.yaml | 4 + .../Products/.resources/object.yaml | 82 +++++++++++++++++++ .../Products/Create Product.params.yaml | 27 ++++++ .../Products/Create Product.request.yaml | 28 +++++++ .../Products/Create Stock Product.params.yaml | 6 ++ .../Create Stock Product.request.yaml | 26 ++++++ .../Products/List Products.queryParams.yaml | 14 ++++ .../Products/List Products.request.yaml | 8 ++ .../Products/Retrieve a Product.request.yaml | 8 ++ .../Products/Update Product.params.yaml | 8 ++ .../Products/Update Product.request.yaml | 16 ++++ .../.resources/definition.yaml | 4 + .../Purchase Orders/.resources/object.yaml | 47 +++++++++++ .../Create Purchase Order.params.yaml | 23 ++++++ .../Create Purchase Order.request.yaml | 29 +++++++ .../List Purchase Orders.queryParams.yaml | 14 ++++ .../List Purchase Orders.request.yaml | 8 ++ .../Purchase Orders/Receive Goods.params.yaml | 17 ++++ .../Receive Goods.request.yaml | 18 ++++ .../Retrieve a Purchase Order.request.yaml | 8 ++ .../Update Purchase Order.params.yaml | 5 ++ .../Update Purchase Order.request.yaml | 16 ++++ .../Sales Orders/.resources/definition.yaml | 4 + .../Sales Orders/.resources/object.yaml | 43 ++++++++++ .../Create Sales Order.params.yaml | 20 +++++ .../Create Sales Order.request.yaml | 28 +++++++ .../Sales Orders/Fulfill Order.params.yaml | 11 +++ .../Sales Orders/Fulfill Order.request.yaml | 18 ++++ .../List Sales Orders.queryParams.yaml | 14 ++++ .../List Sales Orders.request.yaml | 8 ++ .../Retrieve a Sales Order.request.yaml | 8 ++ .../Update Sales Order.params.yaml | 5 ++ .../Update Sales Order.request.yaml | 16 ++++ .../.resources/definition.yaml | 4 + .../Stock Adjustments/.resources/object.yaml | 36 ++++++++ .../Adjust Stock.params.yaml | 24 ++++++ .../Adjust Stock.request.yaml | 28 +++++++ .../List Stock Adjustments.queryParams.yaml | 14 ++++ .../List Stock Adjustments.request.yaml | 8 ++ .../Retrieve a Stock Adjustment.request.yaml | 8 ++ .../.resources/definition.yaml | 4 + .../Stock Transfers/.resources/object.yaml | 45 ++++++++++ .../Approve Transfer.request.yaml | 8 ++ .../Cancel Transfer.request.yaml | 8 ++ .../Create Stock Transfer.params.yaml | 19 +++++ .../Create Stock Transfer.request.yaml | 28 +++++++ .../Create Transfer to Cancel.request.yaml | 29 +++++++ .../List Stock Transfers.queryParams.yaml | 14 ++++ .../List Stock Transfers.request.yaml | 8 ++ .../Receive Transfer.request.yaml | 8 ++ .../Retrieve a Stock Transfer.request.yaml | 8 ++ .../Ship Transfer.request.yaml | 8 ++ .../Suppliers/.resources/definition.yaml | 4 + .../Suppliers/.resources/object.yaml | 36 ++++++++ .../Suppliers/Create Supplier.params.yaml | 12 +++ .../Suppliers/Create Supplier.request.yaml | 25 ++++++ .../Suppliers/List Suppliers.queryParams.yaml | 14 ++++ .../Suppliers/List Suppliers.request.yaml | 8 ++ .../Retrieve a Supplier.request.yaml | 8 ++ .../Suppliers/Update Supplier.params.yaml | 5 ++ .../Suppliers/Update Supplier.request.yaml | 16 ++++ .../.resources/definition.yaml | 4 + .../Warehouse Zones/.resources/object.yaml | 33 ++++++++ .../Create Warehouse Zone.params.yaml | 13 +++ .../Create Warehouse Zone.request.yaml | 26 ++++++ .../List Warehouse Zones.queryParams.yaml | 14 ++++ .../List Warehouse Zones.request.yaml | 8 ++ .../Retrieve a Warehouse Zone.request.yaml | 8 ++ .../Update Warehouse Zone.params.yaml | 5 ++ .../Update Warehouse Zone.request.yaml | 16 ++++ .../Warehouses/.resources/definition.yaml | 4 + .../Warehouses/.resources/object.yaml | 40 +++++++++ .../Create Destination Warehouse.params.yaml | 6 ++ .../Create Destination Warehouse.request.yaml | 25 ++++++ .../Warehouses/Create Warehouse.params.yaml | 12 +++ .../Warehouses/Create Warehouse.request.yaml | 25 ++++++ .../List Warehouses.queryParams.yaml | 14 ++++ .../Warehouses/List Warehouses.request.yaml | 8 ++ .../Retrieve a Warehouse.request.yaml | 8 ++ .../Warehouses/Update Warehouse.params.yaml | 5 ++ .../Warehouses/Update Warehouse.request.yaml | 16 ++++ scripts/validate-collections.js | 2 +- 135 files changed, 2064 insertions(+), 1 deletion(-) create mode 100644 collections/apis/pallet-api/README.md create mode 100644 collections/apis/pallet-api/collection.yaml create mode 100644 postman/collections/Fleetbase Pallet API/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Audits/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Audits/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Audits/List Audits.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Audits/List Audits.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Audits/Retrieve an Audit Entry.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Batches/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Batches/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Batches/List Batches.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Batches/List Batches.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Batches/Retrieve a Batch.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/Retrieve a Bin Location.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Bin Location.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Cancelled Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Destination Warehouse.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Product Variant.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Purchase Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Sales Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Supplier.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse Zone.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/Check Availability.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/Check Availability.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/List Inventory.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/List Inventory.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Inventory/Retrieve a Stock Record.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/Retrieve a Product Variant.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Create Product.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Create Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Create Stock Product.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Create Stock Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/List Products.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/List Products.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Retrieve a Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Update Product.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Products/Update Product.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Retrieve a Purchase Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Retrieve a Sales Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Adjustments/Retrieve a Stock Adjustment.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Approve Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Cancel Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Create Transfer to Cancel.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Receive Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Retrieve a Stock Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Stock Transfers/Ship Transfer.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/Retrieve a Supplier.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/Retrieve a Warehouse Zone.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/.resources/definition.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/.resources/object.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.queryParams.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Retrieve a Warehouse.request.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.params.yaml create mode 100644 postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.request.yaml diff --git a/.postman/resources.yaml b/.postman/resources.yaml index 359e9f8..15690dc 100644 --- a/.postman/resources.yaml +++ b/.postman/resources.yaml @@ -9,6 +9,7 @@ localResources: - ../postman/collections/Fleetbase Ledger API - ../postman/collections/Fleetbase Storefront API - ../postman/collections/Fleetbase Integrated Vendor Flow + - ../postman/collections/Fleetbase Pallet API environments: - ../postman/environments/local.environment.yaml - ../postman/environments/qa.environment.yaml diff --git a/collections/apis/pallet-api/README.md b/collections/apis/pallet-api/README.md new file mode 100644 index 0000000..9fef16c --- /dev/null +++ b/collections/apis/pallet-api/README.md @@ -0,0 +1,44 @@ +# Pallet API Collection + +Reference collection for the Fleetbase Pallet consumable API — inventory and warehouse management. + +## Variables + +- `base_url` +- `namespace` (`v1`) +- `api_prefix` (`pallet`) +- `api_key` + +## Auth + +Requests inherit bearer token authentication from the collection. The middleware behind these +routes is named `AuthenticateOnceWithBasicAuth` but reads `Authorization: Bearer`, so HTTP basic +auth will not authenticate. Store real API keys locally or in Postman Vault. + +## Coverage + +The editable Postman Local Mode collection lives at `postman/collections/Fleetbase Pallet API`. +It uses `api_prefix=pallet` and `namespace=v1`, so URLs resolve as +`{{base_url}}/{{api_prefix}}/{{namespace}}/...`. + +Thirteen resources: products, product variants, suppliers, warehouses, warehouse zones, bin +locations, inventory, stock adjustments, purchase orders, sales orders, stock transfers, batches +and audits. + +## Running in order + +The folders are ordered so a full run builds its own fixtures: a product, supplier and warehouse +are created first and their public ids captured into environment variables, then zones and bins, +then the orders and transfers that consume them. Requests that address a record created earlier +use those captured variables rather than hardcoded ids. + +## What the API will not do + +Four resources deliberately refuse writes, so there are no requests here for them: + +- stock levels have no create, update or delete — stock follows from operations +- adjustments cannot be updated or deleted — correcting one means making another +- batches are read-only — a batch is produced by receiving stock +- audit entries are read-only — they are written by the system + +Transfers follow the same principle: no settable status, only the transition endpoints. diff --git a/collections/apis/pallet-api/collection.yaml b/collections/apis/pallet-api/collection.yaml new file mode 100644 index 0000000..ccec0fd --- /dev/null +++ b/collections/apis/pallet-api/collection.yaml @@ -0,0 +1,17 @@ +type: collection +name: Pallet API +version: 1.0.0 +description: Legacy single-file placeholder. The editable Postman Local Mode collection lives at postman/collections/Fleetbase Pallet API. +auth: + type: bearer + bearer: + - key: token + value: "{{api_key}}" + type: string +variables: + - key: base_url + value: "{{base_url}}" + - key: namespace + value: "{{namespace}}" + - key: api_prefix + value: pallet diff --git a/package.json b/package.json index 7646f98..8088b04 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "postman:run:core": "./scripts/run-collection.sh 'postman/collections/Fleetbase Core API'", "postman:run:storefront": "./scripts/run-collection.sh 'postman/collections/Fleetbase Storefront API'", "postman:run:ledger": "./scripts/run-collection.sh 'postman/collections/Fleetbase Ledger API'", + "postman:run:pallet": "./scripts/run-collection.sh 'postman/collections/Fleetbase Pallet API'", "postman:run:integrated-vendor": "./scripts/run-collection.sh 'postman/collections/Fleetbase Integrated Vendor Flow'" }, "keywords": [ diff --git a/postman/collections/Fleetbase Pallet API/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/.resources/definition.yaml new file mode 100644 index 0000000..341663d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/.resources/definition.yaml @@ -0,0 +1,50 @@ +$kind: collection +variables: + base_url: "" + namespace: v1 + api_prefix: pallet + api_key: "" +scripts: + - type: http:afterResponse + code: | + // Baseline contract assertions for every request in this collection. + // + // Status is checked against an explicit list. `pm.expect(pm.response).to.be.ok` + // is chai's truthiness check on an object, so it passes for a 400 too and + // asserts nothing. + const expected = pm.request.method === 'POST' ? [200, 201, 202] : [200, 201, 202, 204]; + + pm.test(`${pm.info.requestName} responds 2xx`, function () { + pm.expect(pm.response.code, `got HTTP ${pm.response.code}`).to.be.oneOf(expected); + }); + + pm.test(`${pm.info.requestName} returns a JSON body`, function () { + pm.expect(pm.response.headers.get('Content-Type') || '').to.include('json'); + pm.expect(() => pm.response.json(), 'body is not parseable JSON').to.not.throw(); + }); + + // The Pallet consumable API reports failure as {"error": "..."}, so a 2xx + // carrying one is still a failure. + pm.test(`${pm.info.requestName} returns no error payload`, function () { + let body; + try { body = pm.response.json(); } catch (e) { return; } + if (body === null || typeof body !== 'object') { return; } + pm.expect(body.error === null || body.error === undefined, + `response carries an "error": ${JSON.stringify(body.error)}`).to.be.true; + }); + + // Public ids are the addressing scheme; a uuid in a response body means an + // internal identifier leaked into the consumable representation. + pm.test(`${pm.info.requestName} exposes no internal uuids`, function () { + let body; + try { body = pm.response.json(); } catch (e) { return; } + const keys = JSON.stringify(body).match(/"[a-z_]*uuid"/g) || []; + pm.expect(keys, `response carries uuid keys: ${keys.join(', ')}`).to.be.empty; + }); + language: text/javascript +auth: + - id: 1be408ef-ea43-4cff-962a-fa7d6b7d7fbc + type: bearer + name: bearer auth + credentials: + token: "{{api_key}}" diff --git a/postman/collections/Fleetbase Pallet API/Audits/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Audits/.resources/definition.yaml new file mode 100644 index 0000000..841415c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Audits/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + The operational audit trail, read only. Entries are written by the system as operations happen; one a consumer could author would not be a record of anything. +order: 2200 diff --git a/postman/collections/Fleetbase Pallet API/Audits/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Audits/.resources/object.yaml new file mode 100644 index 0000000..fec9041 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Audits/.resources/object.yaml @@ -0,0 +1,32 @@ +$kind: object +name: Audit +description: |- + An immutable record of an operation that took place. +example: | + { + "id": "audit_w4x5y6", + "object": "audit", + "event_type": "po_received", + "action": "received", + "type": "partial", + "reason": null, + "subject": "purchase_order_v4w5x6", + "subject_type": "PurchaseOrder", + "old_values": null, + "new_values": null, + "meta": { "order_number": "purchase_order_v4w5x6" }, + "created_at": "2026-08-20T14:30:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the audit entry." + - name: event_type + type: string + description: "The kind of event recorded." + - name: subject + type: string + description: "Public id of the record the event happened to." + - name: subject_type + type: string + description: "Short type name of the subject, not the fully qualified class." diff --git a/postman/collections/Fleetbase Pallet API/Audits/List Audits.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Audits/List Audits.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Audits/List Audits.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Audits/List Audits.request.yaml b/postman/collections/Fleetbase Pallet API/Audits/List Audits.request.yaml new file mode 100644 index 0000000..c6cccdd --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Audits/List Audits.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: List audit entries +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/audits" +method: GET +headers: + - key: Accept + value: application/json +scripts: + - type: afterResponse + code: | + // Later requests address {{audit_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body[0].id; + if (captured) { pm.environment.set("audit_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Audits/Retrieve an Audit Entry.request.yaml b/postman/collections/Fleetbase Pallet API/Audits/Retrieve an Audit Entry.request.yaml new file mode 100644 index 0000000..7438c01 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Audits/Retrieve an Audit Entry.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve an audit entry +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/audits/{{audit_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Batches/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Batches/.resources/definition.yaml new file mode 100644 index 0000000..767e58d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Batches/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Received lots, read only. A batch is produced by receiving stock, so one authored here would describe a lot that never arrived. +order: 2100 diff --git a/postman/collections/Fleetbase Pallet API/Batches/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Batches/.resources/object.yaml new file mode 100644 index 0000000..d4efeb6 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Batches/.resources/object.yaml @@ -0,0 +1,30 @@ +$kind: object +name: Batch +description: |- + A lot of stock received together. +example: | + { + "id": "batch_t1u2v3", + "object": "batch", + "batch_number": "B-1001", + "product": "product_a1b2c3", + "product_name": "Steel Shelving Bracket", + "received_quantity": 40, + "manufacture_date_at": "2026-07-01T00:00:00Z", + "expiry_date_at": "2027-07-01T00:00:00Z", + "created_at": "2026-08-19T11:00:00Z", + "updated_at": "2026-08-19T11:00:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the batch." + - name: batch_number + type: string + description: "Lot number." + - name: received_quantity + type: integer + description: "Quantity the batch arrived with. Not the quantity still on hand — that is on the stock record." + - name: expiry_date_at + type: timestamp + description: "Expiry date for the lot." diff --git a/postman/collections/Fleetbase Pallet API/Batches/List Batches.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Batches/List Batches.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Batches/List Batches.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Batches/List Batches.request.yaml b/postman/collections/Fleetbase Pallet API/Batches/List Batches.request.yaml new file mode 100644 index 0000000..e69ce80 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Batches/List Batches.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: List batches +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/batches" +method: GET +headers: + - key: Accept + value: application/json +scripts: + - type: afterResponse + code: | + // Later requests address {{batch_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body[0].id; + if (captured) { pm.environment.set("batch_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Batches/Retrieve a Batch.request.yaml b/postman/collections/Fleetbase Pallet API/Batches/Retrieve a Batch.request.yaml new file mode 100644 index 0000000..abd66a1 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Batches/Retrieve a Batch.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a batch +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/batches/{{batch_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/definition.yaml new file mode 100644 index 0000000..ed4f829 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Bins are the addressable positions stock is put away into. A bin's zone must belong to the same warehouse as the bin. +order: 1500 diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/object.yaml new file mode 100644 index 0000000..a42a824 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/.resources/object.yaml @@ -0,0 +1,37 @@ +$kind: object +name: Bin Location +description: |- + An addressable position within a warehouse. +example: | + { + "id": "bin_m4n5o6", + "object": "bin_location", + "warehouse": "warehouse_x1y2z3", + "zone": "zone_j1k2l3", + "zone_name": "Receiving", + "bin_number": "A-01-01", + "is_pickable": true, + "is_replenishable": true, + "status": "active", + "created_at": "2026-08-02T10:05:00Z", + "updated_at": "2026-08-02T10:05:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the bin." + - name: warehouse + type: string + description: "Public id of the warehouse." + - name: zone + type: string + description: "Public id of the zone, when the bin sits in one." + - name: bin_number + type: string + description: "Human-readable bin address." + - name: is_pickable + type: boolean + description: "Whether stock can be picked from this bin." + - name: aisle + type: string + description: "Public id of the aisle, reported when the bin sits in the older hierarchy. Not settable here." diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.params.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.params.yaml new file mode 100644 index 0000000..3020046 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.params.yaml @@ -0,0 +1,13 @@ +$kind: params +fields: + - name: warehouse + type: string + required: true + description: "Public id of the warehouse." + - name: zone + type: string + description: "Public id of a zone in that same warehouse. A zone from elsewhere is a 404." + - name: bin_number + type: string + required: true + description: "Human-readable bin address." diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.request.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.request.yaml new file mode 100644 index 0000000..0080bcb --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/Create Bin Location.request.yaml @@ -0,0 +1,26 @@ +$kind: http-request +description: Create a bin location +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/bin-locations" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "warehouse": "{{warehouse_id}}", + "zone": "{{zone_id}}", + "bin_number": "A-01-01" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{bin_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("bin_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.request.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.request.yaml new file mode 100644 index 0000000..07c7b6b --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/List Bin Locations.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List bin locations +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/bin-locations" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/Retrieve a Bin Location.request.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/Retrieve a Bin Location.request.yaml new file mode 100644 index 0000000..ebe8b2c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/Retrieve a Bin Location.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a bin location +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/bin-locations/{{bin_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.params.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.params.yaml new file mode 100644 index 0000000..0e181de --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: is_pickable + type: boolean + description: "Whether stock can be picked from this bin." diff --git a/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.request.yaml b/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.request.yaml new file mode 100644 index 0000000..ac5bc0f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Bin Locations/Update Bin Location.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a bin location +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/bin-locations/{{bin_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "is_pickable": false + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/.resources/definition.yaml new file mode 100644 index 0000000..21b873e --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Teardown for a full collection run: removes the records the earlier folders created, in reverse order of creation. Deleting as you go would destroy fixtures the later folders still need. +order: 9000 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Bin Location.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Bin Location.request.yaml new file mode 100644 index 0000000..bc56908 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Bin Location.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the bin location +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/bin-locations/{{bin_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9040 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Cancelled Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Cancelled Transfer.request.yaml new file mode 100644 index 0000000..ed04ade --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Cancelled Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the cancelled transfer +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{cancellable_transfer_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9000 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Destination Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Destination Warehouse.request.yaml new file mode 100644 index 0000000..4c0139f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Destination Warehouse.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the destination warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses/{{destination_warehouse_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9070 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product Variant.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product Variant.request.yaml new file mode 100644 index 0000000..be44f1a --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product Variant.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the product variant +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/product-variants/{{variant_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9060 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product.request.yaml new file mode 100644 index 0000000..ff600c8 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Product.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products/{{product_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9100 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Purchase Order.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Purchase Order.request.yaml new file mode 100644 index 0000000..8b28858 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Purchase Order.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the purchase order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders/{{purchase_order_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9030 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Sales Order.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Sales Order.request.yaml new file mode 100644 index 0000000..79efa9a --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Sales Order.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the sales order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders/{{sales_order_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9020 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Product.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Product.request.yaml new file mode 100644 index 0000000..90223bc --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Product.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the stock product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products/{{stock_product_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9110 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Transfer.request.yaml new file mode 100644 index 0000000..df31eb0 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Stock Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the stock transfer +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{stock_transfer_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9010 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Supplier.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Supplier.request.yaml new file mode 100644 index 0000000..9202d08 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Supplier.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the supplier +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/suppliers/{{supplier_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9090 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse Zone.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse Zone.request.yaml new file mode 100644 index 0000000..94fb64b --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse Zone.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the warehouse zone +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouse-zones/{{zone_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9050 diff --git a/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse.request.yaml new file mode 100644 index 0000000..f656574 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Cleanup/Delete Warehouse.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: remove the warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses/{{warehouse_id}}" +method: DELETE +headers: + - key: Accept + value: application/json +order: 9080 diff --git a/postman/collections/Fleetbase Pallet API/Inventory/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Inventory/.resources/definition.yaml new file mode 100644 index 0000000..0113c85 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Stock levels, read only. Stock is a consequence of receipts, fulfilments, transfers and adjustments — move it through the operation that caused the movement. +order: 1600 diff --git a/postman/collections/Fleetbase Pallet API/Inventory/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Inventory/.resources/object.yaml new file mode 100644 index 0000000..f3af464 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/.resources/object.yaml @@ -0,0 +1,53 @@ +$kind: object +name: Inventory +description: |- + A stock record: one product, in one warehouse, optionally in one bin and batch. +example: | + { + "id": "inventory_p7q8r9", + "object": "inventory", + "product": "product_a1b2c3", + "product_name": "Steel Shelving Bracket", + "sku": "SSB-{{$timestamp}}", + "warehouse": "warehouse_x1y2z3", + "warehouse_name": "Singapore Distribution Center", + "batch": null, + "bin_location": "bin_m4n5o6", + "quantity": 118, + "reserved_quantity": 6, + "available_quantity": 112, + "min_quantity": 0, + "reorder_point": 25, + "is_low_stock": false, + "is_out_of_stock": false, + "status": "active", + "expiry_date_at": null, + "received_at": "2026-08-19T11:00:00Z", + "created_at": "2026-07-14T08:10:00Z", + "updated_at": "2026-08-20T14:12:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the stock record." + - name: product + type: string + description: "Public id of the product." + - name: warehouse + type: string + description: "Public id of the warehouse." + - name: quantity + type: integer + description: "Units physically on hand." + - name: reserved_quantity + type: integer + description: "Units held against open commitments." + - name: available_quantity + type: integer + description: "On hand minus reserved. The figure to act on." + - name: is_low_stock + type: boolean + description: "Whether available stock is at or below the reorder point." + - name: expiry_date_at + type: timestamp + description: "Expiry date, for perishable stock." diff --git a/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.queryParams.yaml new file mode 100644 index 0000000..9edf0d6 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: product + type: string + description: "Public id of the product. Supply this or sku." + - name: sku + type: string + description: "SKU of the product, for callers integrating against their own catalogue." + - name: warehouse + type: string + description: "Narrow to one warehouse. Omit to aggregate across all of them." + - name: quantity + type: integer + description: "Quantity being asked about. Defaults to 1 and drives the available boolean." diff --git a/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.request.yaml b/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.request.yaml new file mode 100644 index 0000000..919644b --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/Check Availability.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: How much of a product can be committed right now +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/inventory/availability?product={{stock_product_id}}&quantity=10" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.request.yaml b/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.request.yaml new file mode 100644 index 0000000..7dcff3e --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/List Inventory.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: List stock records +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/inventory" +method: GET +headers: + - key: Accept + value: application/json +scripts: + - type: afterResponse + code: | + // Later requests address {{inventory_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body[0].id; + if (captured) { pm.environment.set("inventory_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Inventory/Retrieve a Stock Record.request.yaml b/postman/collections/Fleetbase Pallet API/Inventory/Retrieve a Stock Record.request.yaml new file mode 100644 index 0000000..b282327 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Inventory/Retrieve a Stock Record.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a stock record +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/inventory/{{inventory_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/.resources/definition.yaml new file mode 100644 index 0000000..7903a29 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Variants are the individually stocked forms of a product — a size, a colour, a pack configuration. +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/.resources/object.yaml new file mode 100644 index 0000000..f5bb45f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/.resources/object.yaml @@ -0,0 +1,40 @@ +$kind: object +name: Product Variant +description: |- + A stocked variation of a product, with its own SKU and pricing. +example: | + { + "id": "variant_g7h8i9", + "object": "product_variant", + "product": "product_a1b2c3", + "product_name": "Steel Shelving Bracket", + "name": "Heavy Duty", + "sku": "SSB-HD-{{$timestamp}}", + "option_values": { "grade": "heavy-duty" }, + "unit_price": 12.00, + "status": "active", + "created_at": "2026-08-01T09:35:00Z", + "updated_at": "2026-08-01T09:35:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the variant." + - name: product + type: string + description: "Public id of the parent product." + - name: name + type: string + description: "Variant name." + - name: sku + type: string + description: "Stock keeping unit." + - name: option_values + type: object + description: "The option values that define this variant." + - name: unit_price + type: number + description: "Sale price per unit." + - name: status + type: string + description: "Variant status." diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.params.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.params.yaml new file mode 100644 index 0000000..964f295 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.params.yaml @@ -0,0 +1,16 @@ +$kind: params +fields: + - name: product + type: string + required: true + description: "Public id of the parent product. A product from another company is a 404." + - name: name + type: string + required: true + description: "Variant name." + - name: sku + type: string + description: "Stock keeping unit." + - name: option_values + type: object + description: "The option values that define this variant." diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.request.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.request.yaml new file mode 100644 index 0000000..0cddaab --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/Create Product Variant.request.yaml @@ -0,0 +1,27 @@ +$kind: http-request +description: Create a variant against a product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/product-variants" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "product": "{{product_id}}", + "name": "Heavy Duty", + "sku": "SSB-HD-{{$timestamp}}", + "option_values": { "grade": "heavy-duty" } + } +scripts: + - type: afterResponse + code: | + // Later requests address {{variant_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("variant_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.request.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.request.yaml new file mode 100644 index 0000000..08bd41f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/List Product Variants.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List variants +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/product-variants" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/Retrieve a Product Variant.request.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/Retrieve a Product Variant.request.yaml new file mode 100644 index 0000000..b52250d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/Retrieve a Product Variant.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a variant +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/product-variants/{{variant_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.params.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.params.yaml new file mode 100644 index 0000000..5a1937c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: unit_price + type: number + description: "Sale price per unit." diff --git a/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.request.yaml b/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.request.yaml new file mode 100644 index 0000000..5a4272e --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Product Variants/Update Product Variant.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a variant +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/product-variants/{{variant_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "unit_price": 12.50 + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Products/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Products/.resources/definition.yaml new file mode 100644 index 0000000..de0601d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Products are the catalog items Pallet tracks stock for. Every stock record, order line and adjustment refers back to one. +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Products/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Products/.resources/object.yaml new file mode 100644 index 0000000..a3b9cb0 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/.resources/object.yaml @@ -0,0 +1,82 @@ +$kind: object +name: Product +description: |- + A catalog item, with pricing, dimensions, tracking flags and aggregate stock figures. +example: | + { + "id": "product_a1b2c3", + "object": "product", + "name": "Steel Shelving Bracket", + "sku": "SSB-{{$timestamp}}", + "barcode": "0123456789012", + "status": "active", + "currency": "USD", + "unit_cost": 4.50, + "unit_price": 9.00, + "has_variants": false, + "is_lot_tracked": false, + "is_perishable": false, + "reorder_point": 25, + "reorder_quantity": 100, + "total_stock": 118, + "available_stock": 112, + "reserved_stock": 6, + "is_out_of_stock": false, + "supplier": "supplier_d4e5f6", + "category": null, + "meta": {}, + "created_at": "2026-08-01T09:30:00Z", + "updated_at": "2026-08-20T14:12:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the product." + - name: object + type: string + description: "Always `product`." + - name: name + type: string + description: "Product name." + - name: sku + type: string + description: "Stock keeping unit." + - name: barcode + type: string + description: "Barcode value." + - name: status + type: string + description: "Product status." + - name: unit_cost + type: number + description: "Cost per unit." + - name: unit_price + type: number + description: "Sale price per unit." + - name: has_variants + type: boolean + description: "Whether the product is sold as variants." + - name: reorder_point + type: integer + description: "Level at or below which the product counts as low stock." + - name: total_stock + type: integer + description: "Units on hand across every warehouse." + - name: available_stock + type: integer + description: "On hand minus reserved." + - name: reserved_stock + type: integer + description: "Units held against open commitments." + - name: supplier + type: string + description: "Public id of the supplier, when one is set." + - name: meta + type: object + description: "Arbitrary metadata stored with the product." + - name: created_at + type: timestamp + description: "Time the product was created." + - name: updated_at + type: timestamp + description: "Time the product was last updated." diff --git a/postman/collections/Fleetbase Pallet API/Products/Create Product.params.yaml b/postman/collections/Fleetbase Pallet API/Products/Create Product.params.yaml new file mode 100644 index 0000000..578fea9 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Create Product.params.yaml @@ -0,0 +1,27 @@ +$kind: params +fields: + - name: name + type: string + required: true + description: "Product name." + - name: sku + type: string + description: "Stock keeping unit." + - name: barcode + type: string + description: "Barcode value." + - name: unit_cost + type: number + description: "Cost per unit." + - name: unit_price + type: number + description: "Sale price per unit." + - name: reorder_point + type: integer + description: "Level at or below which the product counts as low stock." + - name: supplier + type: string + description: "Public id of the supplier to attach. A supplier that does not resolve is a 404." + - name: category + type: string + description: "Public id of the category to attach." diff --git a/postman/collections/Fleetbase Pallet API/Products/Create Product.request.yaml b/postman/collections/Fleetbase Pallet API/Products/Create Product.request.yaml new file mode 100644 index 0000000..5c2fe49 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Create Product.request.yaml @@ -0,0 +1,28 @@ +$kind: http-request +description: Create a product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Steel Shelving Bracket", + "sku": "SSB-{{$timestamp}}", + "unit_cost": 4.50, + "unit_price": 9.00, + "reorder_point": 25 + } +scripts: + - type: afterResponse + code: | + // Later requests address {{product_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("product_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.params.yaml b/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.params.yaml new file mode 100644 index 0000000..95f6f22 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.params.yaml @@ -0,0 +1,6 @@ +$kind: params +fields: + - name: name + type: string + required: true + description: "Product name. Left variant-free: adjustments and transfers address a product directly, and the API rightly refuses an adjustment on a product that has variants without naming one." diff --git a/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.request.yaml b/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.request.yaml new file mode 100644 index 0000000..0394c1d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Create Stock Product.request.yaml @@ -0,0 +1,26 @@ +$kind: http-request +description: Create a second product for the stock-moving folders +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Pallet Wrap", + "sku": "WRP-{{$timestamp}}", + "unit_cost": 1.20 + } +scripts: + - type: afterResponse + code: | + // Later requests address {{stock_product_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("stock_product_id", captured); } + language: text/javascript +order: 1050 diff --git a/postman/collections/Fleetbase Pallet API/Products/List Products.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Products/List Products.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/List Products.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Products/List Products.request.yaml b/postman/collections/Fleetbase Pallet API/Products/List Products.request.yaml new file mode 100644 index 0000000..dde3bdb --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/List Products.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List products +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Products/Retrieve a Product.request.yaml b/postman/collections/Fleetbase Pallet API/Products/Retrieve a Product.request.yaml new file mode 100644 index 0000000..f8dcf74 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Retrieve a Product.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products/{{product_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Products/Update Product.params.yaml b/postman/collections/Fleetbase Pallet API/Products/Update Product.params.yaml new file mode 100644 index 0000000..e860613 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Update Product.params.yaml @@ -0,0 +1,8 @@ +$kind: params +fields: + - name: name + type: string + description: "Product name." + - name: unit_price + type: number + description: "Sale price per unit." diff --git a/postman/collections/Fleetbase Pallet API/Products/Update Product.request.yaml b/postman/collections/Fleetbase Pallet API/Products/Update Product.request.yaml new file mode 100644 index 0000000..39d36f7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Products/Update Product.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a product +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/products/{{product_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "unit_price": 9.50 + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/definition.yaml new file mode 100644 index 0000000..df743ee --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Buying stock in. An order is created with its lines in one call, then received line by line. A receipt is capped at the line's outstanding quantity, so an over-receipt takes what is left rather than being rejected. +order: 1800 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/object.yaml new file mode 100644 index 0000000..35e6b6e --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/.resources/object.yaml @@ -0,0 +1,47 @@ +$kind: object +name: Purchase Order +description: |- + An order placed with a supplier, and the lines it consists of. +example: | + { + "id": "purchase_order_v4w5x6", + "object": "purchase_order", + "status": "partial", + "supplier": "supplier_d4e5f6", + "supplier_name": "Acme Supply Co", + "warehouse": "warehouse_x1y2z3", + "reference_code": "PO-{{$timestamp}}", + "total_value": 100.00, + "expected_delivery_at": "2026-09-01T00:00:00Z", + "items": [ + { + "id": "poi_y7z8a9", + "object": "purchase_order_item", + "product": "product_a1b2c3", + "sku": "SSB-{{$timestamp}}", + "quantity": 20, + "quantity_received": 12, + "outstanding_quantity": 8, + "unit_price": 5.00, + "status": "partial" + } + ], + "created_at": "2026-08-20T09:00:00Z", + "updated_at": "2026-08-20T14:30:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the order." + - name: status + type: string + description: "pending, partial, received or cancelled." + - name: supplier + type: string + description: "Public id of the supplier." + - name: items + type: array of objects + description: "Order lines, each with its outstanding quantity." + - name: total_value + type: number + description: "Total value of the order." diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.params.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.params.yaml new file mode 100644 index 0000000..8b4de28 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.params.yaml @@ -0,0 +1,23 @@ +$kind: params +fields: + - name: supplier + type: string + description: "Public id of the supplier." + - name: warehouse + type: string + description: "Public id of the receiving warehouse." + - name: reference_code + type: string + description: "Your own reference for the order." + - name: items + type: array of objects + description: "Order lines. A line whose product does not resolve fails the whole request." + - name: items[].product + type: string + description: "Public id of the product being ordered." + - name: items[].quantity + type: integer + description: "Units ordered." + - name: items[].unit_price + type: number + description: "Price per unit." diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.request.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.request.yaml new file mode 100644 index 0000000..51e2b33 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Create Purchase Order.request.yaml @@ -0,0 +1,29 @@ +$kind: http-request +description: Create an order with its lines +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "supplier": "{{supplier_id}}", + "warehouse": "{{warehouse_id}}", + "reference_code": "PO-{{$timestamp}}", + "items": [ + { "product": "{{product_id}}", "quantity": 20, "unit_price": 5.00 } + ] + } +scripts: + - type: afterResponse + code: | + // Later requests address {{purchase_order_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("purchase_order_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.request.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.request.yaml new file mode 100644 index 0000000..c57cc37 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/List Purchase Orders.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List purchase orders +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.params.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.params.yaml new file mode 100644 index 0000000..528bfa6 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.params.yaml @@ -0,0 +1,17 @@ +$kind: params +fields: + - name: items + type: array of objects + description: "Lines to receive against." + - name: items[].id + type: string + description: "Public id of the order line." + - name: items[].quantity_received + type: integer + description: "Units received. Capped at the line's outstanding quantity." + - name: items[].lot_number + type: string + description: "Lot number for the received stock." + - name: items[].expiry_date + type: timestamp + description: "Expiry date for the received stock." diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.request.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.request.yaml new file mode 100644 index 0000000..f37cad3 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Receive Goods.request.yaml @@ -0,0 +1,18 @@ +$kind: http-request +description: Receive stock against lines +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders/{{purchase_order_id}}/receive" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "items": [ + { "id": "{{purchase_order_item_id}}", "quantity_received": 12 } + ] + } +order: 1400 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Retrieve a Purchase Order.request.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Retrieve a Purchase Order.request.yaml new file mode 100644 index 0000000..ed4c318 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Retrieve a Purchase Order.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a purchase order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders/{{purchase_order_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.params.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.params.yaml new file mode 100644 index 0000000..54dd3a5 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: reference_code + type: string + description: "Your own reference for the order." diff --git a/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.request.yaml b/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.request.yaml new file mode 100644 index 0000000..469c6a1 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Purchase Orders/Update Purchase Order.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a purchase order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/purchase-orders/{{purchase_order_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "reference_code": "PO-1001-REV" + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/definition.yaml new file mode 100644 index 0000000..fb7d1a4 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Selling stock out. Unlike receiving, insufficient stock rejects the whole request and leaves inventory completely untouched — there is no partial deduction on the way to failing. +order: 1900 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/object.yaml new file mode 100644 index 0000000..91cd1c7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/.resources/object.yaml @@ -0,0 +1,43 @@ +$kind: object +name: Sales Order +description: |- + An order placed by a customer, and the lines it consists of. +example: | + { + "id": "sales_order_b1c2d3", + "object": "sales_order", + "status": "partial", + "customer": "contact_e4f5g6", + "customer_name": "Northwind Retail", + "warehouse": "warehouse_x1y2z3", + "reference_code": "SO-{{$timestamp}}", + "total_value": 90.00, + "items": [ + { + "id": "soi_h7i8j9", + "object": "sales_order_item", + "product": "product_a1b2c3", + "sku": "SSB-{{$timestamp}}", + "quantity": 10, + "quantity_fulfilled": 4, + "outstanding_quantity": 6, + "unit_price": 9.00, + "status": "partial" + } + ], + "created_at": "2026-08-20T10:00:00Z", + "updated_at": "2026-08-20T15:00:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the order." + - name: status + type: string + description: "pending, partial, fulfilled or cancelled." + - name: customer + type: string + description: "Public id of the customer contact." + - name: items + type: array of objects + description: "Order lines, each with its outstanding quantity." diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.params.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.params.yaml new file mode 100644 index 0000000..e9bd392 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.params.yaml @@ -0,0 +1,20 @@ +$kind: params +fields: + - name: customer + type: string + description: "Public id of the customer contact." + - name: warehouse + type: string + description: "Public id of the fulfilling warehouse." + - name: reference_code + type: string + description: "Your own reference for the order." + - name: items + type: array of objects + description: "Order lines. A line whose product does not resolve fails the whole request." + - name: items[].product + type: string + description: "Public id of the product being sold." + - name: items[].quantity + type: integer + description: "Units ordered." diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.request.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.request.yaml new file mode 100644 index 0000000..a7f0f70 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Create Sales Order.request.yaml @@ -0,0 +1,28 @@ +$kind: http-request +description: Create an order with its lines +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "warehouse": "{{warehouse_id}}", + "reference_code": "SO-{{$timestamp}}", + "items": [ + { "product": "{{product_id}}", "quantity": 10, "unit_price": 9.00 } + ] + } +scripts: + - type: afterResponse + code: | + // Later requests address {{sales_order_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("sales_order_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.params.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.params.yaml new file mode 100644 index 0000000..51536ad --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.params.yaml @@ -0,0 +1,11 @@ +$kind: params +fields: + - name: items + type: array of objects + description: "Lines to fulfill." + - name: items[].id + type: string + description: "Public id of the order line." + - name: items[].quantity_fulfilled + type: integer + description: "Units to fulfill. Insufficient stock rejects the whole request and moves nothing." diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.request.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.request.yaml new file mode 100644 index 0000000..bb52dfe --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Fulfill Order.request.yaml @@ -0,0 +1,18 @@ +$kind: http-request +description: Fulfill lines, deducting stock +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders/{{sales_order_id}}/fulfill" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "items": [ + { "id": "{{sales_order_item_id}}", "quantity_fulfilled": 4 } + ] + } +order: 1400 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.request.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.request.yaml new file mode 100644 index 0000000..c964662 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/List Sales Orders.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List sales orders +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Retrieve a Sales Order.request.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Retrieve a Sales Order.request.yaml new file mode 100644 index 0000000..d1d4fed --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Retrieve a Sales Order.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a sales order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders/{{sales_order_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.params.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.params.yaml new file mode 100644 index 0000000..54dd3a5 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: reference_code + type: string + description: "Your own reference for the order." diff --git a/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.request.yaml b/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.request.yaml new file mode 100644 index 0000000..9badd0f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Sales Orders/Update Sales Order.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a sales order +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/sales-orders/{{sales_order_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "reference_code": "SO-2001-REV" + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/definition.yaml new file mode 100644 index 0000000..7c24a5f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + How stock moves outside an order — corrections, damage, shrinkage, found stock. An adjustment cannot be updated or deleted: correcting one means making another, which is why the history shows both. +order: 1700 diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/object.yaml new file mode 100644 index 0000000..a7b89a8 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/.resources/object.yaml @@ -0,0 +1,36 @@ +$kind: object +name: Stock Adjustment +description: |- + A recorded change to a stock level, with the quantity before and after. +example: | + { + "id": "stock_adjustment_s1t2u3", + "object": "stock_adjustment", + "type": "add", + "reason": "Cycle count correction", + "product": "product_a1b2c3", + "warehouse": "warehouse_x1y2z3", + "inventory": "inventory_p7q8r9", + "quantity": 5, + "before_quantity": 113, + "after_quantity": 118, + "delta": 5, + "created_at": "2026-08-20T14:12:00Z", + "updated_at": "2026-08-20T14:12:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the adjustment." + - name: type + type: string + description: "One of add, remove or correction." + - name: before_quantity + type: integer + description: "Stock level before the adjustment." + - name: after_quantity + type: integer + description: "Stock level after the adjustment." + - name: delta + type: integer + description: "Signed change, so the direction does not have to be inferred from type." diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.params.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.params.yaml new file mode 100644 index 0000000..9257985 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.params.yaml @@ -0,0 +1,24 @@ +$kind: params +fields: + - name: product + type: string + required: true + description: "Public id of the product." + - name: warehouse + type: string + required: true + description: "Public id of the warehouse." + - name: variant + type: string + description: "Public id of the variant. Required when the product has variants." + - name: type + type: string + required: true + description: "add, remove or correction. An add against an unstocked product creates the stock record." + - name: quantity + type: integer + required: true + description: "Units to adjust by. Must be greater than zero." + - name: reason + type: string + description: "Why the adjustment was made." diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.request.yaml new file mode 100644 index 0000000..a24c85c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Adjust Stock.request.yaml @@ -0,0 +1,28 @@ +$kind: http-request +description: Adjust stock +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-adjustments" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "product": "{{stock_product_id}}", + "warehouse": "{{warehouse_id}}", + "type": "add", + "quantity": 50, + "reason": "Cycle count correction" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{stock_adjustment_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("stock_adjustment_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.request.yaml new file mode 100644 index 0000000..f2ee15c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/List Stock Adjustments.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List adjustments +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-adjustments" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Stock Adjustments/Retrieve a Stock Adjustment.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Retrieve a Stock Adjustment.request.yaml new file mode 100644 index 0000000..00e8db0 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Adjustments/Retrieve a Stock Adjustment.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve an adjustment +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-adjustments/{{stock_adjustment_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/definition.yaml new file mode 100644 index 0000000..c28bb91 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Moving stock between warehouses. The lifecycle is exposed as transitions rather than a settable status: shipping deducts from the source, receiving credits the destination, and cancelling an in-transit transfer restores what was shipped. +order: 2000 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/object.yaml new file mode 100644 index 0000000..9acf33d --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/.resources/object.yaml @@ -0,0 +1,45 @@ +$kind: object +name: Stock Transfer +description: |- + A movement of stock from one warehouse to another. +example: | + { + "id": "transfer_k1l2m3", + "object": "stock_transfer", + "transfer_number": "TR-3001", + "status": "in_transit", + "type": "standard", + "from_warehouse": "warehouse_x1y2z3", + "from_warehouse_name": "Singapore Distribution Center", + "to_warehouse": "warehouse_n4o5p6", + "to_warehouse_name": "Johor Satellite", + "shipped_at": "2026-08-20T16:00:00Z", + "received_at": null, + "items": [ + { + "id": "transfer_item_q7r8s9", + "object": "stock_transfer_item", + "product": "product_a1b2c3", + "quantity": 10, + "quantity_received": 0 + } + ], + "created_at": "2026-08-20T15:30:00Z", + "updated_at": "2026-08-20T16:00:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the transfer." + - name: status + type: string + description: "pending, approved, in_transit, received or cancelled. Changed through the transition endpoints, never set directly." + - name: from_warehouse + type: string + description: "Public id of the source warehouse." + - name: to_warehouse + type: string + description: "Public id of the destination warehouse." + - name: items + type: array of objects + description: "Lines being moved." diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Approve Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Approve Transfer.request.yaml new file mode 100644 index 0000000..b32260c --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Approve Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Approve a pending transfer +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{stock_transfer_id}}/approve" +method: POST +headers: + - key: Accept + value: application/json +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Cancel Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Cancel Transfer.request.yaml new file mode 100644 index 0000000..24a6eef --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Cancel Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Cancel a transfer, restoring any shipped stock +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{cancellable_transfer_id}}/cancel" +method: POST +headers: + - key: Accept + value: application/json +order: 1600 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.params.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.params.yaml new file mode 100644 index 0000000..774ad66 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.params.yaml @@ -0,0 +1,19 @@ +$kind: params +fields: + - name: from_warehouse + type: string + required: true + description: "Public id of the source warehouse." + - name: to_warehouse + type: string + required: true + description: "Public id of the destination. Must differ from the source." + - name: items + type: array of objects + description: "Lines to move." + - name: items[].product + type: string + description: "Public id of the product being moved." + - name: items[].quantity + type: integer + description: "Units to move." diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.request.yaml new file mode 100644 index 0000000..78e59b7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Stock Transfer.request.yaml @@ -0,0 +1,28 @@ +$kind: http-request +description: Create a transfer with its lines +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "from_warehouse": "{{warehouse_id}}", + "to_warehouse": "{{destination_warehouse_id}}", + "items": [ + { "product": "{{stock_product_id}}", "quantity": 10 } + ] + } +scripts: + - type: afterResponse + code: | + // Later requests address {{stock_transfer_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("stock_transfer_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Transfer to Cancel.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Transfer to Cancel.request.yaml new file mode 100644 index 0000000..3ebfea8 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Create Transfer to Cancel.request.yaml @@ -0,0 +1,29 @@ +$kind: http-request +description: Create a second transfer, so cancel has something cancellable +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "from_warehouse": "{{warehouse_id}}", + "to_warehouse": "{{destination_warehouse_id}}", + "notes": "Raised to demonstrate cancellation", + "items": [ + { "product": "{{stock_product_id}}", "quantity": 5 } + ] + } +scripts: + - type: afterResponse + code: | + // Later requests address {{cancellable_transfer_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("cancellable_transfer_id", captured); } + language: text/javascript +order: 1550 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.request.yaml new file mode 100644 index 0000000..beff8e5 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/List Stock Transfers.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List transfers +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Receive Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Receive Transfer.request.yaml new file mode 100644 index 0000000..23131d3 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Receive Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Receive, crediting the destination +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{stock_transfer_id}}/receive" +method: POST +headers: + - key: Accept + value: application/json +order: 1500 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Retrieve a Stock Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Retrieve a Stock Transfer.request.yaml new file mode 100644 index 0000000..fa36485 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Retrieve a Stock Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a transfer +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{stock_transfer_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Stock Transfers/Ship Transfer.request.yaml b/postman/collections/Fleetbase Pallet API/Stock Transfers/Ship Transfer.request.yaml new file mode 100644 index 0000000..a70f900 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Stock Transfers/Ship Transfer.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Ship, deducting from the source +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/stock-transfers/{{stock_transfer_id}}/ship" +method: POST +headers: + - key: Accept + value: application/json +order: 1400 diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/.resources/definition.yaml new file mode 100644 index 0000000..89ed536 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Suppliers are the vendors goods are purchased from. Purchase orders reference them. +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/.resources/object.yaml new file mode 100644 index 0000000..c439f10 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/.resources/object.yaml @@ -0,0 +1,36 @@ +$kind: object +name: Supplier +description: |- + A vendor Pallet purchases from. +example: | + { + "id": "supplier_d4e5f6", + "object": "supplier", + "name": "Acme Supply Co", + "email": "ops@acme.example", + "phone": "+65 1234 5678", + "type": "vendor", + "status": "active", + "address": null, + "created_at": "2026-08-01T09:00:00Z", + "updated_at": "2026-08-01T09:00:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the supplier." + - name: name + type: string + description: "Supplier name." + - name: email + type: string + description: "Contact email." + - name: phone + type: string + description: "Contact phone number." + - name: status + type: string + description: "Supplier status." + - name: address + type: string + description: "Flattened address of the supplier's place, when one is set." diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.params.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.params.yaml new file mode 100644 index 0000000..bd86761 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.params.yaml @@ -0,0 +1,12 @@ +$kind: params +fields: + - name: name + type: string + required: true + description: "Supplier name." + - name: email + type: string + description: "Contact email." + - name: phone + type: string + description: "Contact phone number." diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.request.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.request.yaml new file mode 100644 index 0000000..9761bd7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/Create Supplier.request.yaml @@ -0,0 +1,25 @@ +$kind: http-request +description: Create a supplier +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/suppliers" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Acme Supply Co", + "email": "ops@acme.example" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{supplier_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("supplier_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.request.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.request.yaml new file mode 100644 index 0000000..5ad07f3 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/List Suppliers.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List suppliers +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/suppliers" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/Retrieve a Supplier.request.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/Retrieve a Supplier.request.yaml new file mode 100644 index 0000000..0a4583f --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/Retrieve a Supplier.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a supplier +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/suppliers/{{supplier_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.params.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.params.yaml new file mode 100644 index 0000000..9d652d5 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: phone + type: string + description: "Contact phone number." diff --git a/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.request.yaml b/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.request.yaml new file mode 100644 index 0000000..3743e81 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Suppliers/Update Supplier.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a supplier +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/suppliers/{{supplier_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "phone": "+65 1234 5678" + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/definition.yaml new file mode 100644 index 0000000..0ce2a61 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Zones divide a warehouse into areas — receiving, bulk, cold storage. Bin locations sit inside them. +order: 1400 diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/object.yaml new file mode 100644 index 0000000..a00fd03 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/.resources/object.yaml @@ -0,0 +1,33 @@ +$kind: object +name: Warehouse Zone +description: |- + An area within a warehouse. +example: | + { + "id": "zone_j1k2l3", + "object": "warehouse_zone", + "warehouse": "warehouse_x1y2z3", + "warehouse_name": "Singapore Distribution Center", + "name": "Receiving", + "code": "RCV-{{$timestamp}}", + "temperature_controlled": false, + "status": "active", + "created_at": "2026-08-02T10:00:00Z", + "updated_at": "2026-08-02T10:00:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the zone." + - name: warehouse + type: string + description: "Public id of the warehouse the zone belongs to." + - name: name + type: string + description: "Zone name." + - name: code + type: string + description: "Short code for the zone." + - name: temperature_controlled + type: boolean + description: "Whether the zone is temperature controlled." diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.params.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.params.yaml new file mode 100644 index 0000000..6ae1278 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.params.yaml @@ -0,0 +1,13 @@ +$kind: params +fields: + - name: warehouse + type: string + required: true + description: "Public id of the warehouse." + - name: name + type: string + required: true + description: "Zone name." + - name: code + type: string + description: "Short code for the zone." diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.request.yaml new file mode 100644 index 0000000..d1e57f9 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Create Warehouse Zone.request.yaml @@ -0,0 +1,26 @@ +$kind: http-request +description: Create a zone in a warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouse-zones" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "warehouse": "{{warehouse_id}}", + "name": "Receiving", + "code": "RCV-{{$timestamp}}" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{zone_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("zone_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.request.yaml new file mode 100644 index 0000000..eaf7f84 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/List Warehouse Zones.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List zones +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouse-zones" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/Retrieve a Warehouse Zone.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Retrieve a Warehouse Zone.request.yaml new file mode 100644 index 0000000..7fbb3ef --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Retrieve a Warehouse Zone.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a zone +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouse-zones/{{zone_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.params.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.params.yaml new file mode 100644 index 0000000..60e5cb7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: name + type: string + description: "Zone name." diff --git a/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.request.yaml new file mode 100644 index 0000000..e628848 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouse Zones/Update Warehouse Zone.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a zone +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouse-zones/{{zone_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Inbound Receiving" + } +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/.resources/definition.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/.resources/definition.yaml new file mode 100644 index 0000000..746c437 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/.resources/definition.yaml @@ -0,0 +1,4 @@ +$kind: collection +description: |- + Warehouses are the facilities stock is held in. Every stock record belongs to one. +order: 1300 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/.resources/object.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/.resources/object.yaml new file mode 100644 index 0000000..5c840d1 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/.resources/object.yaml @@ -0,0 +1,40 @@ +$kind: object +name: Warehouse +description: |- + A facility holding stock. +example: | + { + "id": "warehouse_x1y2z3", + "object": "warehouse", + "name": "Singapore Distribution Center", + "code": "SG-DC-{{$timestamp}}", + "type": "distribution", + "status": "active", + "capacity": 5000, + "total_docks": 8, + "is_active": true, + "is_default": false, + "stock_item_count": 1, + "address": "1 Logistics Way, Singapore", + "created_at": "2026-07-14T08:00:00Z", + "updated_at": "2026-08-19T11:02:00Z" + } +fields: + - name: id + type: string + description: "Public identifier of the warehouse." + - name: name + type: string + description: "Warehouse name." + - name: code + type: string + description: "Short code for the facility." + - name: capacity + type: number + description: "Storage capacity." + - name: stock_item_count + type: integer + description: "Distinct stock records held, present on list and retrieve." + - name: address + type: string + description: "Flattened address of the warehouse's place, when one is set." diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.params.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.params.yaml new file mode 100644 index 0000000..76eab0b --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.params.yaml @@ -0,0 +1,6 @@ +$kind: params +fields: + - name: name + type: string + required: true + description: "Warehouse name." diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.request.yaml new file mode 100644 index 0000000..1e42ad5 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Create Destination Warehouse.request.yaml @@ -0,0 +1,25 @@ +$kind: http-request +description: Create a second warehouse, so transfers have a destination +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Johor Satellite", + "code": "JH-SAT-{{$timestamp}}" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{destination_warehouse_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("destination_warehouse_id", captured); } + language: text/javascript +order: 1050 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.params.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.params.yaml new file mode 100644 index 0000000..0ccfd7e --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.params.yaml @@ -0,0 +1,12 @@ +$kind: params +fields: + - name: name + type: string + required: true + description: "Warehouse name." + - name: code + type: string + description: "Short code for the facility." + - name: capacity + type: number + description: "Storage capacity." diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.request.yaml new file mode 100644 index 0000000..a633c22 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Create Warehouse.request.yaml @@ -0,0 +1,25 @@ +$kind: http-request +description: Create a warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses" +method: POST +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "name": "Singapore Distribution Center", + "code": "SG-DC-{{$timestamp}}" + } +scripts: + - type: afterResponse + code: | + // Later requests address {{warehouse_id}}; nothing else sets it. + const body = pm.response.json(); + const captured = body.id; + if (captured) { pm.environment.set("warehouse_id", captured); } + language: text/javascript +order: 1000 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.queryParams.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.queryParams.yaml new file mode 100644 index 0000000..8044dfa --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.queryParams.yaml @@ -0,0 +1,14 @@ +$kind: params +fields: + - name: limit + type: integer + description: "Maximum records to return. Capped at 100, defaults to 30." + - name: offset + type: integer + description: "Records to skip before returning results." + - name: page + type: integer + description: "Page number, used in place of offset." + - name: sort + type: string + description: "Column to sort by, prefixed with - for descending." diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.request.yaml new file mode 100644 index 0000000..e33635a --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/List Warehouses.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: List warehouses +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses" +method: GET +headers: + - key: Accept + value: application/json +order: 1100 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Retrieve a Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Retrieve a Warehouse.request.yaml new file mode 100644 index 0000000..785b2db --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Retrieve a Warehouse.request.yaml @@ -0,0 +1,8 @@ +$kind: http-request +description: Retrieve a warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses/{{warehouse_id}}" +method: GET +headers: + - key: Accept + value: application/json +order: 1200 diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.params.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.params.yaml new file mode 100644 index 0000000..5bb14d3 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.params.yaml @@ -0,0 +1,5 @@ +$kind: params +fields: + - name: capacity + type: number + description: "Storage capacity." diff --git a/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.request.yaml b/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.request.yaml new file mode 100644 index 0000000..4f74ef7 --- /dev/null +++ b/postman/collections/Fleetbase Pallet API/Warehouses/Update Warehouse.request.yaml @@ -0,0 +1,16 @@ +$kind: http-request +description: Update a warehouse +url: "{{base_url}}/{{api_prefix}}/{{namespace}}/warehouses/{{warehouse_id}}" +method: PUT +headers: + - key: Accept + value: application/json + - key: Content-Type + value: application/json +body: + type: json + content: |- + { + "capacity": 6000 + } +order: 1300 diff --git a/scripts/validate-collections.js b/scripts/validate-collections.js index fe2bfd6..2045362 100644 --- a/scripts/validate-collections.js +++ b/scripts/validate-collections.js @@ -77,7 +77,7 @@ for (const file of environmentFiles) { } } -assert(collectionFiles.length === 5, `Expected 5 Postman collections, found ${collectionFiles.length}`); +assert(collectionFiles.length === 6, `Expected 6 Postman collections, found ${collectionFiles.length}`); assert(environmentFiles.length === 3, `Expected 3 environment templates, found ${environmentFiles.length}`); console.log(`Validated ${collectionFiles.length} Postman Native Git collections and ${environmentFiles.length} environments.`);