Skip to content

Packaging API (REST and gRPC) ​

Use this API to deploy indexing and job plugins packaged as ZIP archives.

Endpoints ​

MethodPathPurposeRights
GET/packageList deployed packagesRead or Admin
GET/package/{type}List Job or Indexing packagesRead or Admin
GET/package/capability/{id}Read a package's capabilities by ULIDRead or Admin
POST/packageDeploy or update a ZIP packageWrite or Admin
DELETE/package/{id}Undeploy a package by ULID; returns taskIdWrite or Admin

The gRPC PackageService.Deploy method provides the same upload operation with client streaming.

REST upload ​

Send the ZIP as the raw body, not a multipart form:

bash
curl --fail-with-body "$BLUECURVE_API_URL/package" \
  -H "x-api-key: $BLUECURVE_API_KEY" \
  -H 'api-version: 1.0' \
  -H 'Content-Type: application/zip' \
  --data-binary @my-plugin.zip

A handled deployment returns HTTP 200 with inspectionReport, deploymentStatus, and taskId. Inspect the report and deployment status before polling the task. Other responses include 400 for invalid input, 409 for a conflict, 413 for an oversized upload, 415 for an unsupported content type, and 500 for a processing failure.

gRPC upload ​

protobuf
service PackageService {
    rpc Deploy(stream DeployMessage) returns (DeployResult);
}

message DeployMessage {
    bytes Data = 1;
}

message DeployResult {
    int32 HttpStatus = 1;
    message PackageDeploymentResult {
        int32 Report = 1;
        int32 Status = 2;
        string TaskId = 3;
    }
    PackageDeploymentResult Response = 2;
}

Send ZIP bytes in Data chunks, then finish the request stream and await DeployResult. Package type, runtime, capabilities, and entry point come from manifest.json inside the archive. Send x-api-key as gRPC metadata.

Check gRPC transport errors separately from HttpStatus in the response. Response can be absent on failure; check it before reading its members.

Deployment result ​

Report is the numeric InspectionReport bitmask. Zero means no inspection flags. Status uses the package deployment enum:

ValueName
0None
1InstallationFailed
2InstallationSucceed
3UpdateFailed
4UpdatedSucceed
5DeleteFailed
6DeleteSucceed

These are package installation/update/deletion outcomes. Use TaskId with the Tasks API for the asynchronous task's Pending, Processing, Succeed, or Failed state.

Upload limits ​

Each gRPC data chunk may contain at most 64 KiB of ZIP bytes. The cumulative upload limit is configured for your deployment; request that limit from your administrator. Archive inspection separately limits the expanded size and number of entries.

Next: Search API