Click Industries / MedPart

v0.2.4 Beta

Trading partner integration

Click Customer API

A REST interface for catalog, inventory, orders, shipments and invoices. It does the work of your EDI connection, without a VAN and without mapping.

Beta — preliminary outline

This document shows the planned structure of the API. It is not a released specification. Endpoint names, field names and formats can change.

1. Overview

The API replaces five EDI documents. Each one becomes a set of REST endpoints.

EDI coverage
EDIDocumentEndpoints
832Price / sales catalogGET /products
846Inventory adviceGET /inventory
850Purchase orderPOST /orders
856Advance ship noticeGET /orders/{order_id}
810InvoiceGET /invoices

2. Conventions

  • Protocol: HTTPS only.
  • Format: JSON for all requests and responses.
  • Base URL: we supply it with your credentials. All paths in this document are relative to it.
  • Dates: ISO 8601, in UTC. Example: 2026-08-03T14:22:00Z.
  • Rate limits: to be determined.

Pagination

List endpoints return pages. Use the page and limit parameters. The maximum is 50 results per page.

GET /products?page=1&limit=50

{
  "data": [ … ],
  "CurrentPage": 1,
  "ResultsPerPage": 50,
  "TotalResults": 137856,
  "TotalPages": 2758
}

3. Authentication

You receive credentials for your account. The planned method is an API key or OAuth 2.0 client credentials. Tell us which method you prefer.

Send the token in the Authorization header with each request. Tokens expire. Request a new token when the old one expires.

curl https://api.example.com/products \
  -H "Authorization: Bearer <your_token>" \
  -H "Accept: application/json"

4. Errors

All errors use standard REST status codes. Each error returns a JSON body with a code and a message.

HTTP/1.1 409 Conflict

{
  "error": {
    "code": "duplicate_po_number",
    "message": "An order with PO number 4500217788 already exists.",
    "field": "po_number"
  }
}
Status codes
CodeMeaningAction
400The request is malformed.Correct the request body.
401The token is missing or invalid.Request a new token.
403The resource is outside your account.Contact your account manager.
404The resource does not exist.Check the identifier.
409The resource already exists.See error message.
422The request is valid JSON but fails a business rule.Read the error code.
429You sent too many requests.Wait, then retry.
500An error occurred.See error message.
EDI 832

5. Products

GET/products

Returns your approved products.

GET/products/{sku}

Returns one product.

{
  "sku": "CP-FFM-M",
  "name": "CPAP Full Face Mask, Medium",
  "description": "Silicone cushion mask with headgear.",
  "upc": "812345678901",
  "price": "38.40",
  "case_pack": 6,
  "weight_lb": "0.71",
  "dimensions_in": { "l": "8.5", "w": "6.0", "h": "4.0" },
  "images": [ "https://cdn.example.com/cp-ffm-m-1.jpg" ],
  "status": "active"
}
EDI 846

6. Inventory

GET/inventory

Returns inventory for all your approved products.

GET/inventory/{sku}

Returns inventory for one product.

{
  "sku": "CP-FFM-M",
  "available": 242,
  "status": "in_stock",
  "next_restock_date": "2026-08-19",
  "updated_at": "2026-08-06T11:04:00Z"
}
EDI 850 · 856

7. Orders

POST/orders

Places an order.

GET/orders

Returns your orders.

GET/orders/{order_id}

Returns one order, with its shipments and tracking numbers.

GET/orders?po_number={po_number}

Returns every order related to one of your PO numbers.

Split orders

One PO can split into more than one internal order. This happens when items ship from different warehouses. The po_number query returns each internal order and its items. Each order carries its own status and its own shipments.

8. Order changes

POST/orders/{order_id}/cancel

Requests cancellation.

POST/orders/{order_id}/expedite

Requests expedited handling.

These endpoints create a request. They do not give an immediate guarantee. The response shows the request status.

9. Returns (RMA)

POST/orders/{order_id}/rma

Starts a return authorization request.

GET/rma/{rma_id}

Returns the status of one RMA request.

The POST endpoint creates a request only. It does not guarantee acceptance. We review each request.

Request

POST /orders/CI-884120-1/rma

{
  "reason": "damaged_in_transit",
  "items": [ { "sku": "CP-FFM-M", "quantity": 2 } ],
  "reason_detail": "Two cartons crushed on arrival."
}

Response

{
  "rma_id": "RMA-40912",
  "status": "received"
}
EDI 810

10. Invoices

GET/invoices

Returns your invoices.

GET/invoices/{invoice_id}

Returns one invoice.

GET/invoices?po_number={po_number}

Returns every invoice related to one of your PO numbers.

11. Sandbox

We supply a sandbox environment with test credentials and test data. Test your integration in the sandbox before you go live. Sandbox orders do not ship and do not invoice.