Appearance
Packaging API (REST and gRPC)
Use this API to deploy indexing and job plugins packaged as ZIP archives.
Endpoints
| Method | Path | Purpose | Rights |
|---|---|---|---|
GET | /package | List deployed packages | Read or Admin |
GET | /package/{type} | List Job or Indexing packages | Read or Admin |
GET | /package/capability/{id} | Read a package's capabilities by ULID | Read or Admin |
POST | /package | Deploy or update a ZIP package | Write or Admin |
DELETE | /package/{id} | Undeploy a package by ULID; returns taskId | Write 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.zipA 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:
| Value | Name |
|---|---|
| 0 | None |
| 1 | InstallationFailed |
| 2 | InstallationSucceed |
| 3 | UpdateFailed |
| 4 | UpdatedSucceed |
| 5 | DeleteFailed |
| 6 | DeleteSucceed |
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