Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement transient traits and identities #4278

Closed
khvn26 opened this issue Jul 3, 2024 · 5 comments
Closed

Implement transient traits and identities #4278

khvn26 opened this issue Jul 3, 2024 · 5 comments
Assignees
Labels
api Issue related to the REST API edge-api Related to edge.api.flagsmith.com sdk Issues related to the SDKs

Comments

@khvn26
Copy link
Member

khvn26 commented Jul 3, 2024

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:

  1. Evaluate flags against identities without persisting them.
  2. Evaluate flags against identities while persisting only a subset of identity traits.

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 and transientTraits: list[str] optional keywords for the getIdentityFlags interface.

Related issues and discussions

Customer requests and use case discussions:

API tasks:

SDK tasks:

@khvn26 khvn26 added api Issue related to the REST API sdk Issues related to the SDKs edge-api Related to edge.api.flagsmith.com labels Jul 3, 2024
@novakzaballa
Copy link
Contributor

@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.

@novakzaballa
Copy link
Contributor

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.

@khvn26
Copy link
Member Author

khvn26 commented Jul 4, 2024

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.

@novakzaballa
Copy link
Contributor

Agreed @khvn26

@khvn26
Copy link
Member Author

khvn26 commented Jul 24, 2024

As discussed here and offline, we're choosing to leave out the additional parameter in favour of extending the trait_value parameter type. In addition to current TraitValue | null type, the parameter should accept a mapping/object:

{
   transient: boolean
   value: TraitValue
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Issue related to the REST API edge-api Related to edge.api.flagsmith.com sdk Issues related to the SDKs
Projects
None yet
Development

No branches or pull requests

4 participants