/// <summary> /// Builds a SCHEMA ledger request to store a schema. /// </summary> /// <remarks> /// <para> /// Builds a request message that is suitable for storing a schema on a /// ledger. Schema specify the data types and formats which are used to make up claims. /// </para> /// <para> /// The <paramref name="data"/> parameter must contain a JSON string with the members "name", /// "version" and "attr_names" that define the schema. For example the following JSON describes /// a schema with the name "access" that is version 1.0 of the schema and specifies the attributes /// "ip", "port", and "keys": /// <code> /// { /// "name":"access", /// "version":"1.0", /// "attr_names":["ip","port","keys"] /// } /// </code> /// </para> /// </remarks> /// <param name="submitterDid">The DID of the submitter.</param> /// <param name="data">The JSON schema.</param> /// <returns>An asynchronous <see cref="Task{T}"/> that resolves to a <see cref="string"/> /// containing the request JSON. </returns> public static Task <string> BuildSchemaRequestAsync(string submitterDid, string data) { var taskCompletionSource = new TaskCompletionSource <string>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var result = IndyNativeMethods.indy_build_schema_request( commandHandle, submitterDid, data, _buildRequestCallback ); CallbackHelper.CheckResult(result); return(taskCompletionSource.Task); }