Strains (Catalogue)
Endpoint reference: ✅ Verified live against production on 10 May 2026. Strains are the products in your store. The Dr Green platform handles inventory and fulfilment; your job is to surface the catalogue, filtered to what’s available in the customer’s country, and link strain selections into orders.
Endpoints
Both routes accept
DualAuthGuard — JWT (DAPP UI) or API-key+signature (your store).
GET /dapp/strains
List strains available in the given country. Returns a paginated wrapper.
Query parameters
Canonical payload (for signing)
urlencode(query) — e.g. countryCode=GBR&page=1&limit=10
Response shape (verified)
Strain summary object
Thestrains[] items contain the fields needed to render a catalogue card. The full schema isn’t formally declared in the OpenAPI spec; the verified shape from production includes:
⚠️ Field set varies by deployment. Always defensively read fields (strain.imageUrl ?? null) — fields can be added without notice.
Worked examples
cURL:Errors specific to this endpoint
GET /dapp/strains/{strainId}
Get one strain with full detail. Use this when rendering a strain detail page or refreshing data on an item already in the cart.
Path parameters
Canonical payload (for signing)
{} — no query params, the empty-params fallback. Not "". See 02-authentication.md § Canonical payload.
Response shape
Worked example (cURL)
Errors
Image URLs
StrainimageUrl values come in two forms:
- A bare filename / S3 key — e.g.
33eac80b-58c4-46d3-a82b-b70c875d333f-cakes-and-cream.png - A full URL — e.g.
https://cdn.drgreennft.com/strains/...
Caching guidance
The catalogue changes infrequently — new strains land, occasionally one is removed. Cache aggressively:- List response: TTL 5 minutes per
(countryCode, page, limit, search)cache key. - Detail response: TTL 10 minutes per
strainId. - 404 on detail: drop the strain from your local index immediately and refresh the list.