This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/master by this push:
     new a6c081c97 UNOMI-686 Profile alias documentation (#529)
a6c081c97 is described below

commit a6c081c975e46908dbc22cefe857ab3c92d82e4a
Author: Serge Huber <[email protected]>
AuthorDate: Mon Nov 7 14:46:03 2022 +0100

    UNOMI-686 Profile alias documentation (#529)
    
    - Added new recipe about profile aliases to explain what they are and how 
to use them
    - Added data model reference documentation
---
 manual/src/main/asciidoc/datamodel.adoc            |  34 ++++++++++++
 .../main/asciidoc/images/profile-alias-example.png | Bin 0 -> 29130 bytes
 .../asciidoc/images/profile-alias-external-ids.png | Bin 0 -> 18239 bytes
 .../asciidoc/images/profile-alias-overview.png     | Bin 0 -> 10654 bytes
 manual/src/main/asciidoc/recipes.adoc              |  58 +++++++++++++++++++++
 manual/src/main/asciidoc/whats-new.adoc            |   2 +-
 6 files changed, 93 insertions(+), 1 deletion(-)

diff --git a/manual/src/main/asciidoc/datamodel.adoc 
b/manual/src/main/asciidoc/datamodel.adoc
index c4ac43a79..e45748f47 100755
--- a/manual/src/main/asciidoc/datamodel.adoc
+++ b/manual/src/main/asciidoc/datamodel.adoc
@@ -370,6 +370,40 @@ image::profile.png[]
 }
 ----
 
+=== Profile aliases
+
+Profile aliases make it possible to reference profiles using multiple 
identifiers.
+The profile alias object basically contains a link between the alias ID and 
the profile ID. The `itemId` of a profile alias is the actual alias ID, which 
the `profileID` field contains the reference to the aliased profile.
+
+==== Structure definition
+
+Inherits all the fields from: <<Item>>
+
+|===
+| *Field name* | *Type* | *Description*
+
+| profileID | String | The identifier of the profile this aliases points to
+
+| creationTime | DateTime | The date and time of creation of the alias
+
+| modifiedTime | DateTime | The date and time of last modification of the alias
+
+|===
+
+==== Example
+
+In the following example we show an alias ID `facebook_johndoe` for the 
profile with ID `f72242d2-3145-43b1-8be7-d1d47cf4ad0e`
+
+[source,json]
+----
+    {
+      "profileID": "f72242d2-3145-43b1-8be7-d1d47cf4ad0e",
+      "itemId" : "facebook_johndoe",
+      "creationTime" : "2022-09-16T19:23:51Z",
+      "modifiedTime" : "2022-09-16T19:23:51Z"
+    }
+----
+
 === Persona
 
 A persona is a specialized version of a <<Profile>> object. It basically 
represents a "typical" profile and can be used
diff --git a/manual/src/main/asciidoc/images/profile-alias-example.png 
b/manual/src/main/asciidoc/images/profile-alias-example.png
new file mode 100644
index 000000000..aa418513a
Binary files /dev/null and 
b/manual/src/main/asciidoc/images/profile-alias-example.png differ
diff --git a/manual/src/main/asciidoc/images/profile-alias-external-ids.png 
b/manual/src/main/asciidoc/images/profile-alias-external-ids.png
new file mode 100644
index 000000000..6e20e56b5
Binary files /dev/null and 
b/manual/src/main/asciidoc/images/profile-alias-external-ids.png differ
diff --git a/manual/src/main/asciidoc/images/profile-alias-overview.png 
b/manual/src/main/asciidoc/images/profile-alias-overview.png
new file mode 100644
index 000000000..db41defdf
Binary files /dev/null and 
b/manual/src/main/asciidoc/images/profile-alias-overview.png differ
diff --git a/manual/src/main/asciidoc/recipes.adoc 
b/manual/src/main/asciidoc/recipes.adoc
index a074ebce1..592c31db9 100644
--- a/manual/src/main/asciidoc/recipes.adoc
+++ b/manual/src/main/asciidoc/recipes.adoc
@@ -488,3 +488,61 @@ upon successful login using an email, Unomi will look for 
other profiles that ha
 a single profile. Because of the merge, this should only be done for 
authenticated profiles, otherwise this could be a
 security issue since it could be a way to load data from other profiles by 
merging their data !
 
+==== What profile aliases are and how to use them
+
+Profile aliases make it possible to reference profiles using multiple 
identifiers.
+The profile alias object basically contains a link between the alias ID and 
the profile ID. The `itemId` of a profile alias is the actual alias ID, which 
the `profileID` field contains the reference to the aliased profile.
+
+===== What they are
+
+image::profile-alias-overview.png[Profile alias overview]
+
+Profile aliases:
+
+- Make it possible to lookup profiles by main (Unomi) ID or by any other alias 
ID
+- Aliases are just IDs stored in a dedicated index
+- A profile may have an unlimited number of aliases attached to it.
+
+===== How to use them
+
+image::profile-alias-external-ids.png[Profile with external IDs]
+
+Here are different use cases for profile aliases:
+
+- Connect different systems to Unomi such as a CRM, CMS and native mobile app 
that all have their own iD for a single customer
+- Merging profiles when a visitor is identified
+- Adding new IDs at a later time
+
+===== Example
+
+Here is an example of multiple external aliases pointing to a single Unomi 
profile
+
+image::profile-alias-example.png[Profile alias example]
+
+===== Interactions with merging
+
+Profile merges have been modified to use aliases starting Unomi 2
+
+Upon merge:
+
+- Properties are copied to the master profile as before
+- An alias is created for the "master" profile with the ID of the merged 
profile
+- Merged profiles are now deleted
+- "mergedWith" property is no longer used since we deleted the merged profiles
+
+===== API
+
+/context.json and /eventcollector will now look up profiles by profile ID or 
aliases from the same cookie (`context-profile-id`) or body parameters 
(`profileId`)
+
+|===
+| *Verb* | *Path* | *Description*
+
+| GET | /cxs/profiles/PROFILE_ID_OR_ALIAS | Retrieves a profile by ID or Alias 
ID (useful if an external system wants to get a profile)
+
+| GET | /cxs/profiles/PROFILE_ID/aliases | Get all the aliases for a profile
+
+| POST | /cxs/profiles/PROFILE_ID/aliases/ALIAS_ID | Add an alias to a profile
+
+| DELETE | /cxs/profiles/PROFILE_ID/aliases/ALIAS_ID | Remove an alias from a 
profile
+
+|===
diff --git a/manual/src/main/asciidoc/whats-new.adoc 
b/manual/src/main/asciidoc/whats-new.adoc
index 764309d59..7efb0e4ff 100644
--- a/manual/src/main/asciidoc/whats-new.adoc
+++ b/manual/src/main/asciidoc/whats-new.adoc
@@ -21,7 +21,7 @@ This new release also introduces a first (beta) version of 
the Unomi GraphQL API
 
 ==== Introducing profiles aliases
 
-Profiles may now have alias IDs, which is a new way to reference profiles 
using multiple IDs. The Unomi ID still exists, but a new index with aliases can 
reference a single Unomi profile. This enables more flexible integrations with 
external systems, as well as provide more flexible and reliable merging 
mechanisms. A new REST API makes it easy to define, update and remove aliases 
for profiles.
+Profiles may now have alias IDs, which is a new way to reference profiles 
using multiple IDs. The Unomi ID still exists, but a new index with aliases can 
reference a single Unomi profile. This enables more flexible integrations with 
external systems, as well as provide more flexible and reliable merging 
mechanisms. A new REST API makes it easy to define, update and remove aliases 
for profiles. You can read more about <<What profile aliases are and how to use 
them,profile aliases here>>.
 
 ==== Scopes declarations are now required
 

Reply via email to