Technical note: Integer sizes and the XML API
Just dropping a quick note on integer sizes with regard to the XML API access masks. The addition of the clones endpoint and it's associated access mask to the XML API has increased the maximum possible value of the API access mask from 2,147,483,647 to 4,294,967,295. These values are significant. When using a 32 bit integer to store a value, there are two possible ranges that the integer can be set to.
An unsigned int32 cannot be used to represent negative numbers, and has a range of values (0->4,294,967,295).
A signed int32 can be used to represent negative numbers, and although the magnitude of it's range is the same, it's range is evenly distributed between positive and negative values, and is thus (-2,147,483,647->2,147,483,647).
Until now, this hasn't mattered for the XML API. The maximum possible access mask value has always been lower than or equal to the maximum possible positive value of either type, so you could use either one. However, the maximum possible value is now larger than a signed int32 can hold. If you are using signed int32's in your application, it may error on some access masks. Please note that because the XML API does not use negative numbers as access masks, it is best practice at this time to use a 64 bit unsigned integer (range: 0->18,446,744,073,709,551,615) or larger for access masks, as we may add more access masks in the future.