Retrieve one of your offers
One listed line of your portfolio, by its portfolio_id: its wine as GET /offers gives it, with that line alone.
data.offer is what GET /offers gives as one item of data.offers: the same wine and fields, with only the line whose portfolio_id you gave under portfolio, and total_quantity its units. A listing’s code gives the wine with all the listing’s lines.
Path parameter
REQUIRED| codestring | A listed line’s portfolio_id, from GET /offers, GET /portfolio or the offer a write answered with, to read just that line’s units. A listing’s LISTING- code also works, for the whole listing. URL-encode it as a single path segment. |
data.offer is no longer a listing: it is now the wine, as an item of GET /offers’ data.offers, with the line you asked for, or a listing’s lines, under portfolio. The listing’s code is gone: each line has its own portfolio_id, which is what to give GET, PATCH or DELETE /offers/{code}.
On each line, held is now stock_type, with external for elsewhere. price and currency are now pricing.listing_price, in the wine’s currency, the market’s: a listing priced in another currency is converted at today’s rate. proceeds is now pricing.net_proceeds, with commission_percent, commission and settlement_fee between the two, and holding_ids, an id per unit, is now one portfolio_id for the line. Lines and wines also carry all else GET /portfolio gives them, from stock_status to pricing.cost and market_price.
The warehouse name and warehouse_code are now warehouse.current_location and warehouse.deliverable_warehouse_code, beside two new keys, warehouse.current_location_code and warehouse.location_type. Your own wine held outside Cru has a deliverable_warehouse_code, the Cru warehouse it goes to once sold, only while it is listed.
GET /offers and GET /offers/{code} need offers:read, not portfolio:read, yet their lines carry everything GET /portfolio’s do, pricing.cost included: a credential that can read your listings sees what the listed wine cost you.
Response fields
200 OKdata.offer, one wine as GET /offers gives it, with its currency — the market’s, which every amount is in — and the line or lines asked for under portfolio.
lwin18string
The 18-digit LWIN: wine, vintage and pack together. Match on all 18 digits.
wine_namestring | null
Cru’s name for the wine.
vintageinteger | null
The vintage year. 1000 means non-vintage.
pack_sizestring | null
Pack format, for example 6x75cl.
product_urlstring | null
The wine’s page on the Cru storefront for the market you called.
currencystring
ISO 4217 currency of every price here: the currency of the market you called. A price bought or listed in another currency is converted at today’s rate.
total_quantityinteger
Units in this wine’s portfolio lines, in total: all you hold of it, or what a filter leaves. On GET /offers, the units listed; on GET /offers/{code} and in what an offer write answers with, the units of the lines shown.
market_pricenumber | null
Cru’s market price for this wine, in its currency. Null when Cru has no price.
lowest_offer_pricenumber | null
The lowest price in Cru’s offer book for this wine, what a buyer would pay now, in its currency. Your own listings count. Null when there is no offer.
highest_bid_pricenumber | null
The highest bid on Cru for this wine, at the net price GET /market/bids quotes — what a seller receives for filling it — in its currency. Your own bids count, and so do bids your stock cannot fill: each bid’s requirements decide that. Null when there is no bid.
portfolioarray<object>
Lines of identical units, described below.
Each item in portfolio[]
portfolio_idstring
Opaque id of the line: PORTFOLIO- and 64 more characters. It is the same on every read and in every currency, and changes when the line does — when its units are listed, repriced or taken off sale, or their stock_status, condition_status or warehouse changes — but not when only its quantity does. A listed line is always inside one listing. GET, PATCH and DELETE /offers/{code} take a listed line’s id, to read, change or remove just its units.
stock_typestring
How the units are held, and so how they sell: cru (stored with Cru), external (in your own storage, sold through Cru), supplier (a corporate supplier’s own offer) or bpo (a supplier’s stock on a broking purchase order). Only a corporate supplier has the last two. Not warehouse.location_type, which says what kind of place they are in.
stock_statusstring
in_stock, in_transit or due_in. A supplier’s own offers and its BPO stock are always due_in: they reach Cru only once sold.
duty_paidboolean
Whether duty has been paid.
condition_statusstring | null
The units’ condition status: verified (Verified), client_reserves (Client Reserve) or apd (As per description).
condition_textstring | null
The written description of the units’ condition. Null when there is none.
is_listedboolean
Whether the units are listed for sale. Always true on GET /offers and GET /offers/{code}, and for a supplier’s own stock.
pricingobject
What the units cost, what they are listed at, what Cru takes and what you receive when they sell, per unit, below. Every amount is in the wine’s currency, converted at today’s rate where the wine was bought or listed in another currency, as Cru’s portfolio page converts them.
pricing.costnumber | null
What you paid per unit. Null when no cost was recorded, as for wine listed without one, for a supplier’s own stock, and when it cannot be converted.
pricing.listing_pricenumber | null
The asking price per unit while the units are listed; otherwise null. For a supplier’s own stock and BPO stock, the same as pricing.net_proceeds: Cru takes no commission from a supplier, and adds its margin for buyers instead.
pricing.commission_percentnumber | null
Cru’s commission, as a percent of pricing.listing_price: 5.0 is 5%. 0.0 for a supplier’s own stock and BPO stock, as Cru takes no commission from a supplier. Null while the line is not listed.
pricing.commissionnumber | null
Cru’s commission per unit: pricing.listing_price less pricing.commission and pricing.settlement_fee is pricing.net_proceeds, to the cent. 0.0 for a supplier’s own stock and BPO stock. Null while the line is not listed.
pricing.settlement_feenumber | null
For wine held outside Cru, the settlement fee per unit of the Cru warehouse it is sold through; 0.0 for every other stock_type. Null while the line is not listed.
pricing.net_proceedsnumber | null
What you receive per unit when the line sells, pricing.listing_price less pricing.commission and pricing.settlement_fee. Null while it is not listed. Units listed at one price can carry different commissions, so a line gives the lowest, with that unit’s commission_percent, commission and settlement_fee. For a supplier’s own offers, the supplier’s own price; for BPO stock, the purchase order’s cost.
photo_urlsarray<string>
Photos of the units in this line, on Cru’s media. [] when there are none.
quantityinteger
Units in this line.
warehouseobject
Where the wine is: its location_type, current_location, current_location_code and deliverable_warehouse_code, below.
warehouse.location_typestring | null
What kind of place it is: cru (a Cru warehouse), inbond (an inbond warehouse outside Cru), address (your own address) or supplier (a supplier’s own stock). Null when you told Cru you do not know where the wine is. Not to be confused with the line’s stock_type.
warehouse.current_locationstring | null
The name of where the wine is now, as the Cru website shows it: a warehouse's name; for wine at your own address, its street lines, which can run over several lines; “Your warehouse” for a supplier's own stock; or “Don't Know” when you told Cru you do not know where it is.
warehouse.current_location_codestring | null
Where the wine is now, as a code to give the current_location_code filter. For wine stored with Cru, the Cru warehouse’s code from GET /warehouses, the same as its deliverable_warehouse_code. For wine in an inbond warehouse outside Cru, IB_ and that warehouse’s inbond_address_id, such as IB_20: the writes and GET /warehouses/inbond/{id} take the number alone. Every inbond warehouse has one, even one GET /warehouses/inbond does not list and so may not find by its id. For wine at your own address, ADDR_ and the address’s id, such as ADDR_123: no endpoint lists address ids, so this is where to find them. Null for a supplier’s own stock, wine whose current_location is “Don't Know”, and wine stored with Cru in a warehouse with no Cru code.
warehouse.deliverable_warehouse_codestring | null
The Cru warehouse the wine can be delivered from, the code bids list as deliverable_warehouses: the one it is in or, for wine held outside Cru, the one it goes to once sold. Your own wine outside Cru has one only while it is listed. A supplier’s own stock and BPO stock have one wherever Cru has a warehouse to deliver to, which for stock at the supplier’s own warehouse is the Cru warehouse in its country, and null in a country with none. Null for wine stored with Cru in a warehouse with no Cru code, which cannot fill a bid. Given to GET /market/bids as deliverable_warehouse, it finds the bids the wine can fill.
Errors
A code or portfolio_id that is not yours, or out of date after a price change, returns OFFER_NOT_FOUND / 404, and so does the portfolio_id of a line that is not listed. Missing or invalid credentials return AUTH_INVALID_CREDENTIALS / 401. A credential without offers:read gets AUTH_INSUFFICIENT_SCOPE / 403. View all error codes →