Issue with Creating Recipes - Uncertain if code work
igormages opened this issue · 9 comments
I am writing to report an issue I am facing when trying to create recipes. I am currently in the process of determining whether the code has ever worked or if this issue has been persistent. Here is a more detailed description of the situation:
Symptoms:
When attempting to create a new recipe, nothing happens.
I do not receive any specific error message, making troubleshooting more challenging.
I tried with the example code as well.
Steps Taken So Far:
I managed to create items, not recipes
If you require further information, please do not hesitate to contact me.
Thank you in advance for your help.
It definitely don't works. I got a empty response from the request. I made some changes and I get this response :
recipe-data-timestamp ��R;U�A recipe-data-timestamp ��R;U�A
But the recipe isn't created...
I don't know why ?
@codetheweb @kevdliu @ajorpheus @brianespinoza have you the same issue ?
hi @igormages , I noticed the same issue. It's possible Anylist's proto definitions may have changed. That's at least my leading suspicion given #40 .
I haven't used this package since implementing recipe support months ago so it's expected Anylist may have updated their API since.
I'm experiencing the same problem. I tried updating the protobuf schema by extracting it from the web interface. I was able to generate a schema that appears valid, but the same result occurs - a silent fail with no change in the webui.
Here's the code I used to generate the schema, after pausing the debugger in the UI at a place with access to the $type object
Console Code
window.generateProtoSchema = (u) => {
let rule = "optional"; if(u.required) rule="required"; if(u.repeated) rule="repeated";
return {
rule,
type: u.resolvedType ? u.resolvedType.name : u.type.name,
name: u.name,
id: u.id
}
}
window.findSchemas = (u) => {
if(u._fields) {
let s = {
name: u.name,
fields: u._fields.map(window.generateProtoSchema)
}
if(u.clazz) {
let enumList = []
for(let eKey in u.clazz){
if(eKey.startsWith('encode') || eKey.startsWith('decode')) continue;
let e = {name: eKey, values: []}
let i = 0
for(let key in u.clazz[eKey]) {
e['values'].push({name: key, id: i})
i++;
}
if(e.values.length > 0) enumList.push(e)
}
s.enums = enumList
}
schema.push(s)
}
if(u.children) u.children.forEach(c => findSchemas(c))
}
schema=[];findSchemas(this.$type.parent);schema
edit: note that the attached definitions file contains all available definitions in the UI, not just the definitions that existed previously - so the diff between the two is giant.
Any suggestions for how to debug this further?
I also tried, and the same I got an empty return. No error, but nothing is created. For my part, I don't understand this type of data sending, which prevents me from debugging or coding a solution.
Do you have any idea of the name of this type of data exchange? What is the data exchanged via anylist API?
@igormages I believe it is ProtoBuf
It may be a bit easier to dump the full schema by searching in the bundled code for PROTO_BUILDER
and copying out the schema:
Schema
{
"package": "pcov.proto",
messages: [ {
name: "User",
fields: [ {
rule: "required",
type: "string",
name: "id",
id: 1
}, {
rule: "optional",
type: "string",
name: "email",
id: 3
}, {
rule: "optional",
type: "int64",
name: "created",
id: 7
}, {
rule: "optional",
type: "string",
name: "firstName",
id: 15
}, {
rule: "optional",
type: "string",
name: "lastName",
id: 16
}, {
rule: "optional",
type: "bool",
name: "isPremiumUser",
id: 37
}, {
rule: "repeated",
type: "string",
name: "pushTokens",
id: 24
}, {
rule: "repeated",
type: "string",
name: "fcmTokens",
id: 42
}, {
rule: "optional",
type: "bool",
name: "hasMigratedUserFavorites",
id: 36
}, {
rule: "optional",
type: "string",
name: "recipeDataId",
id: 35
}, {
rule: "optional",
type: "string",
name: "listDataId",
id: 38
}, {
rule: "optional",
type: "string",
name: "facebookUserId",
id: 39
}, {
rule: "optional",
type: "string",
name: "icalendarId",
id: 43
}, {
rule: "optional",
type: "int32",
name: "freeRecipeImportsRemainingCount",
id: 40
}, {
rule: "optional",
type: "string",
name: "otpSecret",
id: 41
}, {
rule: "repeated",
type: "string",
name: "orderedStarterListIds",
id: 33
}, {
rule: "optional",
type: "double",
name: "orderedStarterListIdsTimestamp",
id: 34
}, {
rule: "optional",
type: "bool",
name: "notify",
id: 6
}, {
rule: "optional",
type: "double",
name: "savedRecipesTimestamp",
id: 25
}, {
rule: "optional",
type: "double",
name: "listSettingsTimestamp",
id: 28
}, {
rule: "optional",
type: "double",
name: "listSettingsRequireRefreshTimestamp",
id: 29
}, {
rule: "optional",
type: "double",
name: "starterListSettingsTimestamp",
id: 30
}, {
rule: "optional",
type: "double",
name: "starterListSettingsRequireRefreshTimestamp",
id: 31
}, {
rule: "optional",
type: "double",
name: "orderedShoppingListIdsTimestamp",
id: 32
}, {
rule: "repeated",
type: "string",
name: "shoppingListIds",
id: 23
}, {
rule: "optional",
type: "double",
name: "categorizedItemsTimestamp",
id: 26
}, {
rule: "optional",
type: "double",
name: "categorizedItemsRequireRefreshTimestamp",
id: 27
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDStarred",
id: 2
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDSavedSearches",
id: 4
}, {
rule: "optional",
type: "bytes",
name: "DEPRECATEDList",
id: 5
}, {
rule: "optional",
type: "bool",
name: "DEPRECATEDWelcomed",
id: 8
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDNotifyProducts",
id: 9
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDNotifyTagNames",
id: 10
}, {
rule: "optional",
type: "bytes",
name: "DEPRECATEDLocation",
id: 11
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDPreferredChainIds",
id: 12
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDFavoriteTags",
id: 13
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDHiddenTags",
id: 14
}, {
rule: "optional",
type: "string",
name: "DEPRECATEDReferrer",
id: 17
}, {
rule: "optional",
type: "string",
name: "DEPRECATEDInviteCode",
id: 18
}, {
rule: "optional",
type: "string",
name: "DEPRECATEDHttpReferrer",
id: 19
}, {
rule: "optional",
type: "int64",
name: "DEPRECATEDWeeklyDealsEmailCount",
id: 20
}, {
rule: "repeated",
type: "string",
name: "DEPRECATEDPreferredStoreIds",
id: 21
}, {
rule: "optional",
type: "double",
name: "DEPRECATEDFavoriteProductsTimestamp",
id: 22
} ]
}, {
name: "Tag",
fields: [ {
rule: "required",
type: "string",
name: "name",
id: 1
}, {
rule: "optional",
type: "string",
name: "displayName",
id: 7
}, {
rule: "optional",
type: "string",
name: "imageName",
id: 8
}, {
rule: "repeated",
type: "string",
name: "impliedTagNames",
id: 6
}, {
rule: "repeated",
type: "string",
name: "searchTerms",
id: 3
}, {
rule: "repeated",
type: "string",
name: "productIds",
id: 2
}, {
rule: "optional",
type: "bytes",
name: "priceStats",
id: 4
}, {
rule: "optional",
type: "TagType",
name: "tagType",
id: 5
} ],
enums: [ {
name: "TagType",
values: [ {
name: "TAG_TYPE_GENERIC",
id: 0
}, {
name: "TAG_TYPE_PRODUCT",
id: 1
}, {
name: "TAG_TYPE_CATEGORY",
id: 2
}, {
name: "TAG_TYPE_ATTRIBUTE",
id: 3
} ]
} ]
}, {
name: "PBDeletedUserInfo",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "double",
name: "deletionTimestamp",
id: 3
}, {
rule: "optional",
type: "string",
name: "userEmail",
id: 4
}, {
rule: "optional",
type: "string",
name: "adminEmail",
id: 5
}, {
rule: "optional",
type: "string",
name: "adminNote",
id: 6
}, {
rule: "optional",
type: "string",
name: "supportTicketUrl",
id: 7
}, {
rule: "optional",
type: "string",
name: "ipAddress",
id: 8
} ]
}, {
name: "PBIcon",
fields: [ {
rule: "optional",
type: "string",
name: "iconName",
id: 1
}, {
rule: "optional",
type: "string",
name: "tintHexColor",
id: 2
} ]
}, {
name: "PBUserListData",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "repeated",
type: "string",
name: "userIds",
id: 3
}, {
rule: "optional",
type: "double",
name: "userIdsTimestamp",
id: 4
}, {
rule: "repeated",
type: "string",
name: "listIds",
id: 5
}, {
rule: "optional",
type: "double",
name: "listIdsTimestamp",
id: 6
}, {
rule: "optional",
type: "string",
name: "rootFolderId",
id: 7
}, {
rule: "optional",
type: "double",
name: "rootFolderIdTimestamp",
id: 8
}, {
rule: "optional",
type: "double",
name: "categorizedItemsTimestamp",
id: 9
}, {
rule: "optional",
type: "double",
name: "categorizedItemsRequireRefreshTimestamp",
id: 10
}, {
rule: "optional",
type: "bool",
name: "hasMigratedListOrdering",
id: 11
} ]
}, {
name: "ShoppingList",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "repeated",
type: "ListItem",
name: "items",
id: 4
}, {
rule: "optional",
type: "string",
name: "creator",
id: 5
}, {
rule: "repeated",
type: "string",
name: "UNUSEDATTRIBUTE",
id: 6
}, {
rule: "repeated",
type: "PBEmailUserIDPair",
name: "sharedUsers",
id: 7
}, {
rule: "optional",
type: "string",
name: "password",
id: 8
}, {
rule: "repeated",
type: "PBNotificationLocation",
name: "notificationLocations",
id: 9
}, {
rule: "optional",
type: "uint64",
name: "logicalClockTime",
id: 10
}, {
rule: "optional",
type: "string",
name: "builtInAlexaListType",
id: 11
}, {
rule: "optional",
type: "bool",
name: "allowsMultipleListCategoryGroups",
id: 16
}, {
rule: "optional",
type: "int32",
name: "listItemSortOrder",
id: 17
}, {
rule: "optional",
type: "int32",
name: "newListItemPosition",
id: 18
} ],
enums: [ {
name: "ListItemSortOrder",
values: [ {
name: "Manual",
id: 0
}, {
name: "Alphabetical",
id: 1
} ]
}, {
name: "NewListItemPosition",
values: [ {
name: "Bottom",
id: 0
}, {
name: "Top",
id: 1
} ]
} ]
}, {
name: "PBItemQuantity",
fields: [ {
rule: "optional",
type: "string",
name: "amount",
id: 1
}, {
rule: "optional",
type: "string",
name: "unit",
id: 2
}, {
rule: "optional",
type: "string",
name: "rawQuantity",
id: 3
} ]
}, {
name: "PBItemPackageSize",
fields: [ {
rule: "optional",
type: "string",
name: "size",
id: 1
}, {
rule: "optional",
type: "string",
name: "unit",
id: 2
}, {
rule: "optional",
type: "string",
name: "packageType",
id: 3
}, {
rule: "optional",
type: "string",
name: "rawPackageSize",
id: 4
} ]
}, {
name: "PBItemQuantityAndPackageSize",
fields: [ {
rule: "optional",
type: "PBItemQuantity",
name: "quantityPb",
id: 1
}, {
rule: "optional",
type: "PBItemPackageSize",
name: "packageSizePb",
id: 2
} ]
}, {
name: "PBItemIngredient",
fields: [ {
rule: "optional",
type: "PBIngredient",
name: "ingredient",
id: 1
}, {
rule: "optional",
type: "PBItemQuantity",
name: "quantityPb",
id: 6
}, {
rule: "optional",
type: "PBItemPackageSize",
name: "packageSizePb",
id: 7
}, {
rule: "optional",
type: "string",
name: "recipeId",
id: 2
}, {
rule: "optional",
type: "string",
name: "eventId",
id: 3
}, {
rule: "optional",
type: "string",
name: "recipeName",
id: 4
}, {
rule: "optional",
type: "string",
name: "eventDate",
id: 5
} ]
}, {
name: "ListItem",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "serverModTime",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "optional",
type: "string",
name: "details",
id: 5
}, {
rule: "optional",
type: "bool",
name: "checked",
id: 6
}, {
rule: "optional",
type: "string",
name: "recipeId",
id: 7
}, {
rule: "optional",
type: "string",
name: "rawIngredient",
id: 8
}, {
rule: "optional",
type: "string",
name: "priceMatchupTag",
id: 9
}, {
rule: "optional",
type: "string",
name: "priceId",
id: 10
}, {
rule: "optional",
type: "string",
name: "category",
id: 11
}, {
rule: "optional",
type: "string",
name: "userId",
id: 12
}, {
rule: "optional",
type: "string",
name: "categoryMatchId",
id: 13
}, {
rule: "repeated",
type: "string",
name: "photoIds",
id: 14
}, {
rule: "optional",
type: "string",
name: "eventId",
id: 15
}, {
rule: "repeated",
type: "string",
name: "storeIds",
id: 16
}, {
rule: "repeated",
type: "PBItemPrice",
name: "prices",
id: 19
}, {
rule: "repeated",
type: "PBListItemCategoryAssignment",
name: "categoryAssignments",
id: 20
}, {
rule: "optional",
type: "PBItemQuantity",
name: "quantityPb",
id: 21
}, {
rule: "optional",
type: "PBItemQuantity",
name: "priceQuantityPb",
id: 22
}, {
rule: "optional",
type: "bool",
name: "priceQuantityShouldOverrideItemQuantity",
id: 23
}, {
rule: "optional",
type: "PBItemPackageSize",
name: "packageSizePb",
id: 24
}, {
rule: "optional",
type: "PBItemPackageSize",
name: "pricePackageSizePb",
id: 25
}, {
rule: "optional",
type: "bool",
name: "pricePackageSizeShouldOverrideItemPackageSize",
id: 26
}, {
rule: "repeated",
type: "PBItemIngredient",
name: "ingredients",
id: 27
}, {
rule: "optional",
type: "bool",
name: "itemQuantityShouldOverrideIngredientQuantity",
id: 28
}, {
rule: "optional",
type: "bool",
name: "itemPackageSizeShouldOverrideIngredientPackageSize",
id: 29
}, {
rule: "optional",
type: "int32",
name: "manualSortIndex",
id: 17
}, {
rule: "optional",
type: "string",
name: "deprecatedQuantity",
id: 18
} ]
}, {
name: "PBItemPrice",
fields: [ {
rule: "optional",
type: "double",
name: "amount",
id: 2
}, {
rule: "optional",
type: "string",
name: "details",
id: 3
}, {
rule: "optional",
type: "string",
name: "storeId",
id: 4
}, {
rule: "optional",
type: "string",
name: "date",
id: 5
} ]
}, {
name: "PBListFolderItem",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "int32",
name: "itemType",
id: 2
} ],
enums: [ {
name: "ItemType",
values: [ {
name: "ListType",
id: 0
}, {
name: "FolderType",
id: 1
} ]
} ]
}, {
name: "PBListFolderSettings",
fields: [ {
rule: "optional",
type: "int32",
name: "listsSortOrder",
id: 1
}, {
rule: "optional",
type: "int32",
name: "folderSortPosition",
id: 2
}, {
rule: "optional",
type: "string",
name: "folderHexColor",
id: 3
}, {
rule: "optional",
type: "PBIcon",
name: "icon",
id: 4
} ],
enums: [ {
name: "SortOrder",
values: [ {
name: "ManualSortOrder",
id: 0
}, {
name: "AlphabeticalSortOrder",
id: 1
} ]
}, {
name: "FolderSortPosition",
values: [ {
name: "FolderSortPositionAfterLists",
id: 0
}, {
name: "FolderSortPositionBeforeLists",
id: 1
}, {
name: "FolderSortPositionWithLists",
id: 2
} ]
} ]
}, {
name: "PBListFolder",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "repeated",
type: "PBListFolderItem",
name: "items",
id: 4
}, {
rule: "optional",
type: "PBListFolderSettings",
name: "folderSettings",
id: 5
} ]
}, {
name: "PBShoppingListArchive",
fields: [ {
rule: "optional",
type: "ShoppingList",
name: "shoppingList",
id: 1
}, {
rule: "optional",
type: "PBListSettings",
name: "listSettings",
id: 2
}, {
rule: "repeated",
type: "PBListCategoryGroup",
name: "listCategoryGroups",
id: 3
}, {
rule: "repeated",
type: "PBStore",
name: "stores",
id: 4
}, {
rule: "repeated",
type: "PBStoreFilter",
name: "storeFilters",
id: 5
}, {
rule: "repeated",
type: "PBListCategorizationRule",
name: "categorizationRules",
id: 6
}, {
rule: "optional",
type: "StarterList",
name: "favoriteItems",
id: 7
}, {
rule: "optional",
type: "StarterList",
name: "recentItems",
id: 8
} ]
}, {
name: "PBListFolderItemArchive",
fields: [ {
rule: "optional",
type: "PBShoppingListArchive",
name: "listArchive",
id: 1
}, {
rule: "optional",
type: "PBListFolderArchive",
name: "folderArchive",
id: 2
} ]
}, {
name: "PBListFolderArchive",
fields: [ {
rule: "optional",
type: "string",
name: "name",
id: 1
}, {
rule: "optional",
type: "PBListFolderSettings",
name: "folderSettings",
id: 2
}, {
rule: "repeated",
type: "PBListFolderItemArchive",
name: "items",
id: 3
} ]
}, {
name: "PBListFoldersResponse",
fields: [ {
rule: "optional",
type: "string",
name: "listDataId",
id: 1
}, {
rule: "optional",
type: "string",
name: "rootFolderId",
id: 2
}, {
rule: "optional",
type: "bool",
name: "includesAllFolders",
id: 3
}, {
rule: "repeated",
type: "PBListFolder",
name: "listFolders",
id: 4
}, {
rule: "repeated",
type: "string",
name: "deletedFolderIds",
id: 5
}, {
rule: "optional",
type: "bool",
name: "hasMigratedListOrdering",
id: 6
} ]
}, {
name: "PBListFolderTimestamps",
fields: [ {
rule: "optional",
type: "string",
name: "rootFolderId",
id: 1
}, {
rule: "repeated",
type: "PBTimestamp",
name: "folderTimestamps",
id: 2
} ]
}, {
name: "PBListCategoryGroupResponse",
fields: [ {
rule: "optional",
type: "PBListCategoryGroup",
name: "categoryGroup",
id: 1
}, {
rule: "repeated",
type: "string",
name: "deletedCategoryIds",
id: 2
} ]
}, {
name: "ShoppingListsResponse",
fields: [ {
rule: "repeated",
type: "ShoppingList",
name: "newLists",
id: 1
}, {
rule: "repeated",
type: "ShoppingList",
name: "modifiedLists",
id: 2
}, {
rule: "repeated",
type: "string",
name: "unmodifiedIds",
id: 3
}, {
rule: "repeated",
type: "string",
name: "unknownIds",
id: 4
}, {
rule: "repeated",
type: "string",
name: "orderedIds",
id: 5
}, {
rule: "repeated",
type: "PBListResponse",
name: "listResponses",
id: 6
} ]
}, {
name: "PBListResponse",
fields: [ {
rule: "optional",
type: "string",
name: "listId",
id: 1
}, {
rule: "optional",
type: "bool",
name: "isFullSync",
id: 2
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 3
}, {
rule: "repeated",
type: "PBListCategoryGroupResponse",
name: "categoryGroupResponses",
id: 7
}, {
rule: "repeated",
type: "string",
name: "deletedCategoryGroupIds",
id: 8
}, {
rule: "repeated",
type: "PBListCategorizationRule",
name: "categorizationRules",
id: 13
}, {
rule: "repeated",
type: "string",
name: "deletedCategorizationRuleIds",
id: 14
}, {
rule: "repeated",
type: "PBStore",
name: "stores",
id: 9
}, {
rule: "repeated",
type: "string",
name: "deletedStoreIds",
id: 10
}, {
rule: "repeated",
type: "PBStoreFilter",
name: "storeFilters",
id: 11
}, {
rule: "repeated",
type: "string",
name: "deletedStoreFilterIds",
id: 12
} ]
}, {
name: "StarterList",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "repeated",
type: "ListItem",
name: "items",
id: 4
}, {
rule: "optional",
type: "string",
name: "userId",
id: 5
}, {
rule: "optional",
type: "string",
name: "listId",
id: 6
}, {
rule: "optional",
type: "int32",
name: "starterListType",
id: 7
} ],
enums: [ {
name: "Type",
values: [ {
name: "UserType",
id: 0
}, {
name: "RecentItemsType",
id: 1
}, {
name: "FavoriteItemsType",
id: 2
} ]
} ]
}, {
name: "StarterListResponse",
fields: [ {
rule: "optional",
type: "StarterList",
name: "starterList",
id: 1
} ]
}, {
name: "StarterListBatchResponse",
fields: [ {
rule: "repeated",
type: "StarterListResponse",
name: "listResponses",
id: 1
}, {
rule: "optional",
type: "bool",
name: "includesAllLists",
id: 2
}, {
rule: "repeated",
type: "string",
name: "unknownListIds",
id: 3
} ]
}, {
name: "StarterListsResponseV2",
fields: [ {
rule: "optional",
type: "StarterListBatchResponse",
name: "userListsResponse",
id: 1
}, {
rule: "optional",
type: "StarterListBatchResponse",
name: "recentItemListsResponse",
id: 2
}, {
rule: "optional",
type: "StarterListBatchResponse",
name: "favoriteItemListsResponse",
id: 3
}, {
rule: "optional",
type: "bool",
name: "hasMigratedUserFavorites",
id: 4
} ]
}, {
name: "StarterListsResponse",
fields: [ {
rule: "repeated",
type: "StarterList",
name: "newLists",
id: 1
}, {
rule: "repeated",
type: "StarterList",
name: "modifiedLists",
id: 2
}, {
rule: "repeated",
type: "string",
name: "unmodifiedIds",
id: 3
}, {
rule: "repeated",
type: "string",
name: "unknownIds",
id: 4
}, {
rule: "repeated",
type: "string",
name: "orderedIds",
id: 5
} ]
}, {
name: "PBStore",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "optional",
type: "int32",
name: "sortIndex",
id: 5
} ]
}, {
name: "PBStoreFilter",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "repeated",
type: "string",
name: "storeIds",
id: 5
}, {
rule: "optional",
type: "bool",
name: "includesUnassignedItems",
id: 6
}, {
rule: "optional",
type: "int32",
name: "sortIndex",
id: 7
}, {
rule: "optional",
type: "string",
name: "listCategoryGroupId",
id: 8
}, {
rule: "optional",
type: "bool",
name: "showsAllItems",
id: 9
} ]
}, {
name: "PBListCategory",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "categoryGroupId",
id: 3
}, {
rule: "optional",
type: "string",
name: "listId",
id: 4
}, {
rule: "optional",
type: "string",
name: "name",
id: 5
}, {
rule: "optional",
type: "string",
name: "icon",
id: 6
}, {
rule: "optional",
type: "string",
name: "systemCategory",
id: 7
}, {
rule: "optional",
type: "int32",
name: "sortIndex",
id: 9
} ]
}, {
name: "PBListCategoryGroup",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "repeated",
type: "PBListCategory",
name: "categories",
id: 5
}, {
rule: "optional",
type: "string",
name: "defaultCategoryId",
id: 8
}, {
rule: "optional",
type: "uint64",
name: "categoriesLogicalTimestamp",
id: 6
}, {
rule: "optional",
type: "uint64",
name: "deletedCategoriesLogicalTimestamp",
id: 7
} ]
}, {
name: "PBListCategorizationRule",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "string",
name: "categoryGroupId",
id: 4
}, {
rule: "optional",
type: "string",
name: "itemName",
id: 5
}, {
rule: "optional",
type: "string",
name: "categoryId",
id: 6
} ]
}, {
name: "PBListCategorizationRuleList",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "repeated",
type: "PBListCategorizationRule",
name: "categorizationRules",
id: 4
}, {
rule: "optional",
type: "uint64",
name: "categorizationRulesLogicalTimestamp",
id: 5
}, {
rule: "optional",
type: "uint64",
name: "deletedCategorizationRulesLogicalTimestamp",
id: 6
} ]
}, {
name: "PBListItemCategoryAssignment",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "categoryGroupId",
id: 2
}, {
rule: "optional",
type: "string",
name: "categoryId",
id: 3
} ]
}, {
name: "PBRecipe",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "optional",
type: "string",
name: "icon",
id: 4
}, {
rule: "optional",
type: "string",
name: "note",
id: 5
}, {
rule: "optional",
type: "string",
name: "sourceName",
id: 6
}, {
rule: "optional",
type: "string",
name: "sourceUrl",
id: 7
}, {
rule: "repeated",
type: "PBIngredient",
name: "ingredients",
id: 8
}, {
rule: "repeated",
type: "string",
name: "preparationSteps",
id: 9
}, {
rule: "repeated",
type: "string",
name: "photoIds",
id: 11
}, {
rule: "optional",
type: "string",
name: "adCampaignId",
id: 12
}, {
rule: "repeated",
type: "string",
name: "photoUrls",
id: 13
}, {
rule: "optional",
type: "double",
name: "scaleFactor",
id: 14
}, {
rule: "optional",
type: "int32",
name: "rating",
id: 15
}, {
rule: "optional",
type: "double",
name: "creationTimestamp",
id: 16
}, {
rule: "optional",
type: "string",
name: "nutritionalInfo",
id: 17
}, {
rule: "optional",
type: "int32",
name: "cookTime",
id: 18
}, {
rule: "optional",
type: "int32",
name: "prepTime",
id: 19
}, {
rule: "optional",
type: "string",
name: "servings",
id: 20
}, {
rule: "optional",
type: "string",
name: "paprikaIdentifier",
id: 21
}, {
rule: "optional",
type: "string",
name: "recipeDataId",
id: 23
} ]
}, {
name: "PBRecipeCookingState",
fields: [ {
rule: "optional",
type: "string",
name: "recipeId",
id: 2
}, {
rule: "optional",
type: "string",
name: "eventId",
id: 3
}, {
rule: "optional",
type: "double",
name: "lastOpenedTimestamp",
id: 4
}, {
rule: "optional",
type: "int32",
name: "selectedTabId",
id: 5
}, {
rule: "repeated",
type: "string",
name: "checkedIngredientIds",
id: 6
}, {
rule: "optional",
type: "int32",
name: "selectedStepNumber",
id: 7
} ]
}, {
name: "PBXRecipe",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "name",
id: 2
}, {
rule: "optional",
type: "string",
name: "icon",
id: 3
}, {
rule: "optional",
type: "string",
name: "note",
id: 4
}, {
rule: "optional",
type: "string",
name: "sourceName",
id: 5
}, {
rule: "optional",
type: "string",
name: "sourceUrl",
id: 6
}, {
rule: "repeated",
type: "PBXIngredient",
name: "ingredients",
id: 7
}, {
rule: "repeated",
type: "string",
name: "preparationSteps",
id: 8
}, {
rule: "optional",
type: "bytes",
name: "photoBytes",
id: 9
}, {
rule: "optional",
type: "double",
name: "scaleFactor",
id: 10
}, {
rule: "optional",
type: "int32",
name: "rating",
id: 11
}, {
rule: "optional",
type: "double",
name: "creationTimestamp",
id: 12
}, {
rule: "optional",
type: "string",
name: "nutritionalInfo",
id: 13
}, {
rule: "optional",
type: "int32",
name: "cookTime",
id: 14
}, {
rule: "optional",
type: "int32",
name: "prepTime",
id: 15
}, {
rule: "optional",
type: "string",
name: "servings",
id: 16
} ]
}, {
name: "PBXRecipeArchive",
fields: [ {
rule: "repeated",
type: "PBXRecipe",
name: "recipes",
id: 1
} ]
}, {
name: "PBIngredient",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 6
}, {
rule: "optional",
type: "string",
name: "rawIngredient",
id: 1
}, {
rule: "optional",
type: "string",
name: "name",
id: 2
}, {
rule: "optional",
type: "string",
name: "quantity",
id: 3
}, {
rule: "optional",
type: "string",
name: "note",
id: 4
}, {
rule: "optional",
type: "bool",
name: "isHeading",
id: 7
} ]
}, {
name: "PBXIngredient",
fields: [ {
rule: "optional",
type: "string",
name: "rawIngredient",
id: 1
}, {
rule: "optional",
type: "string",
name: "name",
id: 2
}, {
rule: "optional",
type: "string",
name: "quantity",
id: 3
}, {
rule: "optional",
type: "string",
name: "note",
id: 4
}, {
rule: "optional",
type: "bool",
name: "isHeading",
id: 5
} ]
}, {
name: "PBRecipeCollectionSettings",
fields: [ {
rule: "optional",
type: "double",
name: "timestamp",
id: 5
}, {
rule: "optional",
type: "int32",
name: "recipesSortOrder",
id: 1
}, {
rule: "optional",
type: "bool",
name: "useReversedSortDirection",
id: 4
}, {
rule: "optional",
type: "int32",
name: "collectionsSortOrder",
id: 6
}, {
rule: "optional",
type: "bool",
name: "useReversedCollectionsSortDirection",
id: 7
}, {
rule: "optional",
type: "PBSmartFilter",
name: "smartFilter",
id: 3
}, {
rule: "optional",
type: "PBIcon",
name: "icon",
id: 8
}, {
rule: "optional",
type: "bool",
name: "showOnlyRecipesWithNoCollection",
id: 2
} ],
enums: [ {
name: "SortOrder",
values: [ {
name: "ManualSortOrder",
id: 0
}, {
name: "AlphabeticalSortOrder",
id: 1
}, {
name: "RatingSortOrder",
id: 2
}, {
name: "DateCreatedSortOrder",
id: 3
}, {
name: "PrepTimeSortOrder",
id: 4
}, {
name: "CookTimeSortOrder",
id: 5
}, {
name: "RecipeCountSortOrder",
id: 6
} ]
} ]
}, {
name: "PBRecipeCollection",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "repeated",
type: "string",
name: "recipeIds",
id: 4
}, {
rule: "optional",
type: "PBRecipeCollectionSettings",
name: "collectionSettings",
id: 5
} ]
}, {
name: "PBUserRecipeData",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "double",
name: "recipeCollectionsTimestamp",
id: 5
}, {
rule: "optional",
type: "double",
name: "recipeCollectionIdsTimestamp",
id: 6
}, {
rule: "optional",
type: "string",
name: "allRecipesId",
id: 7
}, {
rule: "repeated",
type: "string",
name: "recipeCollectionIds",
id: 8
}, {
rule: "repeated",
type: "string",
name: "userIds",
id: 9
}, {
rule: "optional",
type: "double",
name: "userIdsTimestamp",
id: 10
}, {
rule: "optional",
type: "bool",
name: "hasImportedPunchforkRecipes",
id: 11
}, {
rule: "optional",
type: "string",
name: "mealPlanningCalendarId",
id: 12
}, {
rule: "map",
type: "PBRecipeCollectionSettings",
keytype: "string",
name: "settingsMapForSystemCollections",
id: 14
}, {
rule: "optional",
type: "double",
name: "settingsMapForSystemCollectionsTimestamp",
id: 15
}, {
rule: "optional",
type: "int32",
name: "maxRecipeCount",
id: 13
}, {
rule: "optional",
type: "double",
name: "allRecipesTimestamp",
id: 4
}, {
rule: "optional",
type: "double",
name: "recipesTimestamp",
id: 3
} ]
}, {
name: "PBRecipeLinkRequest",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "requestingUserId",
id: 2
}, {
rule: "optional",
type: "string",
name: "requestingEmail",
id: 3
}, {
rule: "optional",
type: "string",
name: "requestingName",
id: 4
}, {
rule: "optional",
type: "string",
name: "confirmingUserId",
id: 5
}, {
rule: "optional",
type: "string",
name: "confirmingEmail",
id: 6
}, {
rule: "optional",
type: "string",
name: "confirmingName",
id: 7
} ]
}, {
name: "PBRecipeLinkRequestResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "PBRecipeDataResponse",
name: "recipeDataResponse",
id: 2
}, {
rule: "optional",
type: "string",
name: "errorTitle",
id: 3
}, {
rule: "optional",
type: "string",
name: "errorMessage",
id: 4
} ]
}, {
name: "PBRecipeDataResponse",
fields: [ {
rule: "optional",
type: "double",
name: "timestamp",
id: 1
}, {
rule: "optional",
type: "PBRecipeCollection",
name: "allRecipesCollection",
id: 2
}, {
rule: "repeated",
type: "PBRecipe",
name: "recipes",
id: 3
}, {
rule: "repeated",
type: "string",
name: "recipeCollectionIds",
id: 4
}, {
rule: "repeated",
type: "PBRecipeCollection",
name: "recipeCollections",
id: 5
}, {
rule: "repeated",
type: "PBRecipeLinkRequest",
name: "pendingRecipeLinkRequests",
id: 6
}, {
rule: "repeated",
type: "PBRecipeLinkRequest",
name: "recipeLinkRequestsToConfirm",
id: 7
}, {
rule: "repeated",
type: "PBEmailUserIDPair",
name: "linkedUsers",
id: 8
}, {
rule: "optional",
type: "string",
name: "recipeDataId",
id: 9
}, {
rule: "optional",
type: "bool",
name: "hasImportedPunchforkRecipes",
id: 10
}, {
rule: "optional",
type: "bool",
name: "includesRecipeCollectionIds",
id: 11
}, {
rule: "optional",
type: "int32",
name: "maxRecipeCount",
id: 12
}, {
rule: "map",
type: "PBRecipeCollectionSettings",
keytype: "string",
name: "settingsMapForSystemCollections",
id: 13
} ]
}, {
name: "PBRecipeOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "recipeDataId",
id: 2
}, {
rule: "optional",
type: "PBRecipe",
name: "recipe",
id: 3
}, {
rule: "optional",
type: "PBRecipeCollection",
name: "recipeCollection",
id: 4
}, {
rule: "optional",
type: "PBRecipeLinkRequest",
name: "recipeLinkRequest",
id: 5
}, {
rule: "repeated",
type: "string",
name: "recipeCollectionIds",
id: 6
}, {
rule: "repeated",
type: "PBRecipe",
name: "recipes",
id: 7
}, {
rule: "optional",
type: "bool",
name: "isNewRecipeFromWebImport",
id: 8
}, {
rule: "repeated",
type: "string",
name: "recipeIds",
id: 9
}, {
rule: "repeated",
type: "string",
name: "recipeEventIds",
id: 10
}, {
rule: "optional",
type: "int32",
name: "maxRecipeCount",
id: 11
} ]
}, {
name: "PBRecipeOperationList",
fields: [ {
rule: "repeated",
type: "PBRecipeOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBRecipeList",
fields: [ {
rule: "repeated",
type: "PBRecipe",
name: "recipes",
id: 1
} ]
}, {
name: "PBRecipeDataArchive",
fields: [ {
rule: "repeated",
type: "PBRecipe",
name: "recipes",
id: 1
}, {
rule: "repeated",
type: "PBRecipeCollection",
name: "recipeCollections",
id: 2
} ]
}, {
name: "PBRecipeWebImportResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "PBRecipe",
name: "recipe",
id: 2
}, {
rule: "optional",
type: "bool",
name: "isPremiumUser",
id: 3
}, {
rule: "optional",
type: "string",
name: "siteSpecificHelpText",
id: 4
}, {
rule: "optional",
type: "int32",
name: "freeRecipeImportsRemainingCount",
id: 5
} ]
}, {
name: "PBCalendar",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalClockTime",
id: 2
} ]
}, {
name: "PBCalendarEvent",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "calendarId",
id: 3
}, {
rule: "optional",
type: "string",
name: "date",
id: 4
}, {
rule: "optional",
type: "string",
name: "title",
id: 5
}, {
rule: "optional",
type: "string",
name: "details",
id: 6
}, {
rule: "optional",
type: "string",
name: "recipeId",
id: 7
}, {
rule: "optional",
type: "string",
name: "labelId",
id: 8
}, {
rule: "optional",
type: "int32",
name: "orderAddedSortIndex",
id: 9
}, {
rule: "optional",
type: "int32",
name: "labelSortIndex",
id: 11
}, {
rule: "optional",
type: "double",
name: "recipeScaleFactor",
id: 10
} ]
}, {
name: "PBCalendarLabel",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "calendarId",
id: 3
}, {
rule: "optional",
type: "string",
name: "hexColor",
id: 4
}, {
rule: "optional",
type: "string",
name: "name",
id: 5
}, {
rule: "optional",
type: "int32",
name: "sortIndex",
id: 6
} ]
}, {
name: "PBCalendarResponse",
fields: [ {
rule: "required",
type: "string",
name: "calendarId",
id: 1
}, {
rule: "optional",
type: "bool",
name: "isFullSync",
id: 2
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 3
}, {
rule: "repeated",
type: "PBCalendarEvent",
name: "events",
id: 4
}, {
rule: "repeated",
type: "string",
name: "deletedEventIds",
id: 5
}, {
rule: "repeated",
type: "PBCalendarLabel",
name: "labels",
id: 6
}, {
rule: "repeated",
type: "string",
name: "deletedLabelIds",
id: 7
} ]
}, {
name: "PBCalendarOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "calendarId",
id: 2
}, {
rule: "optional",
type: "PBCalendarEvent",
name: "updatedEvent",
id: 3
}, {
rule: "optional",
type: "PBCalendarEvent",
name: "originalEvent",
id: 4
}, {
rule: "optional",
type: "PBCalendarLabel",
name: "updatedLabel",
id: 5
}, {
rule: "optional",
type: "PBCalendarLabel",
name: "originalLabel",
id: 6
}, {
rule: "repeated",
type: "string",
name: "sortedLabelIds",
id: 7
}, {
rule: "repeated",
type: "string",
name: "eventIds",
id: 8
}, {
rule: "repeated",
type: "PBCalendarEvent",
name: "updatedEvents",
id: 9
}, {
rule: "repeated",
type: "PBCalendarEvent",
name: "originalEvents",
id: 10
} ]
}, {
name: "PBCalendarOperationList",
fields: [ {
rule: "repeated",
type: "PBCalendarOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBMealPlanSetICalendarEnabledRequest",
fields: [ {
rule: "optional",
type: "bool",
name: "shouldEnableIcalendarGeneration",
id: 1
} ]
}, {
name: "PBMealPlanSetICalendarEnabledRequestResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "PBAccountInfoResponse",
name: "accountInfo",
id: 2
}, {
rule: "optional",
type: "string",
name: "errorTitle",
id: 3
}, {
rule: "optional",
type: "string",
name: "errorMessage",
id: 4
} ]
}, {
name: "PBSmartCondition",
fields: [ {
rule: "optional",
type: "string",
name: "fieldID",
id: 1
}, {
rule: "optional",
type: "string",
name: "operatorID",
id: 2
}, {
rule: "optional",
type: "string",
name: "value",
id: 3
} ]
}, {
name: "PBSmartFilter",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "optional",
type: "bool",
name: "requiresMatchingAllConditions",
id: 4
}, {
rule: "repeated",
type: "PBSmartCondition",
name: "conditions",
id: 5
} ]
}, {
name: "PBOperationMetadata",
fields: [ {
rule: "optional",
type: "string",
name: "operationId",
id: 1
}, {
rule: "optional",
type: "string",
name: "handlerId",
id: 2
}, {
rule: "optional",
type: "string",
name: "userId",
id: 3
}, {
rule: "optional",
type: "int32",
name: "operationClass",
id: 4
} ],
enums: [ {
name: "OperationClass",
values: [ {
name: "UndefinedOperation",
id: 0
}, {
name: "StoreOperation",
id: 1
}, {
name: "StoreFilterOperation",
id: 2
}, {
name: "ListCategoryOperation",
id: 3
}, {
name: "ListCategoryGroupOperation",
id: 4
}, {
name: "ListCategorizationRuleOperation",
id: 5
} ]
} ]
}, {
name: "PBFavoriteProductOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "productId",
id: 2
} ]
}, {
name: "PBFavoriteProductOperationList",
fields: [ {
rule: "repeated",
type: "PBFavoriteProductOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBSavedRecipeOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "recipeId",
id: 2
} ]
}, {
name: "PBSavedRecipeOperationList",
fields: [ {
rule: "repeated",
type: "PBSavedRecipeOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBOrderedShoppingListIDsOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "repeated",
type: "string",
name: "orderedListIds",
id: 2
} ]
}, {
name: "PBOrderedShoppingListIDsOperationList",
fields: [ {
rule: "repeated",
type: "PBOrderedShoppingListIDsOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBOrderedStarterListIDsOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "repeated",
type: "string",
name: "orderedListIds",
id: 2
} ]
}, {
name: "PBOrderedStarterListIDsOperationList",
fields: [ {
rule: "repeated",
type: "PBOrderedStarterListIDsOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBListOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "listId",
id: 2
}, {
rule: "optional",
type: "string",
name: "listItemId",
id: 3
}, {
rule: "optional",
type: "string",
name: "updatedValue",
id: 4
}, {
rule: "optional",
type: "string",
name: "originalValue",
id: 5
}, {
rule: "optional",
type: "ListItem",
name: "listItem",
id: 6
}, {
rule: "optional",
type: "ShoppingList",
name: "list",
id: 7
}, {
rule: "optional",
type: "string",
name: "listFolderId",
id: 8
}, {
rule: "optional",
type: "PBNotificationLocation",
name: "notificationLocation",
id: 9
}, {
rule: "optional",
type: "PBStore",
name: "updatedStore",
id: 10
}, {
rule: "optional",
type: "PBStore",
name: "originalStore",
id: 11
}, {
rule: "repeated",
type: "string",
name: "sortedStoreIds",
id: 12
}, {
rule: "optional",
type: "PBStoreFilter",
name: "updatedStoreFilter",
id: 13
}, {
rule: "optional",
type: "PBStoreFilter",
name: "originalStoreFilter",
id: 14
}, {
rule: "repeated",
type: "string",
name: "sortedStoreFilterIds",
id: 15
}, {
rule: "optional",
type: "PBItemPrice",
name: "itemPrice",
id: 16
}, {
rule: "optional",
type: "PBListCategory",
name: "updatedCategory",
id: 17
}, {
rule: "optional",
type: "PBListCategory",
name: "originalCategory",
id: 18
}, {
rule: "optional",
type: "PBListCategoryGroup",
name: "updatedCategoryGroup",
id: 19
}, {
rule: "optional",
type: "PBListCategoryGroup",
name: "originalCategoryGroup",
id: 20
}, {
rule: "optional",
type: "PBListCategorizationRule",
name: "updatedCategorizationRule",
id: 21
}, {
rule: "optional",
type: "PBListCategorizationRule",
name: "originalCategorizationRule",
id: 22
}, {
rule: "repeated",
type: "PBListCategorizationRule",
name: "updatedCategorizationRules",
id: 23
} ]
}, {
name: "PBListOperationList",
fields: [ {
rule: "repeated",
type: "PBListOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBShareListOperationResponse",
fields: [ {
rule: "optional",
type: "PBEmailUserIDPair",
name: "sharedUser",
id: 1
}, {
rule: "optional",
type: "double",
name: "originalListTimestamp",
id: 2
}, {
rule: "optional",
type: "double",
name: "updatedListTimestamp",
id: 3
}, {
rule: "optional",
type: "int32",
name: "statusCode",
id: 4
}, {
rule: "optional",
type: "string",
name: "errorTitle",
id: 5
}, {
rule: "optional",
type: "string",
name: "errorMessage",
id: 6
} ]
}, {
name: "PBListFolderOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "listDataId",
id: 2
}, {
rule: "optional",
type: "PBListFolder",
name: "listFolder",
id: 3
}, {
rule: "repeated",
type: "PBListFolderItem",
name: "folderItems",
id: 4
}, {
rule: "optional",
type: "string",
name: "originalParentFolderId",
id: 5
}, {
rule: "optional",
type: "string",
name: "updatedParentFolderId",
id: 6
} ]
}, {
name: "PBListFolderOperationList",
fields: [ {
rule: "repeated",
type: "PBListFolderOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBStarterListOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "string",
name: "listId",
id: 2
}, {
rule: "optional",
type: "string",
name: "listItemId",
id: 3
}, {
rule: "optional",
type: "string",
name: "updatedValue",
id: 4
}, {
rule: "optional",
type: "string",
name: "originalValue",
id: 5
}, {
rule: "optional",
type: "ListItem",
name: "listItem",
id: 6
}, {
rule: "optional",
type: "StarterList",
name: "list",
id: 7
}, {
rule: "optional",
type: "PBItemPrice",
name: "itemPrice",
id: 8
} ]
}, {
name: "PBStarterListOperationList",
fields: [ {
rule: "repeated",
type: "PBStarterListOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBCategorizeItemOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "ListItem",
name: "listItem",
id: 2
} ]
}, {
name: "PBCategorizeItemOperationList",
fields: [ {
rule: "repeated",
type: "PBCategorizeItemOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBCategorizedItemsList",
fields: [ {
rule: "optional",
type: "PBTimestamp",
name: "timestamp",
id: 1
}, {
rule: "repeated",
type: "ListItem",
name: "categorizedItems",
id: 2
} ]
}, {
name: "PBCategoryOrdering",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "name",
id: 2
}, {
rule: "repeated",
type: "string",
name: "categories",
id: 3
} ]
}, {
name: "PBListSettings",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "userId",
id: 2
}, {
rule: "optional",
type: "string",
name: "listId",
id: 3
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 4
}, {
rule: "optional",
type: "bool",
name: "shouldHideCategories",
id: 5
}, {
rule: "optional",
type: "string",
name: "selectedCategoryOrdering",
id: 6
}, {
rule: "repeated",
type: "PBCategoryOrdering",
name: "categoryOrderings",
id: 7
}, {
rule: "optional",
type: "bool",
name: "genericGroceryAutocompleteEnabled",
id: 8
}, {
rule: "optional",
type: "string",
name: "listItemSortOrder",
id: 9
}, {
rule: "optional",
type: "string",
name: "categoryGroupingId",
id: 10
}, {
rule: "optional",
type: "bool",
name: "shouldRememberItemCategories",
id: 11
}, {
rule: "optional",
type: "bool",
name: "favoritesAutocompleteEnabled",
id: 12
}, {
rule: "optional",
type: "bool",
name: "recentItemsAutocompleteEnabled",
id: 13
}, {
rule: "optional",
type: "bool",
name: "shouldHideCompletedItems",
id: 14
}, {
rule: "optional",
type: "int32",
name: "listColorType",
id: 15
}, {
rule: "optional",
type: "string",
name: "listThemeId",
id: 16
}, {
rule: "optional",
type: "PBListTheme",
name: "customTheme",
id: 17
}, {
rule: "optional",
type: "PBListTheme",
name: "customDarkTheme",
id: 31
}, {
rule: "optional",
type: "PBIcon",
name: "icon",
id: 32
}, {
rule: "optional",
type: "string",
name: "badgeMode",
id: 18
}, {
rule: "optional",
type: "bool",
name: "locationNotificationsEnabled",
id: 19
}, {
rule: "optional",
type: "string",
name: "storeFilterId",
id: 20
}, {
rule: "optional",
type: "bool",
name: "shouldHideStoreNames",
id: 21
}, {
rule: "optional",
type: "bool",
name: "shouldHideRunningTotals",
id: 22
}, {
rule: "optional",
type: "bool",
name: "shouldHidePrices",
id: 23
}, {
rule: "optional",
type: "int32",
name: "leftRunningTotalType",
id: 24
}, {
rule: "optional",
type: "int32",
name: "rightRunningTotalType",
id: 25
}, {
rule: "optional",
type: "string",
name: "linkedAlexaListId",
id: 26
}, {
rule: "optional",
type: "string",
name: "listCategoryGroupId",
id: 27
}, {
rule: "optional",
type: "string",
name: "migrationListCategoryGroupIdForNewList",
id: 28
}, {
rule: "optional",
type: "bool",
name: "shouldShowSharedListCategoryOrderHintBanner",
id: 29
}, {
rule: "optional",
type: "string",
name: "linkedGoogleAssistantListId",
id: 30
}, {
rule: "optional",
type: "bool",
name: "hasShownAccountNamePrompt",
id: 33
} ]
}, {
name: "PBListSettingsList",
fields: [ {
rule: "optional",
type: "PBTimestamp",
name: "timestamp",
id: 1
}, {
rule: "repeated",
type: "PBListSettings",
name: "settings",
id: 2
} ]
}, {
name: "PBListSettingsOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "PBListSettings",
name: "updatedSettings",
id: 2
} ]
}, {
name: "PBListSettingsOperationList",
fields: [ {
rule: "repeated",
type: "PBListSettingsOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBListTheme",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "userId",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "optional",
type: "string",
name: "fontName",
id: 5
}, {
rule: "optional",
type: "string",
name: "bannerHexColor",
id: 6
}, {
rule: "optional",
type: "string",
name: "backgroundHexColor",
id: 7
}, {
rule: "optional",
type: "string",
name: "backgroundTexture",
id: 8
}, {
rule: "optional",
type: "string",
name: "itemNameHexColor",
id: 9
}, {
rule: "optional",
type: "string",
name: "itemDetailsHexColor",
id: 10
}, {
rule: "optional",
type: "string",
name: "controlHexColor",
id: 11
}, {
rule: "optional",
type: "string",
name: "separatorHexColor",
id: 12
}, {
rule: "optional",
type: "string",
name: "navigationBarHexColor",
id: 13
}, {
rule: "optional",
type: "string",
name: "cellHexColor",
id: 14
}, {
rule: "optional",
type: "string",
name: "cellTexture",
id: 15
}, {
rule: "optional",
type: "string",
name: "tableHexColor",
id: 16
}, {
rule: "optional",
type: "string",
name: "tableTexture",
id: 17
}, {
rule: "optional",
type: "string",
name: "backgroundImage",
id: 18
}, {
rule: "optional",
type: "string",
name: "selectionHexColor",
id: 19
} ]
}, {
name: "PBListThemeList",
fields: [ {
rule: "optional",
type: "PBTimestamp",
name: "timestamp",
id: 1
}, {
rule: "repeated",
type: "PBListTheme",
name: "themes",
id: 2
} ]
}, {
name: "PBMobileAppSettings",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "defaultListId",
id: 3
}, {
rule: "optional",
type: "string",
name: "crossOffGesture",
id: 4
}, {
rule: "optional",
type: "string",
name: "listsSortOrder",
id: 5
}, {
rule: "optional",
type: "string",
name: "starterListsSortOrder",
id: 6
}, {
rule: "optional",
type: "bool",
name: "remindersAppImportEnabled",
id: 7
}, {
rule: "optional",
type: "string",
name: "appBadgeMode",
id: 8
}, {
rule: "optional",
type: "bool",
name: "shouldAutoImportReminders",
id: 9
}, {
rule: "optional",
type: "bool",
name: "shouldPreventScreenAutolock",
id: 10
}, {
rule: "optional",
type: "bool",
name: "promptToLoadPhotosOverCellularData",
id: 11
}, {
rule: "optional",
type: "string",
name: "listIdForRecipeIngredients",
id: 12
}, {
rule: "optional",
type: "string",
name: "webSelectedListId",
id: 43
}, {
rule: "optional",
type: "string",
name: "webSelectedRecipeId",
id: 13
}, {
rule: "optional",
type: "string",
name: "webSelectedRecipeCollectionId",
id: 14
}, {
rule: "optional",
type: "string",
name: "webSelectedTabId",
id: 15
}, {
rule: "optional",
type: "string",
name: "webSelectedListFolderPath",
id: 16
}, {
rule: "optional",
type: "int32",
name: "webSelectedMealPlanTab",
id: 17
}, {
rule: "optional",
type: "bool",
name: "webHasHiddenStoresAndFiltersHelp",
id: 18
}, {
rule: "optional",
type: "bool",
name: "webHasHiddenItemPricesHelp",
id: 22
}, {
rule: "optional",
type: "string",
name: "webDecimalSeparator",
id: 23
}, {
rule: "optional",
type: "string",
name: "webCurrencyCode",
id: 24
}, {
rule: "optional",
type: "string",
name: "webCurrencySymbol",
id: 25
}, {
rule: "optional",
type: "int32",
name: "webSelectedRecipeCollectionType",
id: 40
}, {
rule: "repeated",
type: "PBHintBannerDisplayStats",
name: "hintBannerDisplayStats",
id: 19
}, {
rule: "optional",
type: "PBRecipeCollectionSettings",
name: "webSelectedRecipeCollectionSettingsOverride",
id: 20
}, {
rule: "optional",
type: "bool",
name: "shouldUseMetricUnits",
id: 21
}, {
rule: "repeated",
type: "PBAlexaList",
name: "unlinkedAlexaLists",
id: 26
}, {
rule: "optional",
type: "bool",
name: "alexaSkillHasListReadPermission",
id: 27
}, {
rule: "optional",
type: "bool",
name: "alexaSkillHasListWritePermission",
id: 28
}, {
rule: "optional",
type: "bool",
name: "isAccountLinkedToAlexaSkill",
id: 29
}, {
rule: "optional",
type: "string",
name: "alexaApiEndpoint",
id: 30
}, {
rule: "optional",
type: "bool",
name: "alexaSkillOnlySupportsBuiltInLists",
id: 31
}, {
rule: "optional",
type: "bool",
name: "hasMigratedUserCategoriesToListCategories",
id: 32
}, {
rule: "optional",
type: "bool",
name: "isAccountLinkedToGoogleAssistant",
id: 34
}, {
rule: "optional",
type: "bool",
name: "clientHasShownGoogleAssistantOnboarding",
id: 36
}, {
rule: "repeated",
type: "PBRecipeCookingState",
name: "recipeCookingStates",
id: 37
}, {
rule: "optional",
type: "bool",
name: "shouldNotLinkNewListsWithAlexaByDefault",
id: 38
}, {
rule: "optional",
type: "bool",
name: "shouldNotLinkNewListsWithGoogleAssistantByDefault",
id: 39
}, {
rule: "optional",
type: "bool",
name: "didSuppressAccountNamePrompt",
id: 41
}, {
rule: "optional",
type: "bool",
name: "isOnlineShoppingDisabled",
id: 42
}, {
rule: "repeated",
type: "PBGoogleAssistantList",
name: "unlinkedGoogleAssistantLists",
id: 33
}, {
rule: "optional",
type: "bool",
name: "isActiveGoogleAssistantProvider",
id: 35
} ]
}, {
name: "PBAppNotice",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "title",
id: 3
}, {
rule: "optional",
type: "string",
name: "notificationTitle",
id: 4
}, {
rule: "optional",
type: "string",
name: "notificationSubtitle",
id: 5
}, {
rule: "optional",
type: "string",
name: "bodyHtml",
id: 6
}, {
rule: "optional",
type: "string",
name: "bodyCss",
id: 7
}, {
rule: "optional",
type: "string",
name: "userId",
id: 8
}, {
rule: "optional",
type: "string",
name: "context",
id: 9
}, {
rule: "optional",
type: "bool",
name: "isDraft",
id: 10
}, {
rule: "optional",
type: "double",
name: "maxUserCreationTime",
id: 11
} ]
}, {
name: "PBAppNoticesUserData",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "repeated",
type: "string",
name: "readNoticeIds",
id: 3
}, {
rule: "repeated",
type: "string",
name: "dismissedGlobalNoticeIds",
id: 4
} ]
}, {
name: "PBAppNoticeOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "repeated",
type: "string",
name: "noticeIds",
id: 2
} ]
}, {
name: "PBAppNoticeOperationList",
fields: [ {
rule: "repeated",
type: "PBAppNoticeOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBAppNoticeList",
fields: [ {
rule: "repeated",
type: "PBAppNotice",
name: "notices",
id: 1
} ]
}, {
name: "PBHintBannerDisplayStats",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "repeated",
type: "double",
name: "displayTimestamps",
id: 2
} ]
}, {
name: "PBMobileAppSettingsOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "PBMobileAppSettings",
name: "updatedSettings",
id: 2
} ]
}, {
name: "PBMobileAppSettingsOperationList",
fields: [ {
rule: "repeated",
type: "PBMobileAppSettingsOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBUserCategory",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "userId",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "optional",
type: "string",
name: "icon",
id: 4
}, {
rule: "optional",
type: "string",
name: "systemCategory",
id: 5
}, {
rule: "optional",
type: "string",
name: "categoryMatchId",
id: 6
}, {
rule: "optional",
type: "bool",
name: "fromSharedList",
id: 7
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 8
} ]
}, {
name: "PBCategoryGrouping",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "userId",
id: 2
}, {
rule: "optional",
type: "string",
name: "name",
id: 3
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 4
}, {
rule: "optional",
type: "string",
name: "sharingId",
id: 5
}, {
rule: "repeated",
type: "string",
name: "categoryIds",
id: 6
}, {
rule: "optional",
type: "bool",
name: "shouldHideFromBrowseListCategoryGroupsScreen",
id: 7
} ]
}, {
name: "PBUserCategoryData",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
}, {
rule: "optional",
type: "double",
name: "requiresRefreshTimestamp",
id: 3
}, {
rule: "repeated",
type: "PBUserCategory",
name: "categories",
id: 4
}, {
rule: "repeated",
type: "PBCategoryGrouping",
name: "groupings",
id: 5
}, {
rule: "optional",
type: "bool",
name: "hasMigratedCategoryOrderings",
id: 6
} ]
}, {
name: "PBUserCategoryOperation",
fields: [ {
rule: "optional",
type: "PBOperationMetadata",
name: "metadata",
id: 1
}, {
rule: "optional",
type: "PBUserCategory",
name: "category",
id: 2
}, {
rule: "optional",
type: "PBCategoryGrouping",
name: "grouping",
id: 3
} ]
}, {
name: "PBUserCategoryOperationList",
fields: [ {
rule: "repeated",
type: "PBUserCategoryOperation",
name: "operations",
id: 1
} ]
}, {
name: "PBTimestamp",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "timestamp",
id: 2
} ]
}, {
name: "PBTimestampList",
fields: [ {
rule: "repeated",
type: "PBTimestamp",
name: "timestamps",
id: 1
} ]
}, {
name: "PBLogicalTimestamp",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
}, {
rule: "optional",
type: "string",
name: "description",
id: 3
} ]
}, {
name: "PBLogicalTimestampList",
fields: [ {
rule: "repeated",
type: "PBLogicalTimestamp",
name: "timestamps",
id: 1
} ]
}, {
name: "PBEditOperationResponse",
fields: [ {
rule: "repeated",
type: "PBTimestamp",
name: "originalTimestamps",
id: 1
}, {
rule: "repeated",
type: "PBTimestamp",
name: "newTimestamps",
id: 2
}, {
rule: "repeated",
type: "string",
name: "processedOperations",
id: 3
}, {
rule: "repeated",
type: "PBLogicalTimestamp",
name: "originalLogicalTimestamps",
id: 4
}, {
rule: "repeated",
type: "PBLogicalTimestamp",
name: "currentLogicalTimestamps",
id: 5
}, {
rule: "repeated",
type: "string",
name: "fullRefreshTimestampIds",
id: 6
} ]
}, {
name: "PBUserSubscriptionInfo",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsActive",
id: 16
}, {
rule: "optional",
type: "int32",
name: "subscriptionManagementSystem",
id: 14
}, {
rule: "optional",
type: "string",
name: "expirationTimestampMsStr",
id: 2
}, {
rule: "optional",
type: "int64",
name: "expirationTimestampMs",
id: 15
}, {
rule: "optional",
type: "int32",
name: "subscriptionType",
id: 3
}, {
rule: "optional",
type: "PBEmailUserIDPair",
name: "masterUser",
id: 4
}, {
rule: "repeated",
type: "PBEmailUserIDPair",
name: "subusers",
id: 5
}, {
rule: "repeated",
type: "PBIAPReceipt",
name: "nonrenewIapReceipts",
id: 6
}, {
rule: "repeated",
type: "PBIAPReceipt",
name: "autorenewIapReceipts",
id: 7
}, {
rule: "repeated",
type: "PBStripeCharge",
name: "nonrenewStripeCharges",
id: 9
}, {
rule: "repeated",
type: "PBGooglePlayPurchase",
name: "googlePlayPurchases",
id: 12
}, {
rule: "optional",
type: "string",
name: "googlePlayPurchaseToken",
id: 13
}, {
rule: "repeated",
type: "string",
name: "googlePlayOrderIds",
id: 17
}, {
rule: "optional",
type: "int32",
name: "subuserLimit",
id: 8,
options: {
"default": 5
}
}, {
rule: "repeated",
type: "string",
name: "sentEmailIdentifiers",
id: 10
}, {
rule: "optional",
type: "bool",
name: "userConfirmedNotRenewing",
id: 11
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsCanceled",
id: 20
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsPendingDowngrade",
id: 26
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsInStripeAutorenewMigrationPeriod",
id: 27
}, {
rule: "optional",
type: "string",
name: "stripeCustomerId",
id: 18
}, {
rule: "optional",
type: "string",
name: "stripeSubscriptionId",
id: 21
}, {
rule: "repeated",
type: "PBStripeSubscriptionInvoice",
name: "stripeSubscriptionInvoices",
id: 19
}, {
rule: "optional",
type: "string",
name: "stripePaymentMethodLast4",
id: 22
}, {
rule: "optional",
type: "int32",
name: "stripePaymentMethodExpirationMonth",
id: 23
}, {
rule: "optional",
type: "int32",
name: "stripePaymentMethodExpirationYear",
id: 24
}, {
rule: "optional",
type: "string",
name: "stripePaymentMethodBrand",
id: 25
} ]
}, {
name: "PBIAPReceipt",
fields: [ {
rule: "optional",
type: "string",
name: "transactionId",
id: 1
}, {
rule: "optional",
type: "bytes",
name: "receiptData",
id: 2
}, {
rule: "optional",
type: "string",
name: "parsedReceipt",
id: 3
} ]
}, {
name: "PBStripeCharge",
fields: [ {
rule: "optional",
type: "string",
name: "chargeId",
id: 1
}, {
rule: "optional",
type: "string",
name: "charge",
id: 2
} ]
}, {
name: "PBGooglePlayPurchase",
fields: [ {
rule: "optional",
type: "string",
name: "orderId",
id: 1
}, {
rule: "optional",
type: "string",
name: "purchaseToken",
id: 3
}, {
rule: "optional",
type: "string",
name: "purchaseInfo",
id: 2
} ]
}, {
name: "PBStripeSubscriptionInvoice",
fields: [ {
rule: "optional",
type: "string",
name: "subscriptionId",
id: 1
}, {
rule: "optional",
type: "string",
name: "invoiceId",
id: 2
}, {
rule: "optional",
type: "string",
name: "subscription",
id: 3
} ]
}, {
name: "PBUserEmailInfo",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "unsubscribeId",
id: 2
}, {
rule: "repeated",
type: "string",
name: "sentMessageIdentifiers",
id: 4
}, {
rule: "optional",
type: "bool",
name: "shouldSendNewsletters",
id: 3
}, {
rule: "optional",
type: "bool",
name: "shouldSendOnboardingTips",
id: 5
}, {
rule: "optional",
type: "bool",
name: "shouldSendSubscriptionLifecycleMessages",
id: 6
} ]
}, {
name: "PBEmailSuppressionInfo",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "emailAddress",
id: 2
}, {
rule: "optional",
type: "bool",
name: "shouldSuppressAllMessages",
id: 3
}, {
rule: "repeated",
type: "PBEmailEvent",
name: "emailEvents",
id: 4
} ]
}, {
name: "PBEmailEvent",
fields: [ {
rule: "optional",
type: "string",
name: "eventType",
id: 1
}, {
rule: "optional",
type: "string",
name: "eventData",
id: 2
}, {
rule: "optional",
type: "string",
name: "description",
id: 3
} ]
}, {
name: "PBAccountInfoResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "string",
name: "firstName",
id: 2
}, {
rule: "optional",
type: "string",
name: "lastName",
id: 3
}, {
rule: "optional",
type: "string",
name: "email",
id: 4
}, {
rule: "optional",
type: "bool",
name: "isPremiumUser",
id: 5
}, {
rule: "optional",
type: "int32",
name: "subscriptionType",
id: 6
}, {
rule: "optional",
type: "int32",
name: "subscriptionManagementSystem",
id: 10
}, {
rule: "optional",
type: "string",
name: "expirationTimestampMsStr",
id: 7
}, {
rule: "optional",
type: "int64",
name: "expirationTimestampMs",
id: 11
}, {
rule: "optional",
type: "PBEmailUserIDPair",
name: "masterUser",
id: 8
}, {
rule: "repeated",
type: "PBEmailUserIDPair",
name: "subusers",
id: 9
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsCanceled",
id: 13
}, {
rule: "optional",
type: "bool",
name: "subscriptionIsPendingDowngrade",
id: 14
}, {
rule: "optional",
type: "string",
name: "icalendarId",
id: 12
} ]
}, {
name: "PBAppNoticesResponse",
fields: [ {
rule: "repeated",
type: "PBAppNotice",
name: "newGlobalNotices",
id: 1
}, {
rule: "repeated",
type: "PBAppNotice",
name: "updatedGlobalNotices",
id: 2
}, {
rule: "repeated",
type: "string",
name: "removedGlobalNoticeIds",
id: 3
}, {
rule: "repeated",
type: "PBAppNotice",
name: "newUserNotices",
id: 4
}, {
rule: "repeated",
type: "PBAppNotice",
name: "updatedUserNotices",
id: 5
}, {
rule: "repeated",
type: "string",
name: "removedUserNoticeIds",
id: 6
}, {
rule: "optional",
type: "PBAppNoticesUserData",
name: "userData",
id: 7
} ]
}, {
name: "PBAccountChangePasswordResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "string",
name: "errorTitle",
id: 2
}, {
rule: "optional",
type: "string",
name: "errorMessage",
id: 3
}, {
rule: "optional",
type: "string",
name: "refreshToken",
id: 4
}, {
rule: "optional",
type: "string",
name: "accessToken",
id: 5
} ]
}, {
name: "PBRedemptionCodeInfo",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "redemptionCode",
id: 2
}, {
rule: "optional",
type: "string",
name: "purchasingUserId",
id: 3
}, {
rule: "optional",
type: "string",
name: "redeemingUserId",
id: 4
}, {
rule: "optional",
type: "double",
name: "redemptionTimestamp",
id: 5
}, {
rule: "optional",
type: "int32",
name: "subscriptionType",
id: 6
}, {
rule: "optional",
type: "double",
name: "creationTimestamp",
id: 7
}, {
rule: "optional",
type: "bool",
name: "wasPurchased",
id: 8
} ]
}, {
name: "PBRedemptionCodeResponse",
fields: [ {
rule: "optional",
type: "int32",
name: "statusCode",
id: 1
}, {
rule: "optional",
type: "PBAccountInfoResponse",
name: "accountInfo",
id: 2
}, {
rule: "optional",
type: "string",
name: "errorTitle",
id: 3
}, {
rule: "optional",
type: "string",
name: "errorMessage",
id: 4
} ]
}, {
name: "PBAuthTokenInfo",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "bool",
name: "isBlacklisted",
id: 2
}, {
rule: "optional",
type: "string",
name: "userId",
id: 3
}, {
rule: "optional",
type: "int64",
name: "creationTimestamp",
id: 4
}, {
rule: "optional",
type: "int64",
name: "expirationTimestamp",
id: 5
}, {
rule: "optional",
type: "int64",
name: "blacklistedTimestamp",
id: 6
}, {
rule: "optional",
type: "int64",
name: "lastUsedForRefreshTimestamp",
id: 7
}, {
rule: "optional",
type: "string",
name: "replacementTokenId",
id: 8
}, {
rule: "optional",
type: "string",
name: "replacementTokenStr",
id: 9
}, {
rule: "optional",
type: "int64",
name: "replacementTokenGenerationTimestamp",
id: 10
}, {
rule: "optional",
type: "string",
name: "clientPlatform",
id: 11
} ]
}, {
name: "PBIdentifierList",
fields: [ {
rule: "optional",
type: "double",
name: "timestamp",
id: 1
}, {
rule: "repeated",
type: "string",
name: "identifiers",
id: 2
} ]
}, {
name: "PBEmailUserIDPair",
fields: [ {
rule: "optional",
type: "string",
name: "email",
id: 1
}, {
rule: "optional",
type: "string",
name: "userId",
id: 2
}, {
rule: "optional",
type: "string",
name: "fullName",
id: 3
} ]
}, {
name: "PBNotificationLocation",
fields: [ {
rule: "required",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "double",
name: "latitude",
id: 2
}, {
rule: "optional",
type: "double",
name: "longitude",
id: 3
}, {
rule: "optional",
type: "string",
name: "name",
id: 4
}, {
rule: "optional",
type: "string",
name: "address",
id: 5
} ]
}, {
name: "PBUserDataClientTimestamps",
fields: [ {
rule: "optional",
type: "PBTimestampList",
name: "shoppingListTimestamps",
id: 1
}, {
rule: "optional",
type: "PBListFolderTimestamps",
name: "listFolderTimestamps",
id: 2
}, {
rule: "optional",
type: "PBTimestamp",
name: "userRecipeDataTimestamp",
id: 3
}, {
rule: "optional",
type: "PBLogicalTimestamp",
name: "mealPlanningCalendarTimestamp",
id: 4
}, {
rule: "optional",
type: "PBTimestamp",
name: "categorizedItemsTimestamp",
id: 5
}, {
rule: "optional",
type: "PBTimestamp",
name: "userCategoriesTimestamp",
id: 6
}, {
rule: "optional",
type: "PBTimestampList",
name: "starterListTimestamps",
id: 7
}, {
rule: "optional",
type: "PBTimestampList",
name: "recentItemTimestamps",
id: 8
}, {
rule: "optional",
type: "PBTimestampList",
name: "favoriteItemTimestamps",
id: 9
}, {
rule: "optional",
type: "PBTimestamp",
name: "orderedStarterListIdsTimestamp",
id: 10
}, {
rule: "optional",
type: "PBTimestamp",
name: "listSettingsTimestamp",
id: 11
}, {
rule: "optional",
type: "PBTimestamp",
name: "starterListSettingsTimestamp",
id: 12
}, {
rule: "optional",
type: "PBTimestamp",
name: "mobileAppSettingsTimestamp",
id: 13
}, {
rule: "optional",
type: "PBLogicalTimestampList",
name: "shoppingListLogicalTimestamps",
id: 14
} ]
}, {
name: "PBUserDataResponse",
fields: [ {
rule: "optional",
type: "ShoppingListsResponse",
name: "shoppingListsResponse",
id: 1
}, {
rule: "optional",
type: "PBListFoldersResponse",
name: "listFoldersResponse",
id: 2
}, {
rule: "optional",
type: "PBRecipeDataResponse",
name: "recipeDataResponse",
id: 3
}, {
rule: "optional",
type: "PBCalendarResponse",
name: "mealPlanningCalendarResponse",
id: 4
}, {
rule: "optional",
type: "PBCategorizedItemsList",
name: "categorizedItemsResponse",
id: 5
}, {
rule: "optional",
type: "PBUserCategoryData",
name: "userCategoriesResponse",
id: 6
}, {
rule: "optional",
type: "StarterListsResponseV2",
name: "starterListsResponse",
id: 7
}, {
rule: "optional",
type: "PBIdentifierList",
name: "orderedStarterListIdsResponse",
id: 8
}, {
rule: "optional",
type: "PBListSettingsList",
name: "listSettingsResponse",
id: 9
}, {
rule: "optional",
type: "PBListSettingsList",
name: "starterListSettingsResponse",
id: 10
}, {
rule: "optional",
type: "PBMobileAppSettings",
name: "mobileAppSettingsResponse",
id: 11
} ]
}, {
name: "PBValue",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "repeated",
type: "string",
name: "stringValue",
id: 2
}, {
rule: "optional",
type: "bool",
name: "boolValue",
id: 3
}, {
rule: "optional",
type: "int32",
name: "intValue",
id: 4
}, {
rule: "optional",
type: "double",
name: "doubleValue",
id: 5
}, {
rule: "optional",
type: "bytes",
name: "dataValue",
id: 6
}, {
rule: "optional",
type: "bytes",
name: "encodedPb",
id: 7
}, {
rule: "optional",
type: "string",
name: "pbClassName",
id: 8
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestampValue",
id: 9
}, {
rule: "map",
type: "PBRecipeCollectionSettings",
keytype: "string",
name: "recipeCollectionSettingsMap",
id: 10
} ]
}, {
name: "PBValueList",
fields: [ {
rule: "repeated",
type: "PBValue",
name: "values",
id: 1
} ]
}, {
name: "PBDeletedObjectID",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 2
} ]
}, {
name: "PBDeletedObjectIDList",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "containerId",
id: 2
}, {
rule: "optional",
type: "string",
name: "logicalClockId",
id: 3
}, {
rule: "optional",
type: "uint64",
name: "creationLogicalTimestamp",
id: 4
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 5
}, {
rule: "repeated",
type: "PBDeletedObjectID",
name: "deletedObjectIds",
id: 6
} ]
}, {
name: "PBEmailUserIDPairList",
fields: [ {
rule: "repeated",
type: "PBEmailUserIDPair",
name: "emailUserIdPair",
id: 1
} ]
}, {
name: "PBRecipeLinkRequestList",
fields: [ {
rule: "repeated",
type: "PBRecipeLinkRequest",
name: "recipeLinkRequest",
id: 1
} ]
}, {
name: "PBSyncOperation",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "operationQueueId",
id: 2
}, {
rule: "optional",
type: "string",
name: "operationClassName",
id: 3
}, {
rule: "optional",
type: "bytes",
name: "encodedOperation",
id: 4
} ]
}, {
name: "PBWatchSyncResponse",
fields: [ {
rule: "optional",
type: "string",
name: "watchId",
id: 23
}, {
rule: "optional",
type: "string",
name: "userId",
id: 1
}, {
rule: "optional",
type: "bool",
name: "isPremiumUser",
id: 2
}, {
rule: "optional",
type: "string",
name: "rootFolderId",
id: 3
}, {
rule: "optional",
type: "uint64",
name: "logicalTimestamp",
id: 4
}, {
rule: "optional",
type: "bool",
name: "isFullSync",
id: 22
}, {
rule: "repeated",
type: "ShoppingList",
name: "shoppingLists",
id: 5
}, {
rule: "repeated",
type: "string",
name: "deletedShoppingListIds",
id: 6
}, {
rule: "repeated",
type: "ListItem",
name: "listItems",
id: 7
}, {
rule: "repeated",
type: "string",
name: "deletedListItemIds",
id: 8
}, {
rule: "repeated",
type: "PBStore",
name: "stores",
id: 9
}, {
rule: "repeated",
type: "string",
name: "deletedStoresIds",
id: 10
}, {
rule: "repeated",
type: "PBStoreFilter",
name: "storeFilters",
id: 11
}, {
rule: "repeated",
type: "string",
name: "deletedStoreFilterIds",
id: 12
}, {
rule: "repeated",
type: "PBListSettings",
name: "listSettings",
id: 13
}, {
rule: "repeated",
type: "string",
name: "deletedListSettingIds",
id: 14
}, {
rule: "repeated",
type: "PBCategoryGrouping",
name: "categoryGroups",
id: 15
}, {
rule: "repeated",
type: "string",
name: "deletedCategoryGroupIds",
id: 16
}, {
rule: "repeated",
type: "PBUserCategory",
name: "categories",
id: 17
}, {
rule: "repeated",
type: "string",
name: "deletedCategoryIds",
id: 18
}, {
rule: "repeated",
type: "PBListCategory",
name: "listCategories",
id: 24
}, {
rule: "repeated",
type: "string",
name: "deletedListCategoryIds",
id: 25
}, {
rule: "repeated",
type: "PBListCategoryGroup",
name: "listCategoryGroups",
id: 26
}, {
rule: "repeated",
type: "string",
name: "deletedListCategoryGroupIds",
id: 27
}, {
rule: "repeated",
type: "PBListCategorizationRule",
name: "listCategorizationRules",
id: 28
}, {
rule: "repeated",
type: "string",
name: "deletedListCategorizationRuleIds",
id: 29
}, {
rule: "repeated",
type: "PBListFolder",
name: "listFolders",
id: 19
}, {
rule: "repeated",
type: "string",
name: "deletedListFolderIds",
id: 20
}, {
rule: "repeated",
type: "string",
name: "processedOperationIds",
id: 21
} ]
}, {
name: "PBWatchSyncMultipartResponsePart",
fields: [ {
rule: "optional",
type: "string",
name: "fullResponseHash",
id: 1
}, {
rule: "optional",
type: "int32",
name: "partIndex",
id: 2
}, {
rule: "optional",
type: "int32",
name: "partsCount",
id: 3
}, {
rule: "optional",
type: "bytes",
name: "responsePart",
id: 4
} ]
}, {
name: "PBWatchSyncMultipartResponse",
fields: [ {
rule: "repeated",
type: "PBWatchSyncMultipartResponsePart",
name: "reponsePart",
id: 1
}, {
rule: "optional",
type: "string",
name: "fullResponseHash",
id: 2
}, {
rule: "optional",
type: "uint64",
name: "responseLogicalTimestamp",
id: 3
} ]
}, {
name: "PBAlexaUser",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "alexaUserId",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 3
}, {
rule: "optional",
type: "bool",
name: "hasListReadPermission",
id: 4
}, {
rule: "optional",
type: "bool",
name: "hasListWritePermission",
id: 5
}, {
rule: "optional",
type: "bool",
name: "isSkillEnabled",
id: 6
}, {
rule: "optional",
type: "string",
name: "accountLinkedTimestamp",
id: 7
}, {
rule: "optional",
type: "string",
name: "skillEnabledTimestamp",
id: 8
}, {
rule: "optional",
type: "string",
name: "skillPermissionTimestamp",
id: 10
}, {
rule: "optional",
type: "string",
name: "alexaApiEndpoint",
id: 11
} ]
}, {
name: "PBAlexaList",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "alexaListId",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistListId",
id: 3
}, {
rule: "optional",
type: "string",
name: "alexaUserId",
id: 4
}, {
rule: "optional",
type: "string",
name: "name",
id: 5
}, {
rule: "repeated",
type: "PBAlexaListItem",
name: "items",
id: 6
}, {
rule: "optional",
type: "string",
name: "state",
id: 7
}, {
rule: "optional",
type: "int32",
name: "version",
id: 8
} ]
}, {
name: "PBAlexaListItem",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "alexaItemId",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistItemId",
id: 3
}, {
rule: "optional",
type: "string",
name: "alexaListId",
id: 4
}, {
rule: "optional",
type: "string",
name: "alexaUserId",
id: 5
}, {
rule: "optional",
type: "int32",
name: "version",
id: 6
}, {
rule: "optional",
type: "string",
name: "itemValue",
id: 7
}, {
rule: "optional",
type: "string",
name: "status",
id: 8
} ]
}, {
name: "PBAlexaListOperation",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "operationType",
id: 2
}, {
rule: "optional",
type: "string",
name: "alexaUserId",
id: 3
}, {
rule: "repeated",
type: "PBAlexaListItem",
name: "operationItems",
id: 4
}, {
rule: "repeated",
type: "PBAlexaList",
name: "operationLists",
id: 5
} ]
}, {
name: "PBAlexaTask",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "alexaUserId",
id: 2
}, {
rule: "optional",
type: "string",
name: "eventJson",
id: 3
}, {
rule: "optional",
type: "PBAlexaListOperation",
name: "listOperation",
id: 4
} ]
}, {
name: "PBGoogleAssistantUser",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 2
}, {
rule: "optional",
type: "string",
name: "listActionsApiRefreshToken",
id: 3
}, {
rule: "optional",
type: "bool",
name: "isGoogleAssistantAccountLinked",
id: 4
}, {
rule: "optional",
type: "string",
name: "anylistRefreshToken",
id: 6
}, {
rule: "optional",
type: "string",
name: "anylistAccessToken",
id: 7
}, {
rule: "optional",
type: "bool",
name: "isActiveGoogleAssistantProvider",
id: 5
} ]
}, {
name: "PBGoogleAssistantList",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "googleAssistantCreateToken",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistListId",
id: 3
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 4
}, {
rule: "optional",
type: "string",
name: "title",
id: 5
}, {
rule: "repeated",
type: "PBGoogleAssistantListItem",
name: "items",
id: 6
}, {
rule: "optional",
type: "bool",
name: "isArchived",
id: 7
}, {
rule: "optional",
type: "string",
name: "createTime",
id: 8
}, {
rule: "optional",
type: "string",
name: "updateTime",
id: 9
} ]
}, {
name: "PBGoogleAssistantListItem",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "googleAssistantCreateToken",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistItemId",
id: 3
}, {
rule: "optional",
type: "string",
name: "googleAssistantListId",
id: 4
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 5
}, {
rule: "optional",
type: "string",
name: "content",
id: 6
}, {
rule: "optional",
type: "bool",
name: "isChecked",
id: 7
}, {
rule: "optional",
type: "string",
name: "createTime",
id: 8
}, {
rule: "optional",
type: "string",
name: "updateTime",
id: 9
} ]
}, {
name: "PBGoogleAssistantListOperation",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "operationType",
id: 2
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 3
}, {
rule: "repeated",
type: "PBGoogleAssistantListItem",
name: "operationItems",
id: 4
}, {
rule: "repeated",
type: "PBGoogleAssistantList",
name: "operationLists",
id: 5
}, {
rule: "optional",
type: "string",
name: "googleAssistantListId",
id: 6
} ]
}, {
name: "PBGoogleAssistantTask",
fields: [ {
rule: "optional",
type: "string",
name: "identifier",
id: 1
}, {
rule: "optional",
type: "string",
name: "anylistUserId",
id: 2
}, {
rule: "optional",
type: "PBGoogleAssistantListOperation",
name: "listOperation",
id: 3
} ]
} ]
}
I just tried for several days... and I can't find the solution.
I don't have the knowledge to understand the Anylist API and adapt the code...