{
  "info": {
    "_postman_id": "cardpricer-public-api",
    "name": "CardPricer Public API",
    "description": "Auditable trading-card prices, comps, and freshness. See /docs/api for the human-readable docs and rate-limit tiers.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "version": "1.0.0"
  },
  "item": [
    {
      "name": "Discovery root",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1"
          ],
          "query": [],
          "variable": []
        },
        "description": "Self-describing index of every public endpoint."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "List cards",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/cards?sort=price_desc&limit=25&offset=0",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "cards"
          ],
          "query": [
            {
              "key": "sport",
              "value": "basketball",
              "description": "Canonical sport slug",
              "disabled": true
            },
            {
              "key": "player",
              "value": "",
              "description": "Player slug or substring",
              "disabled": true
            },
            {
              "key": "year",
              "value": "",
              "description": "Exact year",
              "disabled": true
            },
            {
              "key": "minPrice",
              "value": "",
              "disabled": true
            },
            {
              "key": "maxPrice",
              "value": "",
              "disabled": true
            },
            {
              "key": "sort",
              "value": "price_desc",
              "description": "price_desc | price_asc | recent | volume"
            },
            {
              "key": "limit",
              "value": "25"
            },
            {
              "key": "offset",
              "value": "0"
            }
          ],
          "variable": []
        },
        "description": "Paginated card directory with filters."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Get card",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/cards/:id",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "cards",
            ":id"
          ],
          "query": [],
          "variable": [
            {
              "key": "id",
              "value": "00000000-0000-0000-0000-000000000000",
              "description": "Card UUID"
            }
          ]
        },
        "description": "Single card with inline provenance summary."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Get card provenance",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/cards/:id/provenance",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "cards",
            ":id",
            "provenance"
          ],
          "query": [],
          "variable": [
            {
              "key": "id",
              "value": "00000000-0000-0000-0000-000000000000"
            }
          ]
        },
        "description": "Full provenance: every comp behind the price."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Get card history",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/cards/:id/history?interval=W",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "cards",
            ":id",
            "history"
          ],
          "query": [
            {
              "key": "interval",
              "value": "W"
            }
          ],
          "variable": [
            {
              "key": "id",
              "value": "00000000-0000-0000-0000-000000000000"
            }
          ]
        },
        "description": "OHLCV candles. Interval: D, W, M, Y."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "List players",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/players?sort=volume_desc&limit=50&offset=0",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "players"
          ],
          "query": [
            {
              "key": "q",
              "value": "",
              "disabled": true
            },
            {
              "key": "sport",
              "value": "",
              "disabled": true
            },
            {
              "key": "sort",
              "value": "volume_desc",
              "description": "volume_desc | top_price_desc | name_asc"
            },
            {
              "key": "limit",
              "value": "50"
            },
            {
              "key": "offset",
              "value": "0"
            }
          ],
          "variable": []
        },
        "description": "Player directory backed by canonical players table."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Get player",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/players/:slug",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "players",
            ":slug"
          ],
          "query": [],
          "variable": [
            {
              "key": "slug",
              "value": "stephen-curry",
              "description": "Player slug"
            }
          ]
        },
        "description": "Player profile with full card folder."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "List sets",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/sets?limit=50",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "sets"
          ],
          "query": [
            {
              "key": "sport",
              "value": "pokemon",
              "disabled": true
            },
            {
              "key": "manufacturer",
              "value": "",
              "disabled": true
            },
            {
              "key": "year",
              "value": "",
              "disabled": true
            },
            {
              "key": "limit",
              "value": "50"
            }
          ],
          "variable": []
        },
        "description": "Sealed-product set directory."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Get set",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/sets/:slug?days=90&history=1",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "sets",
            ":slug"
          ],
          "query": [
            {
              "key": "days",
              "value": "90"
            },
            {
              "key": "history",
              "value": "1"
            }
          ],
          "variable": [
            {
              "key": "slug",
              "value": "2024-topps-chrome-baseball"
            }
          ]
        },
        "description": "Single set with products and price history."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "List recent sales",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/sales?include=sale&limit=50",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "sales"
          ],
          "query": [
            {
              "key": "sport",
              "value": "",
              "disabled": true
            },
            {
              "key": "source",
              "value": "",
              "description": "Comma-separated, e.g. ebay,collector-crypt",
              "disabled": true
            },
            {
              "key": "include",
              "value": "sale",
              "description": "sale | listing | quote (comma-separated)"
            },
            {
              "key": "limit",
              "value": "50"
            }
          ],
          "variable": []
        },
        "description": "Chronological feed of recent observed comps."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Status / freshness",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "status"
          ],
          "query": [],
          "variable": []
        },
        "description": "Data-freshness report per upstream source."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    },
    {
      "name": "Download OpenAPI spec",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Accept",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/api/v1/openapi.json",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "api",
            "v1",
            "openapi.json"
          ],
          "query": [],
          "variable": []
        },
        "description": "OpenAPI 3.1 spec — drop into Insomnia or any SDK generator."
      },
      "_meta": {
        "example_host": "https://cardpricer.co"
      }
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Api-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://cardpricer.co",
      "description": "Base URL — switch between localhost and production here."
    },
    {
      "key": "apiKey",
      "value": "",
      "description": "Optional API key for higher rate limits. Anonymous works fine for casual use."
    }
  ]
}