@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.
@@ -57,6 +57,8 @@ export type ResourceCapabilities = Readonly<{
57
57
  search: true;
58
58
  softDelete?: boolean;
59
59
  update?: boolean;
60
+ /** File uploads for the File fields of a common entity resource. */
61
+ upload?: boolean;
60
62
  }>;
61
63
  export type ResourcePaginationMode = "cursor" | "page";
62
64
  export type PortableResourceSchema = Readonly<Record<string, ResourceJsonValue>>;
@@ -146,7 +148,9 @@ export type ResourceListResult<Entity> = Readonly<{
146
148
  totalItems: number;
147
149
  totalPages: number;
148
150
  }>;
149
- export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable";
151
+ export type ResourceErrorCode = "capability_not_supported" | "conflict" | "forbidden" | "internal" | "invalid_request" | "not_found" | "rate_limited" | "transport_error" | "unauthenticated" | "unavailable" |
152
+ /** The CI Organization storage can not take a presigned File upload. */
153
+ "upload_not_supported";
150
154
  export type ResourceError = Readonly<{
151
155
  code: ResourceErrorCode;
152
156
  /** Client-observed dispatch outcome; uncertainty never proves rollback. */
@@ -218,7 +222,7 @@ export type ResourceCreateInput<Value> = Readonly<{
218
222
  value: Value;
219
223
  }>;
220
224
  /** Common entity operations. Generic resource lifecycle/cursor APIs remain separate. */
221
- export type EntityOperation = "list" | "get" | "create" | "update" | "delete";
225
+ export type EntityOperation = "list" | "get" | "create" | "update" | "delete" | "upload";
222
226
  export type EntityListQuery = Omit<ResourceListQuery, "pagination" | "includeDeleted"> & Readonly<{
223
227
  pagination: Extract<ResourcePagination, {
224
228
  mode: "page";
@@ -234,6 +238,19 @@ export type EntityUpdateInput<Patch> = ResourceMutationInput<Patch> & Readonly<{
234
238
  export type EntityDeleteInput = ResourceLifecycleInput & Readonly<{
235
239
  idempotencyKey: IdempotencyKey;
236
240
  }>;
241
+ /** A File upload request for one File field of the entity schema. */
242
+ export type EntityUploadInput = Readonly<{
243
+ field: string;
244
+ filename: string;
245
+ mimeType: string;
246
+ }>;
247
+ /** PUT the file bytes to `url` with `headers`; then write `{ upload: uploadId }`. */
248
+ export type EntityUploadSlot = Readonly<{
249
+ headers: Readonly<Record<string, string>>;
250
+ method: "PUT";
251
+ uploadId: string;
252
+ url: string;
253
+ }>;
237
254
  export type EntityRequestIdentity = Readonly<{
238
255
  requestId: string;
239
256
  resourceId: string;
@@ -250,7 +267,10 @@ export type EntityRequest<Create = unknown, Patch = unknown> = EntityRequestIden
250
267
  operation: "update";
251
268
  }> & EntityUpdateInput<Patch>) | (Readonly<{
252
269
  operation: "delete";
253
- }> & EntityDeleteInput));
270
+ }> & EntityDeleteInput) | (Readonly<{
271
+ operation: "upload";
272
+ }> & EntityUploadInput));
273
+ export type EntityOperationResult<Value, Operation extends EntityOperation> = Operation extends "list" ? EntityPage<Value> : Operation extends "upload" ? EntityUploadSlot : ResourceRecord<Value>;
254
274
  export type PrincipalKind = "detached_user" | "service_principal";
255
275
  export type DelegatedSubjectPolicy = "allowed" | "forbidden" | "required";
256
276
  export type AuthorizationRequirement = Readonly<{
@@ -334,7 +354,7 @@ export type EntityResourceDefinition<Value = unknown, Create = Value, Patch = Pa
334
354
  definition: ResourceDefinition<Value, Create, Patch>;
335
355
  execute: (request: EntityRequest<Create, Patch>, context: EntityInvocationContext, options?: Readonly<{
336
356
  signal?: AbortSignal;
337
- }>) => Promise<ResourceResult<EntityPage<Value> | ResourceRecord<Value>>>;
357
+ }>) => Promise<ResourceResult<EntityOperationResult<Value, EntityOperation>>>;
338
358
  }>;
339
359
  export type GatewayResourceOperation = ResourceTransportRequest["operation"];
340
360
  export type GatewayResourceAuthorization = Readonly<Partial<Record<GatewayResourceOperation, AuthorizationRequirement>>>;