{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/soldgraph-com/json-schema/soldgraph-com-poshmark-listings-job-schema.json",
  "title": "PoshmarkListingsJob",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/soldgraph-com-openapi.json#/components/schemas/PoshmarkListingsJob",
  "type": "object",
  "required": [
    "request_id",
    "status",
    "credits",
    "cached"
  ],
  "properties": {
    "request_id": {
      "type": "string",
      "description": "ID of this request. Poll it at /v1/jobs/{request_id}."
    },
    "status": {
      "type": "string",
      "description": "pending, complete or failed. Always check it, even on HTTP 200.",
      "enum": [
        "pending",
        "complete",
        "failed"
      ]
    },
    "credits": {
      "type": "integer",
      "description": "Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed."
    },
    "cached": {
      "type": "boolean",
      "description": "True when the result came from the 15-minute cache."
    },
    "poll_url": {
      "type": "string",
      "description": "Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL."
    },
    "result": {
      "$ref": "#/$defs/PoshmarkListingsPage"
    },
    "error": {
      "type": "object",
      "required": [
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "page_mismatch",
            "schema",
            "network",
            "upstream",
            "throttled",
            "blocked",
            "rejected",
            "not_found",
            "filter_not_supported",
            "filter_not_applied",
            "location_not_served",
            "auth",
            "daily_limit",
            "deadline_exceeded",
            "credential_storage"
          ],
          "description": "Failed job code."
        },
        "message": {
          "type": "string",
          "description": "What the code means, in plain words."
        }
      }
    }
  },
  "$defs": {
    "Money": {
      "type": "object",
      "required": [
        "amount",
        "currency"
      ],
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code, like USD."
        }
      }
    },
    "PoshmarkListingsPage": {
      "type": "object",
      "required": [
        "provider",
        "country",
        "query",
        "page",
        "count",
        "reported_total",
        "next_page",
        "collected_at",
        "schema_version",
        "completeness",
        "field_notes",
        "page_size",
        "summary",
        "next_cursor",
        "data"
      ],
      "properties": {
        "provider": {
          "type": "string",
          "description": "Marketplace ID, like ebay or poshmark."
        },
        "country": {
          "type": "string",
          "description": "The country searched: us, or on eBay the country you sent."
        },
        "query": {
          "type": "string",
          "description": "The q you sent, with extra spaces removed."
        },
        "page": {
          "type": "integer",
          "description": "The page you asked for."
        },
        "count": {
          "type": "integer",
          "description": "Rows in result.data on this page."
        },
        "reported_total": {
          "type": "integer",
          "description": "Total matches the marketplace reports for the search. It may be rounded or capped."
        },
        "next_page": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served."
        },
        "collected_at": {
          "type": "string",
          "description": "When we collected the page, as an ISO 8601 timestamp."
        },
        "schema_version": {
          "type": "integer",
          "description": "Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning."
        },
        "completeness": {
          "type": "string",
          "description": "provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only."
        },
        "field_notes": {
          "type": "string",
          "description": "Plain-text notes on how to read this page's fields."
        },
        "page_size": {
          "type": "integer",
          "description": "Rows Poshmark returned before we removed listings that aren't for sale. It can be larger than count."
        },
        "summary": {
          "type": "object",
          "properties": {
            "priced_count": {
              "type": "integer",
              "description": "Rows on this page that show one price."
            },
            "currency": {
              "type": "string",
              "description": "Currency of the amounts below."
            },
            "median": {
              "type": [
                "number",
                "null"
              ],
              "description": "Middle displayed price of those rows."
            },
            "low": {
              "type": [
                "number",
                "null"
              ],
              "description": "Lowest displayed price."
            },
            "high": {
              "type": [
                "number",
                "null"
              ],
              "description": "Highest displayed price."
            },
            "p25": {
              "type": [
                "number",
                "null"
              ],
              "description": "First-quartile displayed price: a quarter of priced rows are at or below it."
            },
            "p75": {
              "type": [
                "number",
                "null"
              ],
              "description": "Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing."
            }
          },
          "required": [
            "priced_count",
            "currency",
            "median",
            "low",
            "high",
            "p25",
            "p75"
          ],
          "description": "Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths."
        },
        "next_cursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Send this as cursor, with page=next_page, to get the next page. Null on the last page."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PoshmarkListingsRow"
          }
        }
      }
    },
    "PoshmarkListingsRow": {
      "type": "object",
      "required": [
        "id",
        "title",
        "link",
        "displayed_price",
        "displayed_price_text",
        "condition",
        "brand",
        "size",
        "listed_at",
        "seller_text",
        "image"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The marketplace's listing ID."
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Listing title as shown."
        },
        "link": {
          "type": "string",
          "description": "URL of the listing on the marketplace."
        },
        "displayed_price": {
          "$ref": "#/$defs/Money",
          "description": "{ amount, currency } of the seller's current asking price, in the country's currency."
        },
        "displayed_price_text": {
          "type": [
            "string",
            "null"
          ],
          "description": "The price text, like $35.00, or C$40.00 on Poshmark Canada."
        },
        "condition": {
          "type": [
            "string",
            "null"
          ],
          "description": "Poshmark's own condition code, as Poshmark returns it, like nwt or ug. See condition codes."
        },
        "brand": {
          "type": [
            "string",
            "null"
          ],
          "description": "Brand as the seller entered it."
        },
        "size": {
          "type": [
            "string",
            "null"
          ],
          "description": "Size as the seller entered it."
        },
        "listed_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "When the listing was published, as an ISO 8601 timestamp."
        },
        "seller_text": {
          "type": [
            "string",
            "null"
          ],
          "description": "The seller's Poshmark username."
        },
        "image": {
          "type": [
            "string",
            "null"
          ],
          "description": "Image URL on Poshmark's image CDN."
        }
      }
    }
  }
}