diff --git a/tftypes/value_msgpack.go b/tftypes/value_msgpack.go index d2fa8a36..105d0b5e 100644 --- a/tftypes/value_msgpack.go +++ b/tftypes/value_msgpack.go @@ -552,6 +552,7 @@ func marshalMsgPackObject(val Value, typ Type, p *AttributePath, enc *msgpack.En return unexpectedValueTypeError(p, o, val.value, typ) } types := typ.(Object).AttributeTypes + optionalTypes := typ.(Object).OptionalAttributes keys := make([]string, 0, len(types)) for k := range types { keys = append(keys, k) @@ -565,6 +566,9 @@ func marshalMsgPackObject(val Value, typ Type, p *AttributePath, enc *msgpack.En ty := types[k] v, ok := o[k] if !ok { + if _, isOptional := optionalTypes[k]; isOptional { + continue + } return p.WithAttributeName(k).NewErrorf("no value set") } err := marshalMsgPack(NewValue(String, k), String, p.WithAttributeName(k), enc)