importSchema
Uploads a file that defines the new schema for the container.
Declaration
CancellablePromise importSchema(
ImportSchemaParams params
);Parameters
- params:
A dictionary as described in the Discussion section.
Return Value
A CancellablePromise with the following resolutions.
Discussion
If the promise is successful, it will resolve with one of the following dictionaries:
{ statusCode: 202 }
The promise may reject and throw the following:
DocumentedResponseError, if the HTTP status code is 421. The result member will be a dictionary conforming to AuthenticationRequiredError.DocumentedResponseError, if the HTTP status code is none of the above and in the range 400 to 599. The result member will be a dictionary conforming to RequestError.ValidationError, if the parameters to the method are incorrect.A
FetchErrordescendant, if there is a problem with the network request. A reference to the request object can be used to examine the underlying cause.
Discussion
The params dictionary has the following properties:
dictionary ImportSchemaParams {
File file;
string teamId;
string containerId;
CKEnvironment environment;
}file:teamId: The team identifier. You can find your team identifier in the Membership tab of the Apple Developer portal athttps://developer.apple.com.containerId: The container identifier. SeeContainer.environment: The container environment. For valid values, seeCKEnvironment.
Changes the container’s schema using the uploaded text file for the environment specified. If the operation completes successfully, the server returns a success response. The text you provide in the file object must be in CloudKit Schema Language. To learn more about CloudKit Schema Language, see https://developer.apple.com/documentation/cloudkit/integrating_a_text-based_schema_into_your_workflow. Note that in most cases, you use CKEnvironment.DEVELOPMENT as the environment. Related: exportSchema, validateSchema.
Node.js example:
import { CKEnvironment, PromisesApi } from "@apple/cktool.database";
import { File, createConfiguration } from "@apple/cktool.target.nodejs";
import fs from "fs/promises";
try {
const api = new PromisesApi({
configuration: createConfiguration(),
security: {
// You can obtain a management token from the
// Database section of CloudKit Console.
"ManagementTokenAuth": "YOUR_MANAGEMENT_TOKEN"
},
});
console.log(`Uploading schema...`);
// Read a schema file from the file system
const srcPath = path.join(__dirname, "sample.CKDB");
const buffer = await fs.readFile(srcPath);
// Wrap in a File object.
const file = new File([buffer], "sample.CKDB");
// Apply the schema to the sandbox.
await api.importSchema({
teamId: "YOUR_TEAM_ID",
containerId: "YOUR_CONTAINER_ID",
environment: CKEnvironment.DEVELOPMENT,
file,
});
console.log(`Schema uploaded successfully`);
} catch(ex) {
// Handle error
}