This package provides typed option classes that correspond to the TypeScript interfaces in the JavaScript/TypeScript client. These classes provide better type safety and IDE support compared to using Map<String, Object>.
Used for time-based operations with finaltime and slidingtime parameters.
BasicOptions options = BasicOptions.builder()
.finaltime("100d")
.slidingtime("30d")
.build();Used for user creation and management with group, role, and time parameters.
UserOptions options = UserOptions.builder()
.groupname("premium")
.groupid(123) // Alternative to groupname
.rolename("user")
.roleid(456) // Alternative to rolename
.finaltime("100d")
.slidingtime("30d")
.build();Used for creating shared records with field specifications and partner information.
SharedRecordOptions options = SharedRecordOptions.builder()
.fields("name,email,phone")
.partner("partner-org")
.appname("myapp")
.finaltime("7d")
.build();Used for creating legal basis records with comprehensive legal information.
LegalBasisOptions options = LegalBasisOptions.builder()
.brief("marketing-consent")
.status("active")
.module("marketing")
.fulldesc("Consent for marketing communications")
.shortdesc("Marketing consent")
.basistype("consent")
.requiredmsg("You must accept marketing communications")
.requiredflag(true)
.build();Used for updating legal basis records.
LegalBasisUpdateOptions options = LegalBasisUpdateOptions.builder()
.status("inactive")
.module("marketing")
.fulldesc("Updated consent description")
.requiredflag(false)
.build();Used for accepting agreements with detailed acceptance information.
AgreementAcceptOptions options = AgreementAcceptOptions.builder()
.agreementmethod("web-form")
.referencecode("REF123")
.starttime("10d")
.finaltime("100d")
.status("active")
.lastmodifiedby("admin@company.com")
.build();Used for creating and managing tenants.
TenantOptions options = TenantOptions.builder()
.tenantname("my-tenant")
.tenantorg("My Organization")
.email("admin@myorg.com")
.build();Used for creating processing activities.
ProcessingActivityOptions options = ProcessingActivityOptions.builder()
.activity("data-processing")
.title("Data Processing Activity")
.script("process_data.js")
.fulldesc("Process user data for analytics")
.applicableto("users")
.build();Used for updating processing activities.
ProcessingActivityUpdateOptions options = ProcessingActivityUpdateOptions.builder()
.newactivity("updated-processing")
.title("Updated Processing Activity")
.script("updated_process_data.js")
.fulldesc("Updated process description")
.applicableto("all-users")
.build();Used for creating and managing groups.
GroupOptions options = GroupOptions.builder()
.groupname("premium-users")
.grouptype("user-group")
.groupdesc("Premium user group")
.build();Used for creating and managing roles.
RoleOptions options = RoleOptions.builder()
.rolename("admin")
.roledesc("Administrator role")
.build();Used for creating tokens with time-based parameters.
TokenOptions options = TokenOptions.builder()
.unique(true)
.slidingtime("1h")
.finaltime("24h")
.build();Used for creating and managing policies.
Map<String, Object> policyData = new HashMap<>();
policyData.put("retention_days", 365);
policyData.put("auto_delete", true);
PolicyOptions options = PolicyOptions.builder()
.policyname("data-retention")
.policydesc("Data retention policy")
.policy(policyData)
.build();Map<String, Object> profile = new HashMap<>();
profile.put("email", "user@example.com");
profile.put("name", "John Doe");
UserOptions options = UserOptions.builder()
.groupname("premium")
.finaltime("100d")
.build();
Map<String, Object> result = api.createUser(profile, options, null);BasicOptions tokenOptions = BasicOptions.builder()
.finaltime("24h")
.slidingtime("1h")
.build();
// For user tokens (matches TypeScript: createUserXToken(mode, identity, options))
Map<String, Object> userToken = api.createUserXToken("email", "user@example.com", tokenOptions, null);
// For role tokens (matches TypeScript: createRoleXToken(roleref, options))
Map<String, Object> roleToken = api.createRoleXToken("admin", tokenOptions, null);SharedRecordOptions sharedOptions = SharedRecordOptions.builder()
.fields("name,email")
.partner("partner-org")
.finaltime("7d")
.build();
Map<String, Object> sharedRecord = api.createSharedRecord("email", "user@example.com", sharedOptions, null);LegalBasisOptions options = LegalBasisOptions.builder()
.brief("marketing-consent")
.status("active")
.module("marketing")
.fulldesc("Consent for marketing communications")
.shortdesc("Marketing consent")
.basistype("consent")
.requiredmsg("You must accept marketing communications")
.requiredflag(true)
.build();
Map<String, Object> legalBasis = api.createLegalBasis(options, null);LegalBasisUpdateOptions options = LegalBasisUpdateOptions.builder()
.status("inactive")
.module("marketing")
.fulldesc("Updated consent description")
.requiredflag(false)
.build();
Map<String, Object> updatedBasis = api.updateLegalBasis("marketing-consent", options, null);AgreementAcceptOptions options = AgreementAcceptOptions.builder()
.agreementmethod("web-form")
.referencecode("REF123")
.starttime("10d")
.finaltime("100d")
.status("active")
.lastmodifiedby("admin@company.com")
.build();
Map<String, Object> agreement = api.acceptAgreement("email", "user@example.com", "marketing-consent", options, null);ProcessingActivityOptions options = ProcessingActivityOptions.builder()
.activity("data-processing")
.title("Data Processing Activity")
.script("process_data.js")
.fulldesc("Process user data for analytics")
.applicableto("users")
.build();
Map<String, Object> activity = api.createProcessingActivity(options, null);ProcessingActivityUpdateOptions options = ProcessingActivityUpdateOptions.builder()
.newactivity("updated-processing")
.title("Updated Processing Activity")
.script("updated_process_data.js")
.fulldesc("Updated process description")
.applicableto("all-users")
.build();
Map<String, Object> updatedActivity = api.updateProcessingActivity("data-processing", options, null);GroupOptions options = GroupOptions.builder()
.groupname("premium-users")
.grouptype("user-group")
.groupdesc("Premium user group")
.build();
Map<String, Object> group = api.createGroup(options, null);RoleOptions options = RoleOptions.builder()
.rolename("admin")
.roledesc("Administrator role")
.build();
Map<String, Object> role = api.createRole(options, null);TokenOptions options = TokenOptions.builder()
.unique(true)
.slidingtime("1h")
.finaltime("24h")
.build();
Map<String, Object> token = api.createToken("credit-card", "4111111111111111", options, null);Map<String, Object> policyData = new HashMap<>();
policyData.put("retention_days", 365);
policyData.put("auto_delete", true);
PolicyOptions options = PolicyOptions.builder()
.policyname("data-retention")
.policydesc("Data retention policy")
.policy(policyData)
.build();
Map<String, Object> policy = api.createPolicy(options, null);TenantOptions options = TenantOptions.builder()
.tenantname("my-tenant")
.tenantorg("My Organization")
.email("admin@myorg.com")
.build();
Map<String, Object> tenant = api.createTenant(options, null);- Type Safety: Compile-time checking of option parameters
- IDE Support: Better autocomplete and refactoring support
- Documentation: Self-documenting code with clear field names
- Validation: Can add validation annotations in the future
- Maintainability: Easier to maintain and extend
All existing methods that accept Map<String, Object> continue to work. The new typed option classes are provided as overloaded methods, so you can gradually migrate your code to use the typed options.
The OptionsConverter utility class provides methods to convert typed options to Map<String, Object> for backward compatibility:
Map<String, Object> mapOptions = OptionsConverter.toMap(userOptions);Additional option classes can be added for:
- LegalBasisOptions
- ProcessingActivityOptions
- TenantOptions
- GroupOptions
- RoleOptions
- TokenOptions
- PolicyOptions
- SessionOptions
These would follow the same pattern as the existing option classes.