From 4928337239f79fd25d1c723e21d66ba803489ba9 Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Fri, 6 Feb 2026 13:53:01 +1100 Subject: [PATCH 1/6] Remove "policy" field from JSON request --- uid2_client/token_generate_input.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/uid2_client/token_generate_input.py b/uid2_client/token_generate_input.py index 24f4181..419de7c 100644 --- a/uid2_client/token_generate_input.py +++ b/uid2_client/token_generate_input.py @@ -9,7 +9,6 @@ def __init__(self, identity_type, email_or_phone, need_hash, already_hashed): self.email_or_phone = email_or_phone self.need_hash = need_hash self.already_hashed = already_hashed - self.generate_for_opted_out = True self.transparency_and_consent_string = None @staticmethod @@ -36,9 +35,9 @@ def do_not_hash(self): self.need_hash = False return self - # Always use .do_not_generate_tokens_for_opted_out(), which applies policy=1. Support for policy=0 will be removed soon. def do_not_generate_tokens_for_opted_out(self): - self.generate_for_opted_out = False + # DEPRECATED: The optout_check param has been removed from /token/generate + # This method will be removed in a future version. return self def get_as_json_string(self): @@ -52,18 +51,16 @@ def get_as_json_string(self): def create_json_request_for_generate_token(self): property = "email" if self.identity_type == IdentityType.Email else "phone" return self._create_json_request_for_generate_token(property, self.email_or_phone, - self.transparency_and_consent_string, - self.generate_for_opted_out) + self.transparency_and_consent_string) @staticmethod - def _create_json_request_for_generate_token(property, value, tc_string, generate_for_opted_out): + def _create_json_request_for_generate_token(property, value, tc_string): json_object = { property: value } if tc_string is not None: json_object["tcf_consent_string"] = tc_string - if not generate_for_opted_out: - json_object["policy"] = 1 + return json.dumps(json_object) def create_hashed_json_request_for_generate_token(self): @@ -75,22 +72,18 @@ def create_hashed_json_request_for_generate_token(self): raise ValueError("invalid email address") hashed_normalized_email = get_base64_encoded_hash(normalized_email) return self._create_json_request_for_generate_token("email_hash", hashed_normalized_email, - self.transparency_and_consent_string, - self.generate_for_opted_out) + self.transparency_and_consent_string) else: # phone if not is_phone_number_normalized(self.email_or_phone): raise ValueError("phone number is not normalized") hashed_normalized_phone = get_base64_encoded_hash(self.email_or_phone) return self._create_json_request_for_generate_token("phone_hash", hashed_normalized_phone, - self.transparency_and_consent_string, - self.generate_for_opted_out) + self.transparency_and_consent_string) def create_already_hashed_json_request_for_generate_token(self): if self.identity_type == IdentityType.Email: return self._create_json_request_for_generate_token("email_hash", self.email_or_phone, - self.transparency_and_consent_string, - self.generate_for_opted_out) + self.transparency_and_consent_string) else: # phone return self._create_json_request_for_generate_token("phone_hash", self.email_or_phone, - self.transparency_and_consent_string, - self.generate_for_opted_out) + self.transparency_and_consent_string) From d2ed9edf436879fbf08edd9e5bcc3bcc950c58eb Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Fri, 6 Feb 2026 15:45:57 +1100 Subject: [PATCH 2/6] Update sample code --- examples/sample_token_generate_refresh.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/sample_token_generate_refresh.py b/examples/sample_token_generate_refresh.py index 1dc64d9..4086aee 100644 --- a/examples/sample_token_generate_refresh.py +++ b/examples/sample_token_generate_refresh.py @@ -21,8 +21,7 @@ def _usage(): print("Generating Token") try: - # Always use .do_not_generate_tokens_for_opted_out(), which applies policy=1. Support for policy=0 will be removed soon. - token_generate_response = publisher_client.generate_token(TokenGenerateInput.from_email("testpythonsdksampletokengenerate@email.com").do_not_generate_tokens_for_opted_out()) + token_generate_response = publisher_client.generate_token(TokenGenerateInput.from_email("testpythonsdksampletokengenerate@email.com")) except Exception as e: print(e) # decide how to handle exception From a20cce8d5e15d5a8b4f790a04cf6a7b9ce94b7ef Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Fri, 6 Feb 2026 15:46:46 +1100 Subject: [PATCH 3/6] Update comment --- uid2_client/token_generate_input.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uid2_client/token_generate_input.py b/uid2_client/token_generate_input.py index 419de7c..edb3be2 100644 --- a/uid2_client/token_generate_input.py +++ b/uid2_client/token_generate_input.py @@ -36,7 +36,7 @@ def do_not_hash(self): return self def do_not_generate_tokens_for_opted_out(self): - # DEPRECATED: The optout_check param has been removed from /token/generate + # DEPRECATED: The optout_check/policy param has been removed from /token/generate # This method will be removed in a future version. return self From cc1c8f1cbeef173c44ff3b803123d3efd961803c Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Mon, 9 Feb 2026 11:30:43 +1100 Subject: [PATCH 4/6] update tests for doc sample code --- tests/test_doc_sample_code.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_doc_sample_code.py b/tests/test_doc_sample_code.py index 9304439..18a3d02 100644 --- a/tests/test_doc_sample_code.py +++ b/tests/test_doc_sample_code.py @@ -49,14 +49,14 @@ def test_publisher_basic_usage_example(self): client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY) # Documentation sdk-ref-python.md Line 147: Generate token from email - token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com").do_not_generate_tokens_for_opted_out()) + token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com")) self.assertIsNotNone(token_generate_response) def test_publisher_client_server_integration_example(self): """Test Publisher client-server integration from documentation""" client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY) - token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com").do_not_generate_tokens_for_opted_out()) + token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com")) # Documentation sdk-ref-python.md Line 165: Get identity JSON string identity_json_string = token_generate_response.get_identity_json_string() @@ -66,7 +66,7 @@ def test_publisher_client_server_integration_example(self): def test_publisher_server_side_integration_example(self): """Test Publisher server-side integration from documentation""" client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY) - token_generate_response = client.generate_token(TokenGenerateInput.from_email(self.mapped_email).do_not_generate_tokens_for_opted_out()) + token_generate_response = client.generate_token(TokenGenerateInput.from_email(self.mapped_email)) # Documentation sdk-ref-python.md Line 176: Store identity JSON string identity_json_string = token_generate_response.get_identity_json_string() From 1cbb392367a099fa3927ef75c2ac6b15d459f7da Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Tue, 10 Feb 2026 15:12:31 +1100 Subject: [PATCH 5/6] Add typing-extensions to dependencies --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4e681a3..eacc33f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,8 @@ classifiers = [ requires-python = ">=3.8" dependencies = [ "pycryptodome", - "bitarray" + "bitarray", + "typing-extensions>=4.5.0" ] [project.optional-dependencies] From 31591d2fbe0a643f86a3586f8af61b7461d71714 Mon Sep 17 00:00:00 2001 From: sean wibisono Date: Tue, 10 Feb 2026 15:13:01 +1100 Subject: [PATCH 6/6] Mark do_not_generate_tokens_for_opted_out as deprecated --- uid2_client/token_generate_input.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uid2_client/token_generate_input.py b/uid2_client/token_generate_input.py index edb3be2..cd8f780 100644 --- a/uid2_client/token_generate_input.py +++ b/uid2_client/token_generate_input.py @@ -1,4 +1,5 @@ import json +from typing_extensions import deprecated from .identity_type import IdentityType from .input_util import * @@ -35,9 +36,8 @@ def do_not_hash(self): self.need_hash = False return self + @deprecated("The optout_check/policy parameter has been removed from /token/generate") def do_not_generate_tokens_for_opted_out(self): - # DEPRECATED: The optout_check/policy param has been removed from /token/generate - # This method will be removed in a future version. return self def get_as_json_string(self):