diff --git a/wrappers/obj-c/ODWPrivacyConcernEvent.h b/wrappers/obj-c/ODWPrivacyConcernEvent.h new file mode 100644 index 000000000..5e60d125c --- /dev/null +++ b/wrappers/obj-c/ODWPrivacyConcernEvent.h @@ -0,0 +1,111 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 +// +#include "objc_begin.h" + +NS_ASSUME_NONNULL_BEGIN + +/*! + @brief Represents a Privacy Concern Event. + This class is used to store and manage privacy concern event data including details + like the event name, server name, database name, and various other privacy-related + attributes. + */ +@interface PrivacyConcernEvent : NSObject + +/*! + @brief The name of the privacy concern event. + Used as a unique identifier for the event. Example: "PrivacyConcerns". + */ +@property (nonatomic, strong) NSString *PG_ConcernEventName; + +/*! + @brief The name of the server associated with the privacy concern event. + This field is optional and may be nil. + */ +@property (nonatomic, strong, nullable) NSString *PG_ServerName; + +/*! + @brief The name of the database associated with the privacy concern event. + This field is optional and may be nil. + */ +@property (nonatomic, strong, nullable) NSString *PG_DatabaseName; + +/*! + @brief The table name that contains privacy concern event data. + This field is mandatory and used to locate the specific data in a table. + */ +@property (nonatomic, strong) NSString *PG_TableName; + +/*! + @brief The column name in the table that stores the privacy concern data. + This field is mandatory and specifies which column to examine. + */ +@property (nonatomic, strong) NSString *PG_ColumnName; + +/*! + @brief The locator name to uniquely identify the row in the table containing the privacy concern. + This field is optional and can be nil if not needed. + */ +@property (nonatomic, strong, nullable) NSString *PG_EventLocatorName; + +/*! + @brief The locator value associated with the PG_EventLocatorName, which can uniquely identify + the specific row containing the privacy concern. + This field is optional and can be nil if not needed. + */ +@property (nonatomic, strong, nullable) NSString *PG_EventLocatorValue; + +/*! + @brief The timestamp of the privacy concern event. + This field is mandatory and represents the time the event occurred. + */ +@property (nonatomic, assign) int64_t PG_EventTime; + +/*! + @brief The type of privacy concern event as a string. + This field is mandatory and can describe the concern (e.g., "Sensitive Data Leak"). + */ +@property (nonatomic, strong) NSString *PG_ConcernTypeText; + +/*! + @brief Whether the privacy concern event should be ignored. + This boolean determines if the concern will be processed or ignored in reporting. + */ +@property (nonatomic, assign) BOOL PG_ShouldIgnore; + +/*! + @brief Indicates whether the data field is considered as a semantic context. + This boolean indicates if this concern applies universally to the table or to a subset of data. + */ +@property (nonatomic, assign) BOOL PG_IsContext; + +/*! + @brief Indicates whether the semantic context applies to all records or just a subset. + This boolean helps categorize whether the context is global or partial. + */ +@property (nonatomic, assign) BOOL PG_IsGlobalContext; + +/*! + @brief The tenant ID associated with the privacy concern event. + This field is optional and can be used to filter events based on tenant. + */ +@property (nonatomic, strong, nullable) NSString *PG_AssociatedTenant; + +/*! + @brief The environment or deployment ring for the service (e.g., "Production", "PPE"). + This field is optional and can specify the deployment context of the privacy concern. + */ +@property (nonatomic, strong, nullable) NSString *PG_Environment; + +/*! + @brief Additional metadata that can be attached to the privacy concern event. + This field is optional and allows for flexible extension of the event data. + */ +@property (nonatomic, strong, nullable) NSString *PG_Metadata; + +@end + +NS_ASSUME_NONNULL_END +#include "objc_end.h" diff --git a/wrappers/obj-c/ODWPrivacyConcernEvent.mm b/wrappers/obj-c/ODWPrivacyConcernEvent.mm new file mode 100644 index 000000000..e7e794fd3 --- /dev/null +++ b/wrappers/obj-c/ODWPrivacyConcernEvent.mm @@ -0,0 +1,13 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 +// +#import +#import "ODWPrivacyConcernEvent.h" + +/*! + @brief Represents a privacy concern event. + */ +@implementation ODWPrivacyConcernEvent : NSObject + +@end diff --git a/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.h b/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.h new file mode 100644 index 000000000..9e7b16344 --- /dev/null +++ b/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.h @@ -0,0 +1,80 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! + @brief Represents a metadata provider for privacy concern events. + */ +@interface ODWPrivacyConcernMetadataProvider : NSObject + +/*! + @brief Get the database name. + @param record The record for which to retrieve the database name. + @return A string representing the database name. + */ +- (NSString *)getDatabaseNameForRecord:(id)record; + +/*! + @brief Get the server name. + @param record The record for which to retrieve the server name. + @return A string representing the server name. + */ +- (NSString *)getServerNameForRecord:(id)record; + +/*! + @brief Get the event locator name. + @param record The record for which to retrieve the event locator name. + @return A string representing the event locator name. + */ +- (NSString *)getEventLocatorNameForRecord:(id)record; + +/*! + @brief Get the event locator value. + @param record The record for which to retrieve the event locator value. + @return A string representing the event locator value. + */ +- (NSString *)getEventLocatorValueForRecord:(id)record; + +/*! + @brief Get the override for the privacy guard event time. + @param record The record for which to retrieve the event time override. + @return An integer representing the event time override. + */ +- (int64_t)getPrivacyGuardEventTimeOverrideForRecord:(id)record; + +/*! + @brief Check if the record should be ignored. + @param record The record to check. + @return A boolean indicating whether the record should be ignored. + */ +- (BOOL)getShouldIgnoreOverrideForRecord:(id)record; + +/*! + @brief Get the associated tenant. + @param record The record for which to retrieve the associated tenant. + @return A string representing the associated tenant. + */ +- (NSString *)getAssociatedTenantForRecord:(id)record; + +/*! + @brief Get the environment. + @param record The record for which to retrieve the environment. + @return A string representing the environment. + */ +- (NSString *)getEnvironmentForRecord:(id)record; + +/*! + @brief Get the metadata. + @param record The record for which to retrieve the metadata. + @return A string representing the metadata. + */ +- (NSString *)getMetadataForRecord:(id)record; + +@end + +NS_ASSUME_NONNULL_END diff --git a/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.mm b/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.mm new file mode 100644 index 000000000..a8b40a64b --- /dev/null +++ b/wrappers/obj-c/ODWPrivacyConcernMetadataProvider.mm @@ -0,0 +1,51 @@ + +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 +// + +#import +#import "ODWPrivacyConcernMetadataProvider.h" + +/*! + @brief Represents a metadata provider for privacy concern events. + */ +@implementation ODWPrivacyConcernMetadataProvider : NSObject + +- (NSString *)getDatabaseNameForRecord:(id)record { + return @""; // Default implementation +} + +- (NSString *)getServerNameForRecord:(id)record { + return @""; // Default implementation +} + +- (NSString *)getEventLocatorNameForRecord:(id)record { + return @"BaseType"; // Default implementation +} + +- (NSString *)getEventLocatorValueForRecord:(id)record { + return [record baseType]; // Example assuming `record` has a `baseType` property +} + +- (int64_t)getPrivacyGuardEventTimeOverrideForRecord:(id)record { + return [record time]; // Example assuming `record` has a `time` property +} + +- (BOOL)getShouldIgnoreOverrideForRecord:(id)record { + return NO; // Default implementation +} + +- (NSString *)getAssociatedTenantForRecord:(id)record { + return [record iKey]; // Example assuming `record` has an `iKey` property +} + +- (NSString *)getEnvironmentForRecord:(id)record { + return @""; // Default implementation +} + +- (NSString *)getMetadataForRecord:(id)record { + return @""; // Default implementation +} + +@end diff --git a/wrappers/obj-c/ODWPrivacyGuardInitConfig.h b/wrappers/obj-c/ODWPrivacyGuardInitConfig.h index be6261eed..f57986e16 100644 --- a/wrappers/obj-c/ODWPrivacyGuardInitConfig.h +++ b/wrappers/obj-c/ODWPrivacyGuardInitConfig.h @@ -24,6 +24,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property(readwrite, copy, nonatomic) NSString* semanticContextNotificationEventName; +/*! + @brief (OPTIONAL) Privacy Concern Event metadata provider to use with privacyguard. + */ +@property(readwrite, copy, nonatomic) ODWPrivacyConcernMetadataProvider* metadataProvider; + /*! @brief (OPTIONAL) Custom event name to use when logging summary events. Default value is `PrivacyGuardSummary`. */ diff --git a/wrappers/obj-c/OneDsCppSdk.h b/wrappers/obj-c/OneDsCppSdk.h index 51eff5b9c..b9e42e184 100644 --- a/wrappers/obj-c/OneDsCppSdk.h +++ b/wrappers/obj-c/OneDsCppSdk.h @@ -11,6 +11,7 @@ #import "ODWLogConfiguration.h" #import "ODWLogger.h" #import "ODWLogManager.h" +#import "ODWPrivacyConcernEvent.h" #import "ODWPrivacyGuard.h" #import "ODWSemanticContext.h"