@collective-intelligence/external-apps-server-sdk 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -387,6 +387,8 @@ export type ResourceCapabilities = Readonly<{
387
387
  search: true;
388
388
  softDelete?: boolean;
389
389
  update?: boolean;
390
+ /** File uploads for the File fields of a common entity resource. */
391
+ upload?: boolean;
390
392
  }>;
391
393
  export type ResourcePaginationMode = "cursor" | "page";
392
394
  export type PortableResourceSchema = Readonly<Record<string, ResourceJsonValue>>;
@@ -458,7 +460,9 @@ export type ResourceListQuery = Readonly<{
458
460
  sort?: readonly ResourceSort[];
459
461
  textSearch?: string;
460
462
  }>;
461
- export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable";
463
+ export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable" |
464
+ /** The CI Organization storage can not take a presigned File upload. */
465
+ "upload_not_supported";
462
466
  export type ResourceError = Readonly<{
463
467
  code: ResourceErrorCode;
464
468
  /** Client-observed dispatch outcome; uncertainty never proves rollback. */
@@ -28,6 +28,8 @@ export type ResourceCapabilities = Readonly<{
28
28
  search: true;
29
29
  softDelete?: boolean;
30
30
  update?: boolean;
31
+ /** File uploads for the File fields of a common entity resource. */
32
+ upload?: boolean;
31
33
  }>;
32
34
  export type ResourcePaginationMode = "cursor" | "page";
33
35
  export type PortableResourceSchema = Readonly<Record<string, ResourceJsonValue>>;
@@ -117,7 +119,9 @@ export type ResourceListResult<Entity> = Readonly<{
117
119
  totalItems: number;
118
120
  totalPages: number;
119
121
  }>;
120
- export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable";
122
+ export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable" |
123
+ /** The CI Organization storage can not take a presigned File upload. */
124
+ "upload_not_supported";
121
125
  export type ResourceError = Readonly<{
122
126
  code: ResourceErrorCode;
123
127
  /** Client-observed dispatch outcome; uncertainty never proves rollback. */
@@ -189,7 +193,7 @@ export type ResourceCreateInput<Value> = Readonly<{
189
193
  value: Value;
190
194
  }>;
191
195
  /** Common entity operations. Generic resource lifecycle/cursor APIs remain separate. */
192
- export type EntityOperation = "list" | "get" | "create" | "update" | "delete";
196
+ export type EntityOperation = "list" | "get" | "create" | "update" | "delete" | "upload";
193
197
  export type EntityListQuery = Omit<ResourceListQuery, "pagination" | "includeDeleted"> & Readonly<{
194
198
  pagination: Extract<ResourcePagination, {
195
199
  mode: "page";
@@ -205,6 +209,19 @@ export type EntityUpdateInput<Patch> = ResourceMutationInput<Patch> & Readonly<{
205
209
  export type EntityDeleteInput = ResourceLifecycleInput & Readonly<{
206
210
  idempotencyKey: IdempotencyKey;
207
211
  }>;
212
+ /** A File upload request for one File field of the entity schema. */
213
+ export type EntityUploadInput = Readonly<{
214
+ field: string;
215
+ filename: string;
216
+ mimeType: string;
217
+ }>;
218
+ /** PUT the file bytes to `url` with `headers`; then write `{ upload: uploadId }`. */
219
+ export type EntityUploadSlot = Readonly<{
220
+ headers: Readonly<Record<string, string>>;
221
+ method: "PUT";
222
+ uploadId: string;
223
+ url: string;
224
+ }>;
208
225
  export type EntityRequestIdentity = Readonly<{
209
226
  requestId: string;
210
227
  resourceId: string;
@@ -221,7 +238,10 @@ export type EntityRequest<Create = unknown, Patch = unknown> = EntityRequestIden
221
238
  operation: "update";
222
239
  }> & EntityUpdateInput<Patch>) | (Readonly<{
223
240
  operation: "delete";
224
- }> & EntityDeleteInput));
241
+ }> & EntityDeleteInput) | (Readonly<{
242
+ operation: "upload";
243
+ }> & EntityUploadInput));
244
+ export type EntityOperationResult<Value, Operation extends EntityOperation> = Operation extends "list" ? EntityPage<Value> : Operation extends "upload" ? EntityUploadSlot : ResourceRecord<Value>;
225
245
  /** Application login identities are separate from gateway machine callers. */
226
246
  export type ApplicationUserIdentity = Readonly<{
227
247
  kind: "local_user";
@@ -294,7 +314,7 @@ export type EntityResourceDefinition<Value = unknown, Create = Value, Patch = Pa
294
314
  definition: ResourceDefinition<Value, Create, Patch>;
295
315
  execute: (request: EntityRequest<Create, Patch>, context: EntityInvocationContext, options?: Readonly<{
296
316
  signal?: AbortSignal;
297
- }>) => Promise<ResourceResult<EntityPage<Value> | ResourceRecord<Value>>>;
317
+ }>) => Promise<ResourceResult<EntityOperationResult<Value, EntityOperation>>>;
298
318
  }>;
299
319
  export type GatewayResourceOperation = ResourceTransportRequest["operation"];
300
320
  export type GatewayResourceAuthorization = Readonly<Partial<Record<GatewayResourceOperation, AuthorizationRequirement>>>;