FLEDGE has been renamed to Protected Audience API. To learn more about the name change, see the blog post
The server starts with a simple pass-through implementation at public/udf/constants.h
.
UDF configurations can be updated as the server is running using delta/snapshot files as per the data loading guide.
-
To override an existing UDF, the delta/snapshot file must have a
DataRecord
with aUserDefinedFunctionsConfig
. -
Similar to a
KeyValueMutationRecord
, theUserDefinedFunctionsConfig
has alogical_commit_time
. The UDF will only be updated for configs with a higherlogical_commit_time
than the existing one. The minimumlogical_commit_time
is 1.
Please read through the UDF explainer for more requirements and APIs.
Write the UDF according to the API in the UDF explainer.
Note that the UDF should be in JavaScript (and optionally JavaScript + inline WASM).
We provide a simple reference implementation:
- The implementation ignores part of the request, e.g. the
metadata
field. - For each
keyGroup
in the request, it callsgetValues(keyGroup)
to retrieve the keys from the internal cache and returns the key-value pairs in its response.
Tools to generate UDF delta files and test them are in the tools/udf
directory.
-
Build the executables:
-$ builders/tools/bazel-debian build -c opt //tools/udf/udf_generator:udf_delta_file_generator
-
Generate a UDF delta file using the
bazel-bin/tools/udf/udf_generator/udf_delta_file_generator
executable.Flags:
--udf_handler_name
— UDF handler name/entry point--output_dir
— output directory for the generated delta file--udf_file_path
— path to the UDF JavaScript file--logical_commit_time
— logical commit time of the UDF config--code_snippet_version
— UDF version. For telemetry, should be > 1.
Example:
-$ bazel-bin/tools/udf/udf_generator/udf_delta_file_generator --output_dir="$PWD" --udf_file_path="path/to/my/udf/udf.js"
You can use other options to generate delta files, e.g. using the
data_cli
tool.
The delta file must have a DataRecord
with a UserDefinedFunctionsConfig
as its record.
A sample UDF JavaScript file is located under the tools/udf/sample_udf
directory.
Test the generated UDF delta file using the UDF Delta file tester.
Generally, the delta/snapshot file just needs to be included in delta storage/bucket. Follow the different deployment guides on how to configure your delta file storage.
The UDF will be executed for the V2 API.