POST /identify routes serves two purposes: to give the caller an identifier for a person, and to manage people records based on the information given.
Note that at least one of
primary.user_id must be present in the request body, though any or all of them may be empty (e.g.
For each identifier (which is guaranteed to have at most one record associated with it), we will check to see if it corresponds to a known person record. After looking up each identifier:
- If no existing records are found, the route returns a new identifier that represents the beginning of this person's history.
- If one record is found, the route returns an identifier that represents that person.
- If more than one record is found, the route returns an identifier that represents the record with the highest priority according to the following chart:
In order to simplify the management of person records, this route also merges and updates person records according to the following logic:
After the aforementioned lookup on each identifier,
If no existing records were found, the route creates a new record with all of supplied identifiers in it.
If one record was found, the route will add any of the supplied identifiers that are empty in the found record to it. Note that currently it will NOT overwrite any identifiers that exist in that record, even if they are different.
If more than one record was found, the route will attempt to merge all records that were found based on lower priority identifiers per the above chart, into the record of highest priority. Any records that are merged into a new record will be aliased to that new record.