Minecraft wiki entry for Block_Tags, associated text:  CanPlaceOn: Determines which blocks that blocks with this tag can be placed against in adventure mode.
: A block ID. Validated the same way as the block_predicate command argument, meaning block states and block tags are accepted, as well as client-side only block entity NBT tags.
 BlockEntityTag: Block entity NBT tags which are applied when this block is placed.[1] Used to store data on banners and shields or on blocks obtained in creative by holding ctrl (or ⌘ Cmd on mac) and pressing pick block on a block containing a block entity.
See Block Entity Format. Excludes x, y, z, and id tags.
 BlockStateTag: A compound where each key is a block state key, and the value is the block state value to force place for this block.
 Block state key: The block state value of the block to edit, for example, facing: "east".