Get all product proposals - Fabric

Get all product proposals

cURL

curl --request GET \
  --url https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/ \
  --header 'Authorization: Bearer <token>'

Python

import requests

url = "https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)

JavaScript (Fetch API)

const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
?>

Go

package main

import (
    "fmt"
    "net/http"
    "io"
)

func main() {
    url := "https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))
}

Other HTTP client example

HttpResponse<String> response = Unirest.get("https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/")
  .header("Authorization", "Bearer <token>")
  .asString();

Ruby

require 'uri'
require 'net/http'

url = URI("https://marketplace-api.fabric.inc/v1/retailers/{retailer_id}/proposals/products/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body

Response

200

{
  "count": 100,
  "results": [
    {
      "name": "Winter 2025 Collection Update",
      "id": 101,
      "status": "proposed",
      "source": "console",
      "proposal_type": "new_product",
      "recipient": "retailer_456",
      "sender": "supplier_123",
      "memos": "Initial draft submitted by merchandising team.",
      "created_by": "user_789",
      "connection": "integration_abc",
      "retailer": "Fashion Retail Co.",
      "brand": "FrostWear",
      "department": "Apparel",
      "return_reason": "Insufficient pricing justification",
      "return_reason_detail": "Missing supplier cost comparison documentation.",
      "products": "[{ product_id: 202, name: 'Arctic Parka' }]",
      "push_to_shopify": true,
      "shopify_template": "default_fashion_template",
      "export_platform_template": "standard_export_v1",
      "attachments": "[{ filename: 'lookbook.pdf' }]",
      "end_at": "2025-09-30T23:59:59Z",
      "issues_summary": "Missing product images for 3 items",
      "is_acknowledged": false,
      "item_approved_count": 5,
      "item_deleted_count": 0,
      "item_rejected_count": 1,
      "item_skipped_count": 2,
      "item_count": "10",
      "item_classified_count": "8",
      "item_ready_count": "6",
      "item_failed_count": "1",
      "action_required": "Upload missing product photos",
      "has_action": "yes",
      "has_revision": "true",
      "has_unresolved_issues": true,
      "has_price_changes": true,
      "collaborators": "user_789, user_321",
      "target_live_date": "2025-10-01T00:00:00Z",
      "start_at": "2025-04-01T00:00:00Z",
      "expires_at": "2025-06-01T00:00:00Z",
      "updated_at": "2025-04-22T15:30:00Z",
      "created_at": "2025-04-20T08:45:00Z",
      "draft_proposed_at": "2025-04-10T12:00:00Z",
      "acknowledged_at": "2025-04-15T09:30:00Z",
      "proposed_at": "2025-04-20T10:00:00Z",
      "archived_at": "2025-04-22T17:00:00Z",
      "revised_at": "2025-04-21T14:15:00Z",
      "approved_at": "2025-04-25T11:00:00Z",
      "declined_at": "2025-04-26T10:30:00Z",
      "pricing_approved_at": "2025-04-24T13:45:00Z",
      "completed_at": "2025-04-28T16:00:00Z",
      "withdrawn_at": "2025-04-27T08:00:00Z",
      "withdraw_reason": "The product line was discontinued by the supplier.",
      "tags": "seasonal,featured,high-priority"
    }
  ],
  "next": "https://api.example.org/demo/{retailer_id}/?page=5",
  "previous": "https://api.example.org/demo/{retailer_id}/?page=3"
}

Authorizations

Authorization
string
header
required
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

retailer_id
integer
required
The unique retailer ID. In the Dropship UI this is called the Merchant ID. To find your Merchant ID, click your merchant name in the top nav.
Example: 1001

Response

200 - application/json

OK

count
integer
required
The total number of records
Example: 100

results
object[]
required
Showchild attributes

next
string | null
Next page (applicable in a paginated response)
Example: "https://api.example.org/demo/{retailer_id}/?page=5"

previous
string | null
Previous page (applicable in a paginated response)
Example: "https://api.example.org/demo/{retailer_id}/?page=3"