Open khvn26 opened 2 weeks ago
@khvn26 I understand that we should implement transient traits because it is a quick and cost-effective way to cover some of the use cases related to contexts. While it could also help with anonymous identities or other use cases, we should keep the scope restricted to transient traits since that is the reason we decided to move ahead with its implementation. Also, as mentioned in this Notion regarding Anonymous identities https://www.notion.so/flagsmith/Anonymous-identities-904943c595474ae3b792f935109fb6f6 I think that for most we should persist annonymous identities or at least offer that option for most of the real use cases.
Regarding the implementation, I would rather suggest to add a boolean attribute to the trait model, so you can specify and persist whether it is transient or not. That would allow customers to design the behavior of flags, and would allow transient flags without changes to the SDKs. We could also allow SDKs to request a trait to be marked as transient, but that would be optional.
I would rather suggest to add a boolean attribute to the trait model, so you can specify and persist whether it is transient or no
@novakzaballa I agree with this. However, not all SDKs expose the trait model; some, mainly the server-side ones, accept a simple string to value mapping instead. I suggest we use the transientTraits: list[str]
parameter for those and add a transient
boolean property to the Trait
model for SDKs that support them in their public interfaces.
Agreed @khvn26
Goal
To support additional use cases, such as evaluating identities in different contexts or managing anonymous identities, we aim to enable our SDK users to:
Solution Proposal
Make /api/v1/identities endpoints support optional boolean
"transient"
attributes both for the top-level identity object and a trait object.Don't persist identities and traits marked as transient.
In SDKs, support
transient: bool
andtransientTraits: list[str]
optional keywords for thegetIdentityFlags
interface.Related issues and discussions
Customer requests and use case discussions:
168, #77
1840, #1839
API tasks:
SDK tasks: