Skip to main content

iOS MeData Service

Functions

saveMeDataRecord

public func saveMeDataRecord(
name: String,
values: Any?,
onSuccess: @escaping () -> Void,
onError: ((Error) -> Void)? = nil
)

Saves a new MeData record for the specified definition.

Parameters:

  • name: String — MeData definition name.
  • values: Any? — Encoded record value(s), must match the definition’s value type.
  • onSuccess: () -> Void — Called when the record is saved successfully.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

syncMeDataDefinitions

public func syncMeDataDefinitions(
onSuccess: @escaping () -> Void,
onError: ((Error) -> Void)? = nil
)

Synchronizes all MeData definitions with the Orchestrator and updates local storage.

Parameters:

  • onSuccess: () -> Void — Called when synchronization completes.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getMeDataDefinitions

public func getMeDataDefinitions(
onSuccess: @escaping ([MeDataDefinition]) -> Void,
onError: ((Error) -> Void)? = nil
)

Retrieves all available MeData definitions from local storage.

Parameters:

  • onSuccess: ([MeDataDefinition]) -> Void — Called with the list of definitions.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getMeDataDefinition

public func getMeDataDefinition(
name: String,
onSuccess: @escaping (MeDataDefinition?) -> Void,
onError: ((Error) -> Void)? = nil
)

Retrieves a single MeData definition by its name.

Parameters:

  • name: String — MeData definition name.
  • onSuccess: (MeDataDefinition?) -> Void — Called with the definition or nil.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getMeDataCategories

public func getMeDataCategories(
onSuccess: @escaping ([MeDataCategory]?) -> Void,
onError: ((Error) -> Void)? = nil
)

Returns the list of MeData categories used for grouping and UI organization.

Parameters:

  • onSuccess: ([MeDataCategory]?) -> Void — Called with the category list or nil.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getMeDataDefinitionsByCategory

public func getMeDataDefinitionsByCategory(
name: String,
onSuccess: @escaping ([MeDataDefinition]?) -> Void,
onError: ((Error) -> Void)? = nil
)

Retrieves MeData definitions that belong to the specified category.

Parameters:

  • name: String — Category name.
  • onSuccess: ([MeDataDefinition]?) -> Void — Called with the definitions or nil.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getMeDataRecords

public func getMeDataRecords(
name: String,
onSuccess: @escaping ([MeDataRecord]?) -> Void,
onError: ((Error) -> Void)? = nil
)

Retrieves all recorded values for the given MeData definition.

Parameters:

  • name: String — MeData definition name.
  • onSuccess: ([MeDataRecord]?) -> Void — Called with the records or nil.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

getLastMeDataRecord

public func getLastMeDataRecord(
name: String,
onSuccess: @escaping (MeDataRecord?) -> Void,
onError: ((Error) -> Void)? = nil
)

Returns the most recent MeData record for the specified definition.

Parameters:

  • name: String — MeData definition name.
  • onSuccess: (MeDataRecord?) -> Void — Called with the latest record or nil.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

collectMeData

public func collectMeData(
meDataDefinitionNames: [String],
onSuccess: @escaping ([String: Any]) -> Void,
onError: ((Error) -> Void)? = nil
)

Collects the requested MeData items and returns a key–value map.

Parameters:

  • meDataDefinitionNames: [String] — List of MeData definition names to collect.
  • onSuccess: ([String: Any]) -> Void — Called with a map of definition name to collected value.
  • onError: ((Error) -> Void)? = nil — Called when an error occurs.

Classes

MeDataDefinition

public struct MeDataDefinition: Codable, Hashable {
public var id: String
public var name: String
public var text: String
public var source: String
public var script: Script?
public var valueDef: ValueDefinition?
public var category: MeDataCategory?
public var iconUrl: String?
public var description: String?
public var sharable: Bool? = false
public var hidden: Bool? = false
public var storageSettings: MeDataStorageSettings?
public var question: Question?
}

ValueDefinition

public struct ValueDefinition: Codable, Hashable {
public var type: String // DataType
public var constraints: ValueTypeConstraints?
public var multivalued: Bool?
public var multiValueConstraints: MultiValueConstraints?
public var enumerated: Bool?
public var enumeratedValues: [EnumeratedValue]?
public var enumeratedValueConstraints: EnumeratedValueConstraints?
}

ValueTypeConstraints

public struct ValueTypeConstraints: Codable, Hashable {
public var minValue: Int?
public var maxValue: Int?
public var regex: String?
public var allowCamera: Bool?
public var allowGallery: Bool?
}

MultiValueConstraints

public struct MultiValueConstraints: Codable, Hashable {
public var minValue: Int
public var maxValue: Int
}

EnumeratedValue

public struct EnumeratedValue: Codable, Hashable {
public var id: String?
public var text: String
public var name: String
public var description: String?
public var imageUrl: String?
}

EnumeratedValueConstraints

public struct EnumeratedValueConstraints: Codable, Hashable {
public var allowNone: Bool?
public var allowIdk: Bool?
public var allowNa: Bool?
public var allowOther: Bool?
}

MeDataCategory

public struct MeDataCategory: Codable, Hashable {
public var id: String
public var name: String
public var text: String
public var iconUrl: String?
public var description: String?
}

MeDataStorageSettings

public struct MeDataStorageSettings: Codable, Hashable {
public var onlyIfChanged: Bool?
public var longLimit: Int?
}

Question

public struct Question: Codable, Hashable {
public var id: String?
public var name: String
public var text: String
public var description: String?
public var imageUrl: String?
}

MeData

public struct MeData: Codable {
public var id: String
public var definitionName: String
public var firstValueSaveDate: Int64
public var lastValueSaveDate: Int64
public var lastValueId: String
public var records: [MeDataRecord]
}

MeDataRecord

public struct MeDataRecord: Codable {
public var id: String
public var meDataDefinitionId: String
public var notAvailable: Bool
public var date: Int64
public var values: [MeDataValue]
}

MeDataValue

public struct MeDataValue: Codable {
public var id: String
public var evName: String?
public var value: String
}

ValueTypeConstraints

public struct ValueTypeConstraints: Codable, Hashable {
var minValue: Int?
var maxValue: Int?
var regex: String?
var allowCamera: Bool?
var allowGallery: Bool?
}

DataType

public enum DataType: String, Codable {
case STRING
case NUMBER
case BOOLEAN
case DATETIME
case IMAGE
case VIDEO
case OBJECT
}

MeDataType

public enum MeDataType: String, Codable {
case NATIVE = "NATIVE"
case QA_BASED = "QA"
case API_BASED = "API_BASED"
case SCRIPTED = "SCRIPT"
case INFERRED = "INFERRED"
}