Problem:
This specification (and the CSV spec) simply define IDs as "up to 32 character strings".
This is problematic because:
ID collisions across systems if an auto-incrementing database ID are used.
"Collisions" here mean two rows could end up with the same ID if data is pushed from two different systems.
Some systems may decided to put PII into the IDs (like "LastName SS#") since there's no guidance NOT to do this. This will likely leak PII into logs since API requests put IDs into the URLs.
Proposal:
Define the ID to be a UUID. Without the - characters, it is exactly 32 characters long (128 bits).
Possibly add an opaque "ExternalID" field to all individual models that have an ID. This is like a cookie and can be used by syncing to re-associate data.
Issues with this proposal:
Existing data may already have IDs, remapping them is problematic. (ExternalID may help here)
Problem: This specification (and the CSV spec) simply define IDs as "up to 32 character strings".
This is problematic because:
Proposal:
-
characters, it is exactly 32 characters long (128 bits).Issues with this proposal:
ExternalID
may help here)NOTES