codetheweb / anylist

📋 a wrapper for AnyList's API (unoffical, reverse engineered)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue with Creating Recipes - Uncertain if code work

igormages opened this issue · 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 ?

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

definitions.json

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...