Resell partners
5 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.
Store-to-store resell requests you received or sent, with units supplied and money moved
GET
/v1/store/resell-partnersOr name the store: GET /v1/stores/{storeId}/resell-partners
Parameters
side"received" | "sent"query
Response ListResellPartnershipsResponse
itemsResellPartnership[]requiredcountsResellCountsrequired
Example
curl "https://api.shopfa.st/v1/store/resell-partners" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/resell-partners', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/resell-partners",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/resell-partners", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Ask another store to let you resell its products at a discount
POST
/v1/store/resell-partnersOr name the store: POST /v1/stores/{storeId}/resell-partners
Body
handlestringrequireddiscountBpsintegerrequiredproductIdsprd_…[]requiredmessagestring
Response ResellPartnership
idResellPartnershipIdrequiredsideResellSiderequiredstatusResellPartnershipStatusrequiredpartnerResellStorerequireddiscountBpsResellDiscountBpsrequiredcurrencyCurrencyCoderequiredmessagestringrequiredproductsResellPartnershipProduct[]requiredunitsSuppliedintegerrequiredpaidMinorMinorUnitsrequired
6 more fields
owedMinorMinorUnitsrequiredsettlementResellSettlementrequiredcreatedAtTimestamprequireddecidedAtTimestamp | nullrequiredendedAtTimestamp | nullrequiredendedByResellParty | nullrequired
Example
curl -X POST "https://api.shopfa.st/v1/store/resell-partners" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"handle": "string",
"discountBps": 100,
"productIds": [
"prd_0123456789abcdefghjk"
],
"message": ""
}'const res = await fetch('https://api.shopfa.st/v1/store/resell-partners', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"handle": "string",
"discountBps": 100,
"productIds": [
"prd_0123456789abcdefghjk"
],
"message": ""
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/resell-partners",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"handle": "string",
"discountBps": 100,
"productIds": [
"prd_0123456789abcdefghjk"
],
"message": ""
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/resell-partners", strings.NewReader(`{
"handle": "string",
"discountBps": 100,
"productIds": [
"prd_0123456789abcdefghjk"
],
"message": ""
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
A store by its address and the key and serial products it can supply
GET
/v1/store/resell-partners/supplierOr name the store: GET /v1/stores/{storeId}/resell-partners/supplier
Parameters
handlestringqueryrequired
Response FindResellSupplierResponse
storeResellStorerequiredcurrencyCurrencyCoderequiredproductsResellableProduct[]required
Example
curl "https://api.shopfa.st/v1/store/resell-partners/supplier" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/resell-partners/supplier', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/resell-partners/supplier",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/resell-partners/supplier", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Accept or reject a request (supplier), cancel it (reseller), or end a partnership (either side)
POST
/v1/store/resell-partners/{partnershipId}/decisionOr name the store: POST /v1/stores/{storeId}/resell-partners/{partnershipId}/decision
Parameters
partnershipIdrsp_…pathrequired
Body
decision"accept" | "reject" | "cancel" | "end"required
Response ResellPartnership
idResellPartnershipIdrequiredsideResellSiderequiredstatusResellPartnershipStatusrequiredpartnerResellStorerequireddiscountBpsResellDiscountBpsrequiredcurrencyCurrencyCoderequiredmessagestringrequiredproductsResellPartnershipProduct[]requiredunitsSuppliedintegerrequiredpaidMinorMinorUnitsrequired
6 more fields
owedMinorMinorUnitsrequiredsettlementResellSettlementrequiredcreatedAtTimestamprequireddecidedAtTimestamp | nullrequiredendedAtTimestamp | nullrequiredendedByResellParty | nullrequired
Example
curl -X POST "https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/decision" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"decision": "accept"
}'const res = await fetch('https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/decision', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"decision": "accept"
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/decision",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"decision": "accept"
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/decision", strings.NewReader(`{
"decision": "accept"
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
List a supplier's product in your store at your price (keys come from the supplier)
POST
/v1/store/resell-partners/{partnershipId}/listingsOr name the store: POST /v1/stores/{storeId}/resell-partners/{partnershipId}/listings
Parameters
partnershipIdrsp_…pathrequired
Body
supplierProductIdprd_…requiredpriceMinorintegerrequirednamestring | null
Response ResellPartnership
idResellPartnershipIdrequiredsideResellSiderequiredstatusResellPartnershipStatusrequiredpartnerResellStorerequireddiscountBpsResellDiscountBpsrequiredcurrencyCurrencyCoderequiredmessagestringrequiredproductsResellPartnershipProduct[]requiredunitsSuppliedintegerrequiredpaidMinorMinorUnitsrequired
6 more fields
owedMinorMinorUnitsrequiredsettlementResellSettlementrequiredcreatedAtTimestamprequireddecidedAtTimestamp | nullrequiredendedAtTimestamp | nullrequiredendedByResellParty | nullrequired
Example
curl -X POST "https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/listings" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"supplierProductId": "prd_0123456789abcdefghjk",
"priceMinor": 0,
"name": null
}'const res = await fetch('https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/listings', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"supplierProductId": "prd_0123456789abcdefghjk",
"priceMinor": 0,
"name": null
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/listings",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"supplierProductId": "prd_0123456789abcdefghjk",
"priceMinor": 0,
"name": None
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/resell-partners/rsp_0123456789abcdefghjk/listings", strings.NewReader(`{
"supplierProductId": "prd_0123456789abcdefghjk",
"priceMinor": 0,
"name": null
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)