When you receive a file called Foo.bar and, at same point in the future, you receive another file called Foo.bar, which is basically the same file like the previous one but with some changes (be they linguistic or technical, like tags etc.), you want to make sure that you do not translate the file twice.
Oddjob assigns each file a property called AssetID during Import. AssetID is a string that is the same for all versions of one file. So our Foo.bar file gets assigned AssetID e.g. OJ100000007 and any subsequent version of Foo.bar will have the same AssetID OJ100000007. If you search for this AssetID, you will get a list of all Foo.bar versions with their corresponding metadata. What happens when Foo.bar version 1 is not yet translated and Oddjob receives Foo.bar version 2? The version 2 will become a Pending Asset and you get to decide whether you want to proceed with the update or you want to wait for the version 1 to be translated first. Once the version 2 is safe to be translated, call the Asset Pending Import action (GET /api/AssetsPending/{id}/Import) and version 2 becomes the active asset. Whether an asset is active or not is specified in the IsActive property. Only one version is active at a time. How does Oddjob know that Foo.bar is a version of Foo.bar and not a completely new Foo.bar file? Well, you have to tell Oddjob just that during the Import! It's all based on the StringAssetIdShouldBeGeneratedFrom property. In our example maybe our Foo.bar gets always received in a particular forlder structure (e.g. Foo/Bar/Foo.bar) so we can put that in the property. Another case might be an external identifier from the client - e.g a guid or id from their system that can tell us that Foo.bar and Foo.bar are modified versions of each other. If your client does not care about this functionality, just generate a random guid into this property - this will ensure that no versioning is applied.