Org Web Adapter

hungryroot/api/discovery-home-public-collections.org

ID
e8849e38-9d53-4f94-9de5-9e610cef41c5

Discovery home: public cookbook carousels

Discovery home: public cookbook carousels

CUSTOM_ID
discovery-home-public-cookbook-carousels

Model

CUSTOM_ID
model

- *=Collection.is_public=*: When =True=, the carousel may appear on the

unauthenticated discovery_home collection APIs. Defaults to =False=;

existing rows stay non-public until marketing toggles them in Django

admin.

- *=CollectionType.COOKBOOK=* / *=CollectionItemType.COOKBOOK=*:

Cookbook carousels use =type=cookbook=, =item_type=cookbook=, and

=item_ids= as comma-separated *=cookbooks.Cookbook= primary keys*.

=source= must be empty (marketing IDs only; no SmartCart or product

discount sources).

Authenticated *=/api/v3/discovery_home/customers/<id>/collections/=* is

unchanged: it still returns all active, non-=SUB= collections regardless

of =is_public=.

Public API

CUSTOM_ID
public-api

| Method | Path | Auth |

|--------+--------------------------------------------+-------------------|

| GET | =/api/v3/discovery_home/collections/= | None (=AllowAny=) |

| GET | =/api/v3/discovery_home/collections/<id>/= | None (=AllowAny=) |

*Queryset*: =is_active=True=, =is_public=True=, =item_type=cookbook=,

excluding =type=sub=, ordered by =sort_order=.

*Behavior*

- No customer context: no personalization, dietary filtering,

inventory-aware pairing/product logic, or SmartCart calls.

- Item payload under =item_details.items= is *={"id": <cookbook_pk>}=*

per cookbook. Clients load full cookbook payloads via existing public

*=/api/v3/cookbooks/=* (e.g. by id list or slug detail).

- Inactive cookbooks referenced in =item_ids= are omitted from =items=

(only active cookbooks are prefetched).

Operations

CUSTOM_ID
operations

- Publish a carousel: in *=/admin/discovery_home/collection/=*, set *Is

public*, *Type* = cookbook, *Item type* = cookbook, *Item IDs* to

cookbook PKs, *Source* empty, *Is active* as needed.