@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.
@@ -26,6 +26,8 @@ export type ResourceCapabilities = Readonly<{
26
26
  search: true;
27
27
  softDelete?: boolean;
28
28
  update?: boolean;
29
+ /** File uploads for the File fields of a common entity resource. */
30
+ upload?: boolean;
29
31
  }>;
30
32
  export type ResourcePaginationMode = "cursor" | "page";
31
33
  export type PortableResourceSchema = Readonly<Record<string, ResourceJsonValue>>;
@@ -115,7 +117,9 @@ export type ResourceListResult<Entity> = Readonly<{
115
117
  totalItems: number;
116
118
  totalPages: number;
117
119
  }>;
118
- export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable";
120
+ export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable" |
121
+ /** The CI Organization storage can not take a presigned File upload. */
122
+ "upload_not_supported";
119
123
  export type ResourceError = Readonly<{
120
124
  code: ResourceErrorCode;
121
125
  /** Client-observed dispatch outcome; uncertainty never proves rollback. */
@@ -187,7 +191,7 @@ export type ResourceCreateInput<Value> = Readonly<{
187
191
  value: Value;
188
192
  }>;
189
193
  /** Common entity operations. Generic resource lifecycle/cursor APIs remain separate. */
190
- export type EntityOperation = "list" | "get" | "create" | "update" | "delete";
194
+ export type EntityOperation = "list" | "get" | "create" | "update" | "delete" | "upload";
191
195
  export type EntityListQuery = Omit<ResourceListQuery, "pagination" | "includeDeleted"> & Readonly<{
192
196
  pagination: Extract<ResourcePagination, {
193
197
  mode: "page";
@@ -203,6 +207,19 @@ export type EntityUpdateInput<Patch> = ResourceMutationInput<Patch> & Readonly<{
203
207
  export type EntityDeleteInput = ResourceLifecycleInput & Readonly<{
204
208
  idempotencyKey: IdempotencyKey;
205
209
  }>;
210
+ /** A File upload request for one File field of the entity schema. */
211
+ export type EntityUploadInput = Readonly<{
212
+ field: string;
213
+ filename: string;
214
+ mimeType: string;
215
+ }>;
216
+ /** PUT the file bytes to `url` with `headers`; then write `{ upload: uploadId }`. */
217
+ export type EntityUploadSlot = Readonly<{
218
+ headers: Readonly<Record<string, string>>;
219
+ method: "PUT";
220
+ uploadId: string;
221
+ url: string;
222
+ }>;
206
223
  export type EntityRequestIdentity = Readonly<{
207
224
  requestId: string;
208
225
  resourceId: string;
@@ -219,7 +236,10 @@ export type EntityRequest<Create = unknown, Patch = unknown> = EntityRequestIden
219
236
  operation: "update";
220
237
  }> & EntityUpdateInput<Patch>) | (Readonly<{
221
238
  operation: "delete";
222
- }> & EntityDeleteInput));
239
+ }> & EntityDeleteInput) | (Readonly<{
240
+ operation: "upload";
241
+ }> & EntityUploadInput));
242
+ export type EntityOperationResult<Value, Operation extends EntityOperation> = Operation extends "list" ? EntityPage<Value> : Operation extends "upload" ? EntityUploadSlot : ResourceRecord<Value>;
223
243
  /** Application login identities are separate from gateway machine callers. */
224
244
  export type ApplicationUserIdentity = Readonly<{
225
245
  kind: "local_user";
@@ -347,7 +367,7 @@ export type EntityResourceDefinition<Value = unknown, Create = Value, Patch = Pa
347
367
  definition: ResourceDefinition<Value, Create, Patch>;
348
368
  execute: (request: EntityRequest<Create, Patch>, context: EntityInvocationContext, options?: Readonly<{
349
369
  signal?: AbortSignal;
350
- }>) => Promise<ResourceResult<EntityPage<Value> | ResourceRecord<Value>>>;
370
+ }>) => Promise<ResourceResult<EntityOperationResult<Value, EntityOperation>>>;
351
371
  }>;
352
372
  export type GatewayResourceOperation = ResourceTransportRequest["operation"];
353
373
  export type GatewayResourceAuthorization = Readonly<Partial<Record<GatewayResourceOperation, AuthorizationRequirement>>>;
@@ -393,6 +413,8 @@ export type EntityHttpRoute = {
393
413
  } | {
394
414
  readonly kind: "soft_delete";
395
415
  readonly id: string;
416
+ } | {
417
+ readonly kind: "uploads";
396
418
  };
397
419
  export declare const createResourceHttpHandler: <Value, Create = Value, Patch = Partial<Value>>(options: ResourceHttpHandlerOptions<Value, Create, Patch>) => (request: Request) => Promise<Response>;
398
420
  export declare const matchEntityHttpRoute: (pathname: string, basePath: string) => EntityHttpRoute | null;