Clarifying "operation" in the definition of data type
It sounds like you might be asking about an abstract data type.  If so, the answer is the third option: "an identifier with signature and established behaviour".

If you are asking about a data type, then I'm not sure there's a clear answer that applies to all type systems and all programming languages.  Syntactically, I think it falls closest to your second option: "an identifier with signature" -- the type checker doesn't know anything about the intended behavior.  However, in practice programmers might associate other things with a type: for instance, the type might indicate the intended meaning of the data, it might indicate the intended behavior of the operations, it might indicate how the data is represented or stored, and it might even encode other distinctions -- though many of these might not be checked by the compiler's type checking or might not be visible to the compiler.