🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Pipe17 Openclaw Skill

by @j-shao1

Automation skill for Pipe17 Openclaw Skill.

Versionv0.1.0
Downloads1,139
TERMINAL
clawhub install pipe17-openclaw-skill

πŸ“– About This Skill


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

  • Pipe17 Unified API Docs: https://apidoc.pipe17.com/#/
  • βš™οΈ Configuration

    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.

    πŸ“‹ Tips & Best Practices

  • 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.