What can you put in the {}s in a /give command? [duplicate]

The {} part of the give command is the data tag or NBT data of the item. A full list of valid NBT tags for all items is quite extensive and subject to change with every version/snapshot. I will give a brief overview instead, and refer to the wiki for a full list. Basically, the data tag can include anything listed as a subtag of

tag: Additional information about the item, discussed in the below sections. This tag is optional for most items.

This includes:

  • Enchantments (ench)
  • Potion effects
  • The display tag, with things like color, name and lore
  • Tags for written books
  • BlockEntityData, holding NBT data of things that have data when placed in the world, such as chests (this alone is a large topic)
  • ...

Note that while you can put a lot of things as data, the game simply ignites everything that makes no sense to it. Putting an author tag on a sword it's no different from putting a banana tag, neither do anything but waste memory.