🧪 Skills

Pipe17 Openclaw Skill

--- ## name: pipe17 description: Pipe17 Unified API for searching and reading orders, shipping requests (shipments), fulfillments, and inventory. homepage: [https://apidoc.pipe17.com/#/](https://apid

v0.1.0
❤️ 0
⬇️ 575
👁 1
Share

Description


name: pipe17 description: Pipe17 Unified API for searching and reading orders, shipping requests (shipments), fulfillments, and inventory. homepage: https://apidoc.pipe17.com/#/ metadata: { "openclaw": { "emoji": "🧩", "requires": { "env": ["PIPE17_API_KEY"] }, "primaryEnv": "PIPE17_API_KEY" } }

pipe17

Use the Pipe17 Unified API to search and read core commerce/operations objects.

This skill focuses on:

  • Search + read Orders
  • Search + read Shipping Requests (a.k.a. Shipments)
  • Search + read Fulfillments
  • Search Inventory by SKU (and optionally location)

Setup

  1. Create / obtain a Pipe17 API key for the target organization/integration.
  2. Export it:
export PIPE17_API_KEY="..."

Keep the API key secret. Use least-privilege keys whenever possible.

API Basics

Base URL (default):

https://api-v3.pipe17.com/api/v3

All requests should include:

  • X-Pipe17-Key: ${PIPE17_API_KEY}
  • Accept: application/json

Example:

P17_BASE="https://api-v3.pipe17.com/api/v3"

curl "${P17_BASE}/orders" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Search & Filtering

Pipe17 commonly supports server-side filtering via query parameters, often including:

  • filters=... (repeatable)
  • limit=...
  • page=...

A common filter encoding pattern looks like:

filters={type}~{field}~{operator}~{value}

Examples of typical patterns:

  • filters=string~status~equals~readyForFulfillment
  • filters=string~status~equalsAnyOf~new,onHold,readyForFulfillment
  • filters=date~extOrderCreatedAt~isGreaterThanOrEqualTo~2024-12-31T00:00:00.000Z

If your tenant uses a different filter grammar, follow the contract in the API doc.

Orders

Search orders

List orders with optional query parameters.

Parameter Type Description
count integer (int32) Number of results to return
skip integer (int32) Number of results to skip (for pagination)
extOrderId array[string] Filter by external order ID(s)
since string (date-time) Filter orders since this UTC ISO timestamp
status array[string] Filter by status(es)

Allowed status values: draft, new, onHold, toBeValidated, reviewRequired, readyForFulfillment, sentToFulfillment, partialFulfillment, fulfilled, inTransit, partialReceived, received, canceled, returned, refunded, archived, closed

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: most recent orders (paging)
curl "${P17_BASE}/orders?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by status
curl "${P17_BASE}/orders?count=25&status=new&status=onHold&status=readyForFulfillment" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by date
curl "${P17_BASE}/orders?count=25&since=2024-12-31T00:00:00.000Z" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by external order ID
curl "${P17_BASE}/orders?extOrderId=EXT-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read order by id

The search endpoint returns an orderId for each order. Use it to fetch full order details.

P17_BASE="https://api-v3.pipe17.com/api/v3"
ORDER_ID="{orderId}"

curl "${P17_BASE}/orders/${ORDER_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Shipping Requests

Search shipping requests

List shipping requests with optional query parameters.

Parameter Type Description
count integer (int32) Number of results to return
skip integer (int32) Number of results to skip (for pagination)
extOrderId array[string] Filter by external order ID(s)
orderId array[string] Filter by Pipe17 order ID(s)
locationId array[string] Filter by location ID(s)
since string (date-time) Filter shipping requests since this UTC ISO timestamp
status array[string] Filter by status(es)

Allowed status values: new, pendingInventory, pendingShippingLabel, reviewRequired, readyForFulfillment, sentToFulfillment, fulfilled, partialFulfillment, canceled, canceledRestock, failed, onHold

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list shipping requests
curl "${P17_BASE}/shipping_requests?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by status
curl "${P17_BASE}/shipping_requests?count=25&status=readyForFulfillment" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by order ID
curl "${P17_BASE}/shipping_requests?count=25&orderId=ORD-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by location
curl "${P17_BASE}/shipping_requests?count=25&locationId=LOC-001" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read shipping request by id

P17_BASE="https://api-v3.pipe17.com/api/v3"
SHIPPING_REQUEST_ID="{shippingRequestId}"

curl "${P17_BASE}/shipping_requests/${SHIPPING_REQUEST_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Fulfillments

Fulfillments represent completed shipment execution with tracking and shipped line items. They are typically treated as immutable once created.

Search fulfillments

List fulfillments with optional query parameters.

Parameter Type Description
count integer (int32) Number of results to return
skip integer (int32) Number of results to skip (for pagination)
extOrderId array[string] Filter by external order ID(s)
orderId array[string] Filter by Pipe17 order ID(s)
shipmentId array[string] Filter by shipment ID(s)
locationId array[string] Filter by location ID(s)
since string (date-time) Filter fulfillments since this UTC ISO timestamp
P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list fulfillments
curl "${P17_BASE}/fulfillments?count=25&skip=0" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by order ID
curl "${P17_BASE}/fulfillments?count=25&orderId=ORD-12345" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by shipment ID
curl "${P17_BASE}/fulfillments?count=25&shipmentId=SHIP-001" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: filter by date
curl "${P17_BASE}/fulfillments?count=25&since=2024-12-31T00:00:00.000Z" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read fulfillment by id

P17_BASE="https://api-v3.pipe17.com/api/v3"
FULFILLMENT_ID="{fulfillmentId}"

curl "${P17_BASE}/fulfillments/${FULFILLMENT_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Inventory

Inventory is stored per SKU (and often per location) and may include multiple quantity types (e.g., onHand, available, committed, etc.).

Search inventory

List inventory with optional query parameters.

Parameter Type Description
count integer (int32) Number of results to return
skip integer (int32) Number of results to skip (for pagination)
sku array[string] Filter by SKU(s). Mutually exclusive with sku_gt/sku_lt
locationId array[string] Filter by location ID(s)
since string (date-time) Filter inventory created after this UTC ISO timestamp
available integer Filter where available equals this value. Mutually exclusive with available_gt/available_lt
available_gt integer Filter where available is greater than this value
available_lt integer Filter where available is less than this value
onHand integer Filter where onHand equals this value. Mutually exclusive with onHand_gt/onHand_lt
onHand_gt integer Filter where onHand is greater than this value
onHand_lt integer Filter where onHand is less than this value
totals boolean Return inventory totals across all locations (not allowed with ledger flag)
ledger boolean Return inventory ledger information (not allowed with totals flag)

Default behavior: Always send totals=true unless the user specifically requests ledger detail. totals and ledger are mutually exclusive.

P17_BASE="https://api-v3.pipe17.com/api/v3"

# Example: list inventory by SKU (always use totals=true by default)
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: SKU + location
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&locationId=LOC-001&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: find items with zero available
curl "${P17_BASE}/inventory?count=100&available=0&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: find items with available > 10
curl "${P17_BASE}/inventory?count=100&available_gt=10&totals=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

# Example: get ledger detail (only when specifically requested)
curl "${P17_BASE}/inventory?count=100&sku=MY-SKU-001&ledger=true" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Read inventory record by inventoryId

P17_BASE="https://api-v3.pipe17.com/api/v3"
INVENTORY_ID="{inventoryId}"

curl "${P17_BASE}/inventory/${INVENTORY_ID}" \
  -H "X-Pipe17-Key: ${PIPE17_API_KEY}" \
  -H "Accept: application/json"

Notes

  • Prefer list/search endpoints with pagination (count, skip) for support workflows.
  • Favor narrow filters (status/date/sku) to avoid pulling large result sets.
  • If you hit rate limits, implement backoff and retry according to response headers.

References

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs