The consistent read_time for the given target_ids (omitted when the
target_ids are not at a consistent snapshot).
The stream is guaranteed to send a read_time with target_ids empty
whenever the entire stream reaches a new consistent snapshot. ADD,
CURRENT, and RESET messages are guaranteed to (eventually) result in a
new consistent snapshot (while NO_CHANGE and REMOVE messages are not).
For a given stream, read_time is guaranteed to be monotonically
increasing.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eTargetChange\u003c/code\u003e class in the Firestore v1 API represents changes to watched targets.\u003c/p\u003e\n"],["\u003cp\u003eThis class implements several interfaces, including \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, for various functionalities.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eTargetChange\u003c/code\u003e includes properties like \u003ccode\u003eCause\u003c/code\u003e, \u003ccode\u003eReadTime\u003c/code\u003e, \u003ccode\u003eResumeToken\u003c/code\u003e, \u003ccode\u003eTargetChangeType\u003c/code\u003e, and \u003ccode\u003eTargetIds\u003c/code\u003e to describe the nature of the target change.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eTargetChange\u003c/code\u003e class has constructors for creating new instances, either default or by cloning another \u003ccode\u003eTargetChange\u003c/code\u003e instance.\u003c/p\u003e\n"],["\u003cp\u003eThe most recent version of \u003ccode\u003eTargetChange\u003c/code\u003e is 3.10.0, with multiple previous versions available.\u003c/p\u003e\n"]]],[],null,["# Firestore v1 API - Class TargetChange (3.10.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.10.0 (latest)](/dotnet/docs/reference/Google.Cloud.Firestore.V1/latest/Google.Cloud.Firestore.V1.TargetChange)\n- [3.9.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.9.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.8.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.8.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.7.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.7.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.6.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.6.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.5.1](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.5.1/Google.Cloud.Firestore.V1.TargetChange)\n- [3.4.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.4.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.3.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.2.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.1.0/Google.Cloud.Firestore.V1.TargetChange)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/3.0.0/Google.Cloud.Firestore.V1.TargetChange)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/2.5.0/Google.Cloud.Firestore.V1.TargetChange)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/2.4.0/Google.Cloud.Firestore.V1.TargetChange)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.Firestore.V1/2.3.0/Google.Cloud.Firestore.V1.TargetChange) \n\n public sealed class TargetChange : IMessage\u003cTargetChange\u003e, IEquatable\u003cTargetChange\u003e, IDeepCloneable\u003cTargetChange\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Firestore v1 API class TargetChange.\n\nTargets being watched have changed. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e TargetChange \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[TargetChange](/dotnet/docs/reference/Google.Cloud.Firestore.V1/latest/Google.Cloud.Firestore.V1.TargetChange), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[TargetChange](/dotnet/docs/reference/Google.Cloud.Firestore.V1/latest/Google.Cloud.Firestore.V1.TargetChange), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[TargetChange](/dotnet/docs/reference/Google.Cloud.Firestore.V1/latest/Google.Cloud.Firestore.V1.TargetChange), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.Firestore.V1](/dotnet/docs/reference/Google.Cloud.Firestore.V1/latest/Google.Cloud.Firestore.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.Firestore.V1.dll\n\nConstructors\n------------\n\n### TargetChange()\n\n public TargetChange()\n\n### TargetChange(TargetChange)\n\n public TargetChange(TargetChange other)\n\nProperties\n----------\n\n### Cause\n\n public Status Cause { get; set; }\n\nThe error that resulted in this change, if applicable.\n\n### ReadTime\n\n public Timestamp ReadTime { get; set; }\n\nThe consistent `read_time` for the given `target_ids` (omitted when the\ntarget_ids are not at a consistent snapshot).\n\nThe stream is guaranteed to send a `read_time` with `target_ids` empty\nwhenever the entire stream reaches a new consistent snapshot. ADD,\nCURRENT, and RESET messages are guaranteed to (eventually) result in a\nnew consistent snapshot (while NO_CHANGE and REMOVE messages are not).\n\nFor a given stream, `read_time` is guaranteed to be monotonically\nincreasing.\n\n### ResumeToken\n\n public ByteString ResumeToken { get; set; }\n\nA token that can be used to resume the stream for the given `target_ids`,\nor all targets if `target_ids` is empty.\n\nNot set on every target change.\n\n### TargetChangeType\n\n public TargetChange.Types.TargetChangeType TargetChangeType { get; set; }\n\nThe type of change that occurred.\n\n### TargetIds\n\n public RepeatedField\u003cint\u003e TargetIds { get; }\n\nThe target IDs of targets that have changed.\n\nIf empty, the change applies to all targets.\n\nThe order of the target IDs is not defined."]]