class AuthApiPaths { static const login = '/auth/login'; } class ProductApiPaths { static const list = '/products'; static const mine = '/products/mine'; static const createPrivate = '/products/private'; static const pending = '/products/pending'; static const aiCategorizeBulk = '/products/ai-categorize-bulk'; static const deleted = '/products/deleted'; static const merge = '/products/merge'; static String mergePreview(int sourceProductId, int targetProductId) => '/products/merge-preview?sourceProductId=$sourceProductId&targetProductId=$targetProductId'; static String setStatus(int id) => '/products/$id/status'; static String update(int id) => '/products/$id'; static String remove(int id) => '/products/$id'; static String restore(int id) => '/products/$id/restore'; static const bulkUpdate = '/products/bulk-update'; } class AiApiPaths { static const models = '/ai/models'; } class CategoryApiPaths { static const tree = '/categories/tree'; } class ReceiptImportApiPaths { static const refreshCategories = '/receipt-import/refresh-categories'; } class ReceiptAliasApiPaths { static const list = '/receipt-aliases'; static String remove(int id) => '/receipt-aliases/$id'; } class RecipeApiPaths { static const list = '/recipes'; static String detail(int id) => '/recipes/$id'; static String update(int id) => '/recipes/$id'; static String remove(int id) => '/recipes/$id'; static String setVisibility(int id) => '/recipes/$id/visibility'; static String share(int id) => '/recipes/$id/share'; static String unshare(int id, String username) => '/recipes/$id/share/${Uri.encodeComponent(username)}'; static String inventoryPreview(int id) => '/recipes/$id/inventory-preview'; static const parseMarkdown = '/recipes/parse-markdown'; static const aiSuggestions = '/recipes/ai-suggestions'; } class InventoryApiPaths { static const list = '/inventory'; static String update(int id) => '/inventory/$id'; static String remove(int id) => '/inventory/$id'; static String consume(int id) => '/inventory/$id/consume'; static String consumptionHistory(int id) => '/inventory/$id/consumption-history'; } class PantryApiPaths { static const list = '/pantry'; static String remove(int id) => '/pantry/$id'; } class UserApiPaths { static const me = '/users/me'; static const list = '/users'; static String setRole(int id) => '/users/$id/role'; static String setPremium(int id) => '/users/$id/premium'; static String setRecipeSharing(int id) => '/users/$id/recipe-sharing'; static String updateEmail(int id) => '/users/$id/email'; static String delete(int id) => '/users/$id'; static String resetPassword(int id) => '/users/$id/reset-password'; } class MealPlanApiPaths { static const list = '/meal-plan'; static String listByRange(String from, String to) => '$list?from=${Uri.encodeQueryComponent(from)}&to=${Uri.encodeQueryComponent(to)}'; static String shoppingList(String from, String to) => '$list/shopping-list?from=${Uri.encodeQueryComponent(from)}&to=${Uri.encodeQueryComponent(to)}'; static String inventoryCompare(String from, String to) => '$list/inventory-compare?from=${Uri.encodeQueryComponent(from)}&to=${Uri.encodeQueryComponent(to)}'; static String removeByDate(String date) => '$list/${Uri.encodeComponent(date)}'; }