### Install appie-extra CLI Source: https://context7.com/aaearon/appie-extra/llms.txt Install the appie-extra CLI tool using 'go install' or by building from source. After installation, authenticate using 'appie login', which is shared with the appie CLI. ```bash # Install via go install go install github.com/DanielOostdam-Create/appie-extra@latest # Or build from source git clone https://github.com/DanielOostdam-Create/appie-extra.git cd appie-extra go build -o appie-extra . # Authenticate (one-time, shared with appie CLI) appie login ``` -------------------------------- ### Install appie-extra CLI Tool Source: https://github.com/aaearon/appie-extra/blob/main/README.md Install the appie-extra CLI tool globally using go install. Ensure you have Go installed and configured. ```bash go install github.com/DanielOostdam-Create/appie-extra@latest ``` -------------------------------- ### Build appie-extra from Source Source: https://github.com/aaearon/appie-extra/blob/main/README.md Clone the repository and build the appie-extra executable from source. This is an alternative to the go install method. ```bash git clone https://github.com/DanielOostdam-Create/appie-extra.git cd appie-extra go build -o appie-extra . ``` -------------------------------- ### Get Specific Recipe Details Source: https://github.com/aaearon/appie-extra/blob/main/README.md Retrieve the full details of a specific recipe, including ingredients, servings, and cook time, by providing its ID to the 'recipe' command. ```bash appie-extra recipe 1234567 ``` -------------------------------- ### Get featured bonus products Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches prominently displayed deals from the AH app home screen. No additional arguments are needed. ```bash appie-extra bonus-spotlight ``` -------------------------------- ### Get full recipe details by ID Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieve detailed information for a specific recipe using its ID with the 'recipe' command. The output includes ingredients that can be extracted as plain text using 'jq'. ```bash appie-extra recipe 1043567 # Example output { "id": 1043567, "title": "Kip-kerrie met rijst", "description": "Een klassieke kip-kerrie...", "cookTime": 30, "servings": { "number": 4 }, "ingredients": [ { "text": "500 g kipfilet", "quantity": "500", "name": { "singular": "kipfilet", "plural": "kipfilets" } }, { "text": "2 el kerriepoeder", "quantity": "2", "name": { "singular": "eetlepel kerriepoeder", "plural": "eetlepels kerriepoeder" } } ] } # Extract ingredient list as plain text appie-extra recipe 1043567 | jq -r '.ingredients[].text' ``` -------------------------------- ### Get current bonus products Source: https://context7.com/aaearon/appie-extra/llms.txt Fetch current bonus products with the 'bonus-products' command, optionally limiting the number of results. The total count of available bonus products is always included in the response. ```bash # Get first 50 bonus products (default) appie-extra bonus-products # Get top 10 bonus products appie-extra bonus-products 10 # Example output { "products": [ { "id": 119600, "title": "Oatly Havermelk", "discount": "2e halve prijs", ... }, { "id": 456789, "title": "AH Yoghurt", "discount": "30% korting", ... } ], "total": 248 } ``` -------------------------------- ### GraphQL Query for Brabantia Program Details Source: https://github.com/aaearon/appie-extra/blob/main/README.md Use the 'loyaltyProgram' GraphQL query with programId 217 to get details about the Brabantia loyalty program, including its status and active periods. ```graphql loyaltyProgram(programId: 217) ``` -------------------------------- ### Get paginated purchase history Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieve paginated purchase history using the 'previously-bought' command. Supports custom 'size' (items per page) and 'page' (zero-indexed) parameters. The output can be piped to 'jq' for specific data extraction. ```bash # Default: 50 items from page 0 appie-extra previously-bought # Get 20 items from page 2 appie-extra previously-bought 20 2 # Example output { "products": [ { "id": 988595, "title": "AH Melk halfvol", "brand": "AH", "category": "Zuivel" }, { "id": 119600, "title": "Havermelk", "brand": "Oatly", "category": "Plantaardig" } ], "totalElements": 312, "totalPages": 7, "page": 2, "size": 20 } # Pipe to jq to extract just product IDs and titles appie-extra previously-bought 100 0 | jq '.products[] | {id, title}' ``` -------------------------------- ### REST Endpoint for Personal Bonus Box Source: https://github.com/aaearon/appie-extra/blob/main/README.md Fetch personal Bonus Box offers for a specific date using the GET request to the /mobile-services/bonuspage/v1/personal endpoint. ```http GET /mobile-services/bonuspage/v1/personal?bonusStartDate=YYYY-MM-DD ``` -------------------------------- ### Convert Shopping List to Order and Check Pricing Source: https://github.com/aaearon/appie-extra/blob/main/README.md Convert your current shopping list into an active order using 'list-to-order', then review the order's pricing totals with 'order-summary'. ```bash appie-extra list-to-order ``` ```bash appie-extra order-summary ``` -------------------------------- ### Search Recipes by Ingredient Source: https://github.com/aaearon/appie-extra/blob/main/README.md Search for recipes by ingredient using the 'search-recipes' command, specifying the query and the desired number of results. ```bash appie-extra search-recipes "kip" 5 ``` -------------------------------- ### Search Allerhande recipes Source: https://context7.com/aaearon/appie-extra/llms.txt Search for recipes using the 'search-recipes' command with a query and an optional size limit (max 100). If no query is provided, popular or random recipes are returned. ```bash # Search for chicken recipes, return top 5 appie-extra search-recipes "kip" 5 # Search without a query (returns popular/random recipes) appie-extra search-recipes "" 10 # Example output { "recipes": [ { "id": 1043567, "title": "Kip-kerrie met rijst", "slug": "kip-kerrie-met-rijst" }, { "id": 998123, "title": "Gegrilde kip met groenten", "slug": "gegrilde-kip-met-groenten" } ], "total": 5 } ``` -------------------------------- ### Add Items to Shopping List in Bulk Source: https://github.com/aaearon/appie-extra/blob/main/README.md Add multiple items to your shopping list from standard input using JSON format with the 'batch-add' command. Each item can be specified by ID or as free text. ```bash echo '[{"id":123,"qty":2},{"text":"avocado","qty":3}]' | appie-extra batch-add ``` -------------------------------- ### Find bonus products by keyword Source: https://context7.com/aaearon/appie-extra/llms.txt Searches for bonus products that match a given keyword. Requires jq to filter the JSON output. ```bash appie-extra bonus-products 200 | jq '.products[] | select(.title | test("kaas"; "i"))' ``` -------------------------------- ### batch-add Source: https://context7.com/aaearon/appie-extra/llms.txt Adds multiple items from a JSON array provided via stdin to the shopping list. ```APIDOC ## batch-add — Add multiple items from stdin JSON ### Description Reads a JSON array from stdin and adds each item to the shopping list. Each entry can be a product by `id` or a free-text entry by `text`. Failed individual items emit a warning to stderr but do not abort the batch. ### Method POST ### Endpoint /shopping-list/batch-add ### Parameters #### Request Body - **items** (array) - Required - An array of items to add. Each item can be an object with `id` (integer) and `qty` (integer) for products, or `text` (string) and `qty` (integer) for free-text items. ### Request Example ```bash # Mixed batch: products by ID and free-text items echo '[ {"id": 988595, "qty": 2}, {"id": 119600, "qty": 1}, {"text": "avocado", "qty": 3}, {"text": "verse basilicum"} ]' | appie-extra batch-add # Load from a file cat shopping-list.json | appie-extra batch-add ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **added** (integer) - The number of items successfully added. - **total** (integer) - The total number of items processed. #### Response Example ```json { "ok": true, "added": 4, "total": 4 } ``` ``` -------------------------------- ### Check Bonus Box Offers Source: https://github.com/aaearon/appie-extra/blob/main/README.md View your personal Bonus Box offers for the current week using the 'bonusbox' command. Use 'bonusbox next' to see offers for the following week. ```bash appie-extra bonusbox ``` ```bash appie-extra bonusbox next ``` -------------------------------- ### Browse Purchase History Source: https://github.com/aaearon/appie-extra/blob/main/README.md Use the 'previously-bought' command with optional size and page parameters to retrieve your full purchase history. Defaults to 50 items per page. ```bash appie-extra previously-bought 20 0 ``` -------------------------------- ### search-recipes [query] [size] Source: https://context7.com/aaearon/appie-extra/llms.txt Searches the Allerhande recipe database for recipes matching a given query. Supports specifying the number of results to return. ```APIDOC ## search-recipes [query] [size] ### Description Searches the Allerhande recipe database via the AH GraphQL `recipeSearch` query. The `query` argument is matched against ingredients. Returns recipe IDs, titles, and slugs. Defaults to size 10; max is 100. ### Method CLI Command ### Endpoint N/A (CLI Command) ### Parameters - **query** (string) - Optional - The search term to match against recipe ingredients. If empty, popular/random recipes are returned. - **size** (integer) - Optional - The maximum number of recipes to return. Defaults to 10, with a maximum of 100. ### Request Example ```bash # Search for chicken recipes, return top 5 appie-extra search-recipes "kip" 5 # Search without a query (returns popular/random recipes) appie-extra search-recipes "" 10 ``` ### Response #### Success Response (JSON) - **recipes** (array) - An array of matching recipes. Each recipe object contains: - **id** (integer) - The recipe's unique identifier. - **title** (string) - The title of the recipe. - **slug** (string) - A URL-friendly version of the recipe title. - **total** (integer) - The total number of recipes found matching the query. #### Response Example ```json { "recipes": [ { "id": 1043567, "title": "Kip-kerrie met rijst", "slug": "kip-kerrie-met-rijst" }, { "id": 998123, "title": "Gegrilde kip met groenten", "slug": "gegrilde-kip-met-groenten" } ], "total": 5 } ``` ``` -------------------------------- ### Configure Delivery Address for Delivery Slots Source: https://github.com/aaearon/appie-extra/blob/main/README.md Create a configuration file at ~/ah-assistant/config.json with your delivery address details to use the delivery-slots command. ```json { "delivery_address": { "city": "Amsterdam", "country_code": "NL", "house_number": 1, "postal_code": "1000AA", "street": "Keizersgracht" } } ``` -------------------------------- ### Show current basket contents Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches the current shopping basket contents, including items in the active order and items in the list. Uses the `appie-extra basket` command. ```bash appie-extra basket ``` -------------------------------- ### Show order pricing totals Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves and displays pricing details for the active order, including subtotal, delivery costs, discounts, and the final amount. Amounts are in cents. ```bash appie-extra order-summary ``` ```bash appie-extra order-summary | jq '.total.amount / 100' ``` -------------------------------- ### Show Koopzegels Balance Source: https://github.com/aaearon/appie-extra/blob/main/README.md Display your Koopzegels (stamp) balance, interest, and savings goal information using the 'koopzegels' command. ```bash appie-extra koopzegels ``` -------------------------------- ### Show member profile and segmentation data Source: https://context7.com/aaearon/appie-extra/llms.txt Fetch the authenticated member's profile and personalization data using the 'member' command. This is useful for verifying authentication and retrieving account metadata. ```bash appie-extra member # Example output { "id": 12345678, "firstName": "Jan", "lastName": "de Vries", "email": "jan@example.nl", "segmentation": { ... } } ``` -------------------------------- ### Check Available Delivery Slots Source: https://github.com/aaearon/appie-extra/blob/main/README.md View available delivery time slots for your address by executing the 'delivery-slots' command. Requires prior configuration of delivery address. ```bash appie-extra delivery-slots ``` -------------------------------- ### Show available delivery time slots Source: https://context7.com/aaearon/appie-extra/llms.txt Queries available home delivery windows using the AH GraphQL API. Requires a configured `delivery_address` in `~/grocery-assistant/ah/config.json`. ```bash appie-extra delivery-slots ``` ```jq appie-extra delivery-slots | jq ' .orderDeliverySlots[] | .date as $date | .slots[] | select(.serviceCharge.price.amount == 0 and .isFullyBooked == false) | { date: $date, start: .startTime, end: .endTime } ' ``` -------------------------------- ### GraphQL Query for Recipe Search Source: https://github.com/aaearon/appie-extra/blob/main/README.md Use the 'recipeSearch' GraphQL query with parameters like 'ingredients' and 'size' to find recipes. For full recipe details, use the 'recipe' query with an ID. ```graphql recipeSearch(query: { ingredients: "...", size: N }) ``` ```graphql recipe(id: N) ``` -------------------------------- ### Add multiple items from stdin JSON Source: https://context7.com/aaearon/appie-extra/llms.txt Reads a JSON array from standard input to add multiple items to the shopping list. Supports both product IDs and free-text entries. Individual failures do not stop the batch. ```bash echo '[ {"id": 988595, "qty": 2}, {"id": 119600, "qty": 1}, {"text": "avocado", "qty": 3}, {"text": "verse basilicum"} ]' | appie-extra batch-add ``` ```bash cat shopping-list.json | appie-extra batch-add ``` -------------------------------- ### Add free-text item to shopping list Source: https://context7.com/aaearon/appie-extra/llms.txt Adds a non-product item to the AH shopping list. Quantity defaults to 1 if not specified. ```bash appie-extra add-freetext "avocado" ``` ```bash appie-extra add-freetext "biologische melk" 3 ``` -------------------------------- ### recipe Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves the full details for a specific Allerhande recipe using its unique ID. ```APIDOC ## recipe ### Description Fetches a single Allerhande recipe by its numeric ID via the AH GraphQL `recipe(id: N)` query. Returns the full recipe including title, description, cook time, number of servings, and a structured ingredient list with quantities and singular/plural names. ### Method CLI Command ### Endpoint N/A (CLI Command) ### Parameters - **id** (integer) - Required - The unique numeric identifier of the recipe. ### Request Example ```bash appie-extra recipe 1043567 ``` ### Response #### Success Response (JSON) - **id** (integer) - The recipe's unique identifier. - **title** (string) - The title of the recipe. - **description** (string) - A description of the recipe. - **cookTime** (integer) - The cooking time in minutes. - **servings** (object) - Information about the number of servings. - **number** (integer) - The number of people the recipe serves. - **ingredients** (array) - A list of ingredients for the recipe. Each ingredient object contains: - **text** (string) - The ingredient as a plain text string (e.g., "500 g kipfilet"). - **quantity** (string) - The quantity of the ingredient (e.g., "500"). - **name** (object) - The name of the ingredient, with singular and plural forms: - **singular** (string) - The singular form of the ingredient name. - **plural** (string) - The plural form of the ingredient name. #### Response Example ```json { "id": 1043567, "title": "Kip-kerrie met rijst", "description": "Een klassieke kip-kerrie...", "cookTime": 30, "servings": { "number": 4 }, "ingredients": [ { "text": "500 g kipfilet", "quantity": "500", "name": { "singular": "kipfilet", "plural": "kipfilets" } }, { "text": "2 el kerriepoeder", "quantity": "2", "name": { "singular": "eetlepel kerriepoeder", "plural": "eetlepels kerriepoeder" } } ] } ``` ### Usage Example with jq ```bash # Extract ingredient list as plain text appie-extra recipe 1043567 | jq -r '.ingredients[].text' ``` ``` -------------------------------- ### list-to-order Source: https://context7.com/aaearon/appie-extra/llms.txt Converts the current shopping list into an active delivery order. ```APIDOC ## list-to-order — Convert shopping list to active order ### Description Converts the current AH shopping list into an active delivery order via `client.ShoppingListToOrder`. This is a write operation — it moves shopping list items into a pending order. ### Method POST ### Endpoint /orders/convert-list ### Request Example ```bash appie-extra list-to-order # Typical workflow: build list, convert, review pricing, confirm appie-extra list-to-order && appie-extra order-summary ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **action** (string) - A message describing the action performed, e.g., "shopping list converted to order". #### Response Example ```json { "ok": true, "action": "shopping list converted to order" } ``` ``` -------------------------------- ### bonus-spotlight Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches the highlighted/featured bonus products. These are the prominently displayed deals on the AH app home screen. ```APIDOC ## bonus-spotlight — Get featured bonus products ### Description Fetches the highlighted/featured bonus products via `client.GetSpotlightBonusProducts`. These are the prominently displayed deals on the AH app home screen. ### Method GET ### Endpoint /bonus-spotlight ### Request Example ```bash appie-extra bonus-spotlight ``` ### Response #### Success Response (200) - **products** (array) - List of featured products, each with id, title, and discount. - **total** (integer) - The total number of featured products. #### Response Example ```json { "products": [ { "id": 112233, "title": "AH Stroopwafels", "discount": "50% korting" } ], "total": 1 } ``` ``` -------------------------------- ### Show payout amount in euros Source: https://context7.com/aaearon/appie-extra/llms.txt Calculates the payout amount in euros from the purchase stamp balance. Requires the output of `appie-extra koopzegels`. ```bash appie-extra koopzegels | jq '.purchaseStampBalance.money.payout.amount / 100' ``` -------------------------------- ### Add product to basket Source: https://context7.com/aaearon/appie-extra/llms.txt Adds a product to the AH basket by product ID using the `basketItemsUpdate` mutation. Quantity defaults to 1 if not specified. ```bash # Add product 988595 once appie-extra basket-add 988595 ``` ```bash # Add product 119600 with quantity 3 appie-extra basket-add 119600 3 ``` -------------------------------- ### Show personal Bonus Box offers Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves personalized Bonus Box offers. Defaults to the current week. Use 'next' for the following week or a specific date (YYYY-MM-DD) for a particular week. ```bash appie-extra bonusbox ``` ```bash appie-extra bonusbox next ``` ```bash appie-extra bonusbox 2025-06-01 ``` ```bash appie-extra bonusbox | jq '.lanes[].title' ``` -------------------------------- ### Show Brabantia spaaractie status Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches Brabantia loyalty program details including name, status, and saving/redeem periods. Requires the `appie-extra brabantia` command. ```bash appie-extra brabantia ``` ```bash # Check remaining days in saving period appie-extra brabantia | jq '.program.loyaltyProgram.savingPeriod.end' ``` -------------------------------- ### basket-add [qty] Source: https://context7.com/aaearon/appie-extra/llms.txt Adds a product to the AH basket (winkelmandje) by product ID using the GraphQL `basketItemsUpdate` mutation. Quantity defaults to 1. ```APIDOC ## basket-add [qty] ### Description Adds a product to the AH basket (winkelmandje) by product ID using the GraphQL `basketItemsUpdate` mutation. Quantity defaults to 1. ### Method POST ### Endpoint /basket-add/{product-id} ### Parameters #### Path Parameters - **product-id** (integer) - Required - The ID of the product to add. #### Query Parameters - **qty** (integer) - Optional - The quantity of the product to add. Defaults to 1. ### Request Example ```bash # Add product 988595 once appie-extra basket-add 988595 # Add product 119600 with quantity 3 appie-extra basket-add 119600 3 ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **action** (string) - The action performed (e.g., "added"). - **productId** (integer) - The ID of the product. - **quantity** (integer) - The quantity of the product. #### Response Example ```json { "ok": true, "action": "added", "productId": 119600, "quantity": 3 } ``` ``` -------------------------------- ### order-summary Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves pricing totals for the current active order. ```APIDOC ## order-summary — Show order pricing totals ### Description Retrieves pricing totals for the current active order via `client.GetOrderSummary`. Returns subtotal, delivery costs, discounts applied, and final amount due. ### Method GET ### Endpoint /orders/summary ### Request Example ```bash appie-extra order-summary # Extract total in euros (amounts are in cents) appie-extra order-summary | jq '.total.amount / 100' ``` ### Response #### Success Response (200) - **subTotal** (object) - Contains the subtotal amount. - **amount** (integer) - The subtotal amount in cents. - **deliveryCosts** (object) - Contains the delivery costs. - **amount** (integer) - The delivery costs in cents. - **totalDiscount** (object) - Contains the total discount applied. - **amount** (integer) - The total discount in cents. - **total** (object) - Contains the final total amount. - **amount** (integer) - The final total amount in cents. #### Response Example ```json { "subTotal": { "amount": 4523 }, "deliveryCosts": { "amount": 0 }, "totalDiscount": { "amount": 312 }, "total": { "amount": 4211 } } ``` ``` -------------------------------- ### Show scheduled deliveries Source: https://context7.com/aaearon/appie-extra/llms.txt Lists all upcoming scheduled deliveries for the account, including delivery windows, status, and order information. ```bash appie-extra fulfillments ``` ```bash appie-extra fulfillments | jq --arg today "$(date -u +%Y-%m-%d)" '.fulfillments[] | select(.deliveryWindow.start | startswith($today))' ``` -------------------------------- ### brabantia Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches the Brabantia loyalty program details (program ID 217) via GraphQL `loyaltyProgram` and `loyaltyPointsBalances` queries. Returns the program name, status, saving/redeem period dates, and current stamp balance. ```APIDOC ## brabantia ### Description Fetches the Brabantia loyalty program details (program ID 217) via GraphQL `loyaltyProgram` and `loyaltyPointsBalances` queries. Returns the program name, status, saving/redeem period dates, and current stamp balance. ### Method GET ### Endpoint /brabantia ### Request Example ```bash appie-extra brabantia ``` ### Response #### Success Response (200) - **program** (object) - Loyalty program details. - **balance** (object) - Loyalty points balance. #### Response Example ```json { "program": { "loyaltyProgram": { "id": 217, "name": "Brabantia Spaaractie", "type": "STAMPS", "status": "ACTIVE", "savingPeriod": { "start": "2025-04-01", "end": "2025-06-30" }, "redeemPeriod": { "start": "2025-07-01", "end": "2025-08-31" }, "content": { "title": "Spaar voor Brabantia producten" } } }, "balance": { "loyaltyPointsBalances": [{ "programId": 217, "balance": 14 }] } } ``` ``` -------------------------------- ### GraphQL Query for Delivery Slots Source: https://github.com/aaearon/appie-extra/blob/main/README.md The 'orderDeliverySlots' GraphQL query requires a MemberAddressInput and returns available delivery days, time slots, and associated charges. ```graphql orderDeliverySlots(address: MemberAddressInput!) ``` -------------------------------- ### GraphQL Query for Previously Bought Products Source: https://github.com/aaearon/appie-extra/blob/main/README.md The 'productSearch' GraphQL query can be used with the 'previouslyBought: true' flag to retrieve a user's purchase history. ```graphql productSearch with previouslyBought: true ``` -------------------------------- ### bonus-products [limit] Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves a list of current Albert Heijn bonus products. Allows specifying a limit for the number of products returned. ```APIDOC ## bonus-products [limit] ### Description Fetches all current AH bonus products via `client.GetBonusProducts` and returns up to `limit` items (default 50). The total available count is always included in the response regardless of the limit. ### Method CLI Command ### Endpoint N/A (CLI Command) ### Parameters - **limit** (integer) - Optional - The maximum number of bonus products to return. Defaults to 50. ### Request Example ```bash # Get first 50 bonus products (default) appie-extra bonus-products # Get top 10 bonus products appie-extra bonus-products 10 ``` ### Response #### Success Response (JSON) - **products** (array) - An array of bonus products. Each product object may contain: - **id** (integer) - The product's unique identifier. - **title** (string) - The name of the product. - **discount** (string) - A description of the discount (e.g., "2e halve prijs", "30% korting"). - ... (other product details may be included) - **total** (integer) - The total number of bonus products currently available. #### Response Example ```json { "products": [ { "id": 119600, "title": "Oatly Havermelk", "discount": "2e halve prijs", ... }, { "id": 456789, "title": "AH Yoghurt", "discount": "30% korting", ... } ], "total": 248 } ``` ``` -------------------------------- ### add-freetext [qty] Source: https://context7.com/aaearon/appie-extra/llms.txt Adds a free-text item to the shopping list, useful for items not in the product catalog. ```APIDOC ## add-freetext [qty] — Add free-text item to shopping list ### Description Adds a free-text (non-product) item to the AH shopping list via `client.AddFreeTextToShoppingList`. Quantity defaults to 1. Useful for adding items that don't exist in the AH product catalog. ### Method POST ### Endpoint /shopping-list/add-freetext ### Parameters #### Path Parameters - **text** (string) - Required - The free-text item to add. - **qty** (integer) - Optional - The quantity of the item to add. Defaults to 1. ### Request Example ```bash # Add "avocado" once appie-extra add-freetext "avocado" # Add "biologische melk" three times appie-extra add-freetext "biologische melk" 3 ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **text** (string) - The text of the added item. - **quantity** (integer) - The quantity of the added item. #### Response Example ```json { "ok": true, "text": "biologische melk", "quantity": 3 } ``` ``` -------------------------------- ### Convert shopping list to active order Source: https://context7.com/aaearon/appie-extra/llms.txt Transforms the current shopping list into an active delivery order. This is a write operation that moves items to a pending order. ```bash appie-extra list-to-order ``` ```bash appie-extra list-to-order && appie-extra order-summary ``` -------------------------------- ### previously-bought [size] [page] Source: https://context7.com/aaearon/appie-extra/llms.txt Retrieves a paginated list of items the user has previously bought from the Albert Heijn API. Supports custom page size and page number. ```APIDOC ## previously-bought [size] [page] ### Description Queries the AH GraphQL `productSearch` endpoint with the `previouslyBought: true` flag to return items the authenticated user has bought before. Supports pagination via `size` (items per page, default 50) and `page` (zero-indexed, default 0). ### Method CLI Command ### Endpoint N/A (CLI Command) ### Parameters - **size** (integer) - Optional - The number of items to return per page. Defaults to 50. - **page** (integer) - Optional - The zero-indexed page number to retrieve. Defaults to 0. ### Request Example ```bash # Default: 50 items from page 0 appie-extra previously-bought # Get 20 items from page 2 appie-extra previously-bought 20 2 ``` ### Response #### Success Response (JSON) - **products** (array) - An array of previously bought products. Each product object may contain: - **id** (integer) - The product's unique identifier. - **title** (string) - The name of the product. - **brand** (string) - The brand of the product. - **category** (string) - The category the product belongs to. - **totalElements** (integer) - The total number of elements available across all pages. - **totalPages** (integer) - The total number of pages available. - **page** (integer) - The current page number. - **size** (integer) - The number of items per page. #### Response Example ```json { "products": [ { "id": 988595, "title": "AH Melk halfvol", "brand": "AH", "category": "Zuivel" }, { "id": 119600, "title": "Havermelk", "brand": "Oatly", "category": "Plantaardig" } ], "totalElements": 312, "totalPages": 7, "page": 2, "size": 20 } ``` ### Usage Example with jq ```bash # Pipe to jq to extract just product IDs and titles appie-extra previously-bought 100 0 | jq '.products[] | {id, title}' ``` ``` -------------------------------- ### bonusbox [next|YYYY-MM-DD] Source: https://context7.com/aaearon/appie-extra/llms.txt Shows personal Bonus Box offers for the current week, next week, or a specified date. ```APIDOC ## bonusbox [next|YYYY-MM-DD] — Show personal Bonus Box offers ### Description Fetches personalised Bonus Box offers from the REST endpoint `GET /mobile-services/bonuspage/v1/personal?bonusStartDate=YYYY-MM-DD`. Defaults to the current week (most recent Sunday). Pass `next` for next week, or an explicit `YYYY-MM-DD` date for any week. ### Method GET ### Endpoint /bonusbox ### Parameters #### Query Parameters - **date** (string) - Optional. Specifies the start date for the bonus box offers (YYYY-MM-DD). Defaults to the current week's Sunday. Use 'next' for the following week. ### Request Example ```bash # Current week's personal bonus box appie-extra bonusbox # Next week's bonus box appie-extra bonusbox next # Specific week starting on a Sunday appie-extra bonusbox 2025-06-01 # Extract discount titles appie-extra bonusbox | jq '.lanes[].title' ``` ### Response #### Success Response (200) - **lanes** (array) - Contains bonus box offers organized into lanes. - **title** (string) - The title of a lane, often containing discount information. #### Response Example ```json { "lanes": [ { "title": "Bonus Box aanbieding 1", "offers": [...] }, { "title": "Bonus Box aanbieding 2", "offers": [...] } ] } ``` ``` -------------------------------- ### Show Member Profile Source: https://github.com/aaearon/appie-extra/blob/main/README.md Execute the 'member' command to display your Albert Heijn member profile and segmentation data. ```bash appie-extra member ``` -------------------------------- ### delivery-slots Source: https://context7.com/aaearon/appie-extra/llms.txt Queries the AH GraphQL `orderDeliverySlots` query for available home delivery windows at the configured address. Requires `~/grocery-assistant/ah/config.json` to contain a `delivery_address` object. ```APIDOC ## delivery-slots ### Description Queries the AH GraphQL `orderDeliverySlots` query for available home delivery windows at the configured address. Requires `~/grocery-assistant/ah/config.json` to contain a `delivery_address` object. ### Method GET ### Endpoint /delivery-slots ### Parameters #### Request Body - **delivery_address** (object) - Required - The delivery address details. - **city** (string) - Required - The city of the delivery address. - **country_code** (string) - Required - The country code (e.g., "NL"). - **house_number** (integer) - Required - The house number. - **postal_code** (string) - Required - The postal code. - **street** (string) - Required - The street name. ### Request Example ```bash appie-extra delivery-slots ``` ### Response #### Success Response (200) - **orderDeliverySlots** (array) - An array of available delivery slots. - **date** (string) - The date of the delivery slot. - **isFullyBooked** (boolean) - Indicates if the slot is fully booked. - **slots** (array) - An array of time slots within the date. - **startTime** (string) - The start time of the slot. - **endTime** (string) - The end time of the slot. - **isFullyBooked** (boolean) - Indicates if the slot is fully booked. - **serviceCharge** (object) - Details about the service charge. - **defaultPrice** (object) - The default price of the service charge. - **amount** (integer) - The amount in cents. - **price** (object) - The current price of the service charge. - **amount** (integer) - The amount in cents. - **nudgeType** (string) - Type of nudge for the slot (e.g., "GREEN", "RED"). #### Response Example ```json { "orderDeliverySlots": [ { "date": "2025-06-10", "isFullyBooked": false, "slots": [ { "startTime": "08:00", "endTime": "10:00", "isFullyBooked": false, "serviceCharge": { "defaultPrice": { "amount": 599 }, "price": { "amount": 0 } }, "nudgeType": "GREEN" }, { "startTime": "18:00", "endTime": "20:00", "isFullyBooked": true, "serviceCharge": { "defaultPrice": { "amount": 599 }, "price": { "amount": 599 } }, "nudgeType": "RED" } ] } ] } ``` ``` -------------------------------- ### GraphQL Query for Brabantia Stamp Balance Source: https://github.com/aaearon/appie-extra/blob/main/README.md The 'loyaltyPointsBalances' GraphQL query, filtered by programIds [217], returns the current stamp balance for the Brabantia program. ```graphql loyaltyPointsBalances(programIds: [217]) ``` -------------------------------- ### basket Source: https://context7.com/aaearon/appie-extra/llms.txt Fetches the current `winkelmandje` (basket) contents via GraphQL, returning items in the active order and items still in the list, with product IDs, titles, unit sizes, and quantities. ```APIDOC ## basket ### Description Fetches the current `winkelmandje` (basket) contents via GraphQL, returning items in the active order and items still in the list, with product IDs, titles, unit sizes, and quantities. ### Method GET ### Endpoint /basket ### Request Example ```bash appie-extra basket ``` ### Response #### Success Response (200) - **basket** (object) - The contents of the basket. - **canChangeDelivery** (boolean) - Indicates if delivery can be changed. - **itemsInOrder** (array) - Items currently in the order. - **product** (object) - Product details. - **id** (integer) - The product ID. - **title** (string) - The product title. - **salesUnitSize** (string) - The sales unit size (e.g., "1L"). - **quantity** (integer) - The quantity of the product. - **itemsInList** (array) - Items saved in the list. - **product** (object) - Product details. - **id** (integer) - The product ID. - **title** (string) - The product title. - **salesUnitSize** (string) - The sales unit size (e.g., "1L"). - **quantity** (integer) - The quantity of the product. #### Response Example ```json { "basket": { "canChangeDelivery": true, "itemsInOrder": [ { "product": { "id": 988595, "title": "AH Melk halfvol", "salesUnitSize": "1L" }, "quantity": 2 } ], "itemsInList": [ { "product": { "id": 119600, "title": "Oatly Havermelk", "salesUnitSize": "1L" }, "quantity": 1 } ] } } ``` ``` -------------------------------- ### member Source: https://context7.com/aaearon/appie-extra/llms.txt Shows the authenticated member's profile and personalization/segmentation data. This is useful for verifying authentication and retrieving account metadata. ```APIDOC ## member ### Description Fetches the authenticated member's profile and personalisation/segmentation data from the AH API via `client.GetMember`. Useful for verifying authentication and retrieving account metadata. ### Method CLI Command ### Endpoint N/A (CLI Command) ### Parameters None ### Request Example ```bash appie-extra member ``` ### Response #### Success Response (JSON) - **id** (integer) - The member's unique identifier. - **firstName** (string) - The member's first name. - **lastName** (string) - The member's last name. - **email** (string) - The member's email address. - **segmentation** (object) - Contains segmentation data (details not specified). #### Response Example ```json { "id": 12345678, "firstName": "Jan", "lastName": "de Vries", "email": "jan@example.nl", "segmentation": { ... } } ``` ``` -------------------------------- ### Remove product from basket Source: https://context7.com/aaearon/appie-extra/llms.txt Removes a product from the AH basket by setting its quantity to 0 using the `basketItemsUpdate` mutation. Use the `appie-extra basket-remove` command. ```bash appie-extra basket-remove 119600 ``` -------------------------------- ### fulfillments Source: https://context7.com/aaearon/appie-extra/llms.txt Lists all upcoming scheduled deliveries for the account. ```APIDOC ## fulfillments — Show scheduled deliveries ### Description Lists all upcoming scheduled deliveries for the account via `client.GetFulfillments`. Returns delivery windows, status, and associated order information. ### Method GET ### Endpoint /fulfillments ### Request Example ```bash appie-extra fulfillments # Check if any delivery is scheduled today appie-extra fulfillments | jq --arg today "$(date -u +%Y-%m-%d)" '.fulfillments[] | select(.deliveryWindow.start | startswith($today))' ``` ### Response #### Success Response (200) - **fulfillments** (array) - A list of scheduled deliveries. - **id** (string) - The ID of the fulfillment/order. - **deliveryWindow** (object) - The time window for the delivery. - **start** (string) - The start date and time of the delivery window (ISO 8601 format). - **end** (string) - The end date and time of the delivery window (ISO 8601 format). - **status** (string) - The current status of the delivery (e.g., "CONFIRMED"). - **total** (integer) - The total number of upcoming fulfillments. #### Response Example ```json { "fulfillments": [ { "id": "ord_987654", "deliveryWindow": { "start": "2025-06-10T14:00:00Z", "end": "2025-06-10T16:00:00Z" }, "status": "CONFIRMED" } ], "total": 1 } ``` ``` -------------------------------- ### Show Brabantia Savings Stamps Source: https://github.com/aaearon/appie-extra/blob/main/README.md Check the status and stamp balance for the Brabantia spaaractie (savings promotion) with the 'brabantia' command. ```bash appie-extra brabantia ``` -------------------------------- ### GraphQL Query for Koopzegels Balance Source: https://github.com/aaearon/appie-extra/blob/main/README.md The 'purchaseStampBalance' GraphQL query retrieves details about stamp balances, booklets, and savings goals for Koopzegels. ```graphql purchaseStampBalance ``` -------------------------------- ### clear-order Source: https://context7.com/aaearon/appie-extra/llms.txt Empties the current active order. ```APIDOC ## clear-order — Empty the active order ### Description Removes all items from the current active order via `client.ClearOrder`. This is a destructive, irreversible operation. ### Method DELETE ### Endpoint /orders/clear ### Request Example ```bash appie-extra clear-order ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **action** (string) - A message describing the action performed, e.g., "order cleared". #### Response Example ```json { "ok": true, "action": "order cleared" } ``` ``` -------------------------------- ### koopzegels Source: https://context7.com/aaearon/appie-extra/llms.txt Shows the koopzegels (purchase stamps) balance and savings goal. ```APIDOC ## koopzegels — Show koopzegels stamp balance ### Description Queries the AH GraphQL `purchaseStampBalance` and `purchaseStampSavingGoal` to return the full koopzegels (purchase stamps) status: current booklet progress, total stamps, money invested, interest earned, payout amount, and savings goal. ### Method GET ### Endpoint /koopzegels ### Request Example ```bash appie-extra koopzegels ``` ### Response #### Success Response (200) - **balance** (object) - Information about the current stamp balance. - **savingGoal** (object) - Information about the savings goal. #### Response Example ```json { "balance": { "currentStamps": 100, "totalStamps": 150, "moneyInvested": 5000, "interestEarned": 500, "payoutAmount": 5500 }, "savingGoal": { "targetAmount": 10000, "progress": "55%" } } ``` ``` -------------------------------- ### Empty the active order Source: https://context7.com/aaearon/appie-extra/llms.txt Removes all items from the current active order. This action is irreversible. ```bash appie-extra clear-order ``` -------------------------------- ### basket-remove Source: https://context7.com/aaearon/appie-extra/llms.txt Removes a product from the AH basket by setting its quantity to 0 via the GraphQL `basketItemsUpdate` mutation. ```APIDOC ## basket-remove ### Description Removes a product from the AH basket by setting its quantity to 0 via the GraphQL `basketItemsUpdate` mutation. ### Method DELETE ### Endpoint /basket-remove/{product-id} ### Parameters #### Path Parameters - **product-id** (integer) - Required - The ID of the product to remove. ### Request Example ```bash appie-extra basket-remove 119600 ``` ### Response #### Success Response (200) - **ok** (boolean) - Indicates if the operation was successful. - **action** (string) - The action performed (e.g., "removed"). - **productId** (integer) - The ID of the product. #### Response Example ```json { "ok": true, "action": "removed", "productId": 119600 } ``` ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.