@unisource/sdk 0.4.0 → 0.6.0

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.
package/dist/index.d.mts CHANGED
@@ -873,6 +873,75 @@ declare const releaseUploadFailResponseSchema: z.ZodObject<{
873
873
  status: z.ZodLiteral<"failed">;
874
874
  }, z.core.$strip>;
875
875
  type ReleaseUploadFailResponse = z.infer<typeof releaseUploadFailResponseSchema>;
876
+ declare const releaseMultipartCreateRequestSchema: z.ZodObject<{
877
+ name: z.ZodString;
878
+ filename: z.ZodString;
879
+ mime_type: z.ZodOptional<z.ZodString>;
880
+ tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
881
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
882
+ force_update: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
883
+ }, z.core.$strip>;
884
+ type ReleaseMultipartCreateRequest = z.input<typeof releaseMultipartCreateRequestSchema>;
885
+ declare const releaseMultipartCreateResponseSchema: z.ZodObject<{
886
+ upload_id: z.ZodString;
887
+ r2_upload_id: z.ZodString;
888
+ key: z.ZodString;
889
+ bucket: z.ZodString;
890
+ expires_at: z.ZodNumber;
891
+ }, z.core.$strip>;
892
+ type ReleaseMultipartCreateResponse = z.infer<typeof releaseMultipartCreateResponseSchema>;
893
+ declare const releaseMultipartSignPartQuerySchema: z.ZodObject<{
894
+ upload_id: z.ZodString;
895
+ part_number: z.ZodCoercedNumber<unknown>;
896
+ }, z.core.$strip>;
897
+ type ReleaseMultipartSignPartQuery = z.input<typeof releaseMultipartSignPartQuerySchema>;
898
+ declare const releaseMultipartSignPartResponseSchema: z.ZodObject<{
899
+ url: z.ZodString;
900
+ expires_at: z.ZodNumber;
901
+ }, z.core.$strip>;
902
+ type ReleaseMultipartSignPartResponse = z.infer<typeof releaseMultipartSignPartResponseSchema>;
903
+ declare const releaseMultipartListPartsQuerySchema: z.ZodObject<{
904
+ upload_id: z.ZodString;
905
+ }, z.core.$strip>;
906
+ type ReleaseMultipartListPartsQuery = z.input<typeof releaseMultipartListPartsQuerySchema>;
907
+ declare const releaseMultipartPartSchema: z.ZodObject<{
908
+ PartNumber: z.ZodNumber;
909
+ ETag: z.ZodString;
910
+ Size: z.ZodNumber;
911
+ }, z.core.$strip>;
912
+ type ReleaseMultipartPart = z.infer<typeof releaseMultipartPartSchema>;
913
+ declare const releaseMultipartListPartsResponseSchema: z.ZodObject<{
914
+ parts: z.ZodArray<z.ZodObject<{
915
+ PartNumber: z.ZodNumber;
916
+ ETag: z.ZodString;
917
+ Size: z.ZodNumber;
918
+ }, z.core.$strip>>;
919
+ }, z.core.$strip>;
920
+ type ReleaseMultipartListPartsResponse = z.infer<typeof releaseMultipartListPartsResponseSchema>;
921
+ declare const releaseMultipartCompleteRequestSchema: z.ZodObject<{
922
+ upload_id: z.ZodString;
923
+ parts: z.ZodArray<z.ZodObject<{
924
+ PartNumber: z.ZodNumber;
925
+ ETag: z.ZodString;
926
+ }, z.core.$strip>>;
927
+ }, z.core.$strip>;
928
+ type ReleaseMultipartCompleteRequest = z.input<typeof releaseMultipartCompleteRequestSchema>;
929
+ declare const releaseMultipartCompleteResponseSchema: z.ZodObject<{
930
+ success: z.ZodLiteral<true>;
931
+ release_id: z.ZodString;
932
+ status: z.ZodLiteral<"completed">;
933
+ }, z.core.$strip>;
934
+ type ReleaseMultipartCompleteResponse = z.infer<typeof releaseMultipartCompleteResponseSchema>;
935
+ declare const releaseMultipartAbortRequestSchema: z.ZodObject<{
936
+ upload_id: z.ZodString;
937
+ }, z.core.$strip>;
938
+ type ReleaseMultipartAbortRequest = z.input<typeof releaseMultipartAbortRequestSchema>;
939
+ declare const releaseMultipartAbortResponseSchema: z.ZodObject<{
940
+ success: z.ZodLiteral<true>;
941
+ release_id: z.ZodString;
942
+ status: z.ZodLiteral<"failed">;
943
+ }, z.core.$strip>;
944
+ type ReleaseMultipartAbortResponse = z.infer<typeof releaseMultipartAbortResponseSchema>;
876
945
  declare const releasesListQuerySchema: z.ZodObject<{
877
946
  limit: z.ZodOptional<z.ZodNumber>;
878
947
  cursor: z.ZodOptional<z.ZodString>;
@@ -1209,7 +1278,14 @@ declare class UnisourceClient {
1209
1278
  upload: {
1210
1279
  /** Initiate a release upload — returns a presigned PUT URL */init: (body: ReleaseUploadInitRequest, signal?: AbortSignal) => Promise<ReleaseUploadInitResponse>; /** Confirm that a release object was successfully uploaded */
1211
1280
  complete: (body: ReleaseUploadCompleteRequest, signal?: AbortSignal) => Promise<ReleaseUploadCompleteResponse>; /** Mark a release upload as failed */
1212
- fail: (releaseId: string, signal?: AbortSignal) => Promise<ReleaseUploadFailResponse>;
1281
+ fail: (releaseId: string, signal?: AbortSignal) => Promise<ReleaseUploadFailResponse>; /** Multipart upload helpers — direct browser → R2 via S3 presigned URLs */
1282
+ multipart: {
1283
+ /** Create a multipart release upload — returns the R2 UploadId + storage key */create: (body: ReleaseMultipartCreateRequest, signal?: AbortSignal) => Promise<ReleaseMultipartCreateResponse>; /** Short-lived presigned PUT URL for a single part */
1284
+ signPart: (uploadId: string, partNumber: number, signal?: AbortSignal) => Promise<ReleaseMultipartSignPartResponse>; /** List parts already uploaded — feeds Golden Retriever's resume logic */
1285
+ listParts: (uploadId: string, signal?: AbortSignal) => Promise<ReleaseMultipartListPartsResponse>; /** Finalize the multipart upload — backend reads object size from R2 (no client size). */
1286
+ complete: (body: ReleaseMultipartCompleteRequest, signal?: AbortSignal) => Promise<ReleaseMultipartCompleteResponse>; /** Abort an in-flight multipart upload and mark the release as failed */
1287
+ abort: (uploadId: string, signal?: AbortSignal) => Promise<ReleaseMultipartAbortResponse>;
1288
+ };
1213
1289
  }; /** List releases for the configured service */
1214
1290
  list: (query?: ReleasesListQuery, signal?: AbortSignal) => Promise<ReleasesListResponse>; /** Get a single release */
1215
1291
  get: (releaseId: string, signal?: AbortSignal) => Promise<ReleaseDTO>; /** Get the latest completed release */
@@ -1275,4 +1351,4 @@ declare class UnisourceClient {
1275
1351
  };
1276
1352
  }
1277
1353
  //#endregion
1278
- export { type AdminServiceSettingsRequest, type AdminServiceSettingsResponse, type AdminServiceUpdateRequest, type AdminServiceUpdateResponse, type AdminUser, type AdminUserListResponse, type AdminUserPasswordResetRequest, type AdminUserPasswordResetResponse, type AdminUserRoleUpdateRequest, type AdminUserStorageLimitUpdateRequest, type AdminUserUpdateRequest, type AdminUserUpdateResponse, type ApiError, type AuditEvent, type AuditEventAction, type AuditLogListQuery, type AuditLogListResponse, FILES_DEFAULT_LIMIT, FILES_MAX_LIMIT, type FileDeleteResponse, type FileDownloadUrlResponse, type FileMoveRequest, type FileRecord, type FileRecordDetailResponse, type FileRecordsListQuery, type FileRecordsListResponse, type FileRestoreResponse, type FileUpdateRequest, type FileUpdateResponse, type Folder, type FolderCreateRequest, type FolderCreateResponse, type FolderDeleteResponse, type FolderDetailResponse, type FolderListQuery, type FolderListResponse, type FolderRestoreResponse, type FolderUpdateRequest, type FolderUpdateResponse, MainStorageDeleteResponse, MainStorageDetailResponse, MainStorageFile, MainStorageListQuery, MainStorageListResponse, MainStorageRenameRequest, MainStorageRenameResponse, MainStorageRestoreResponse, type MultipartAbortRequest, type MultipartAbortResponse, type MultipartCompleteRequest, type MultipartCompleteResponse, type MultipartCreateRequest, type MultipartCreateResponse, type MultipartListPartsQuery, type MultipartListPartsResponse, type MultipartPart, type MultipartSignPartQuery, type MultipartSignPartResponse, type PublicFileAccessResponse, type PublicFileLockedResponse, type ReleaseDTO, type ReleaseDeleteResponse, type ReleaseSyncManifest, type ReleaseSyncRequest, type ReleaseSyncResponse, type ReleaseSyncResult, type ReleaseUpdateRequest, type ReleaseUploadCompleteRequest, type ReleaseUploadCompleteResponse, type ReleaseUploadFailResponse, type ReleaseUploadInitRequest, type ReleaseUploadInitResponse, type ReleasesListQuery, type ReleasesListResponse, type Service, type ServiceDetailResponse, type ServiceUsageResponse, type ShareLink, type ShareLinkCreateRequest, type ShareLinkCreateResponse, type ShareLinkDeleteResponse, type ShareLinkDetailResponse, type ShareLinkListResponse, type ShareLinkUpdateRequest, type ShareLinkUpdateResponse, type SharesCreateRequest, UnisourceClient, type UnisourceClientConfig, UnisourceError, UnisourceNetworkError, type UploadAppwriteInitRequest, type UploadAppwriteInitResponse, type UploadCompleteResponse, type UploadDestination, type UploadFailResponse, type UploadLifecycleRequest, type UploadR2InitRequest, type UploadR2InitResponse, type UploadRecord, type UploadRecordDetailResponse, type UploadStatus, type UploadType, type UploadsListResponse, adminServiceSettingsRequestSchema, adminServiceSettingsResponseSchema, adminServiceUpdateRequestSchema, adminServiceUpdateResponseSchema, adminUserListResponseSchema, adminUserPasswordResetRequestSchema, adminUserPasswordResetResponseSchema, adminUserRoleUpdateRequestSchema, adminUserSchema, adminUserStorageLimitUpdateRequestSchema, adminUserUpdateRequestSchema, adminUserUpdateResponseSchema, apiErrorSchema, auditEventActionSchema, auditEventSchema, auditLogListQuerySchema, auditLogListResponseSchema, fileDeleteResponseSchema, fileDownloadUrlResponseSchema, fileMoveRequestSchema, fileRecordDetailResponseSchema, fileRecordSchema, fileRecordsListQuerySchema, fileRecordsListResponseSchema, fileRestoreResponseSchema, fileUpdateRequestSchema, fileUpdateResponseSchema, folderCreateRequestSchema, folderCreateResponseSchema, folderDeleteResponseSchema, folderDetailResponseSchema, folderListQuerySchema, folderListResponseSchema, folderRestoreResponseSchema, folderSchema, folderUpdateRequestSchema, folderUpdateResponseSchema, getPublicFileInfo, mainStorageDeleteResponseSchema, mainStorageDetailResponseSchema, mainStorageFileSchema, mainStorageListQuerySchema, mainStorageListResponseSchema, mainStorageRenameRequestSchema, mainStorageRenameResponseSchema, mainStorageRestoreResponseSchema, multipartAbortRequestSchema, multipartAbortResponseSchema, multipartCompleteRequestSchema, multipartCompleteResponseSchema, multipartCreateRequestSchema, multipartCreateResponseSchema, multipartListPartsQuerySchema, multipartListPartsResponseSchema, multipartPartSchema, multipartSignPartQuerySchema, multipartSignPartResponseSchema, nonEmptyString, positiveInt, publicFileAccessResponseSchema, publicFileLockedResponseSchema, releaseDTOSchema, releaseDeleteResponseSchema, releaseSyncManifestSchema, releaseSyncRequestSchema, releaseSyncResponseSchema, releaseSyncResultSchema, releaseUpdateRequestSchema, releaseUploadCompleteRequestSchema, releaseUploadCompleteResponseSchema, releaseUploadFailResponseSchema, releaseUploadInitRequestSchema, releaseUploadInitResponseSchema, releasesListQuerySchema, releasesListResponseSchema, serviceDetailResponseSchema, serviceSchema, serviceUsageResponseSchema, shareLinkCreateRequestSchema, shareLinkCreateResponseSchema, shareLinkDeleteResponseSchema, shareLinkDetailResponseSchema, shareLinkListResponseSchema, shareLinkSchema, shareLinkUpdateRequestSchema, shareLinkUpdateResponseSchema, sharesCreateRequestSchema, unixTimestamp, unlockPublicFile, uploadAppwriteInitRequestSchema, uploadAppwriteInitResponseSchema, uploadCompleteResponseSchema, uploadDestinationSchema, uploadFailResponseSchema, uploadLifecycleRequestSchema, uploadR2InitRequestSchema, uploadR2InitResponseSchema, uploadRecordDetailResponseSchema, uploadRecordSchema, uploadStatusSchema, uploadTypeSchema, uploadsListResponseSchema };
1354
+ export { type AdminServiceSettingsRequest, type AdminServiceSettingsResponse, type AdminServiceUpdateRequest, type AdminServiceUpdateResponse, type AdminUser, type AdminUserListResponse, type AdminUserPasswordResetRequest, type AdminUserPasswordResetResponse, type AdminUserRoleUpdateRequest, type AdminUserStorageLimitUpdateRequest, type AdminUserUpdateRequest, type AdminUserUpdateResponse, type ApiError, type AuditEvent, type AuditEventAction, type AuditLogListQuery, type AuditLogListResponse, FILES_DEFAULT_LIMIT, FILES_MAX_LIMIT, type FileDeleteResponse, type FileDownloadUrlResponse, type FileMoveRequest, type FileRecord, type FileRecordDetailResponse, type FileRecordsListQuery, type FileRecordsListResponse, type FileRestoreResponse, type FileUpdateRequest, type FileUpdateResponse, type Folder, type FolderCreateRequest, type FolderCreateResponse, type FolderDeleteResponse, type FolderDetailResponse, type FolderListQuery, type FolderListResponse, type FolderRestoreResponse, type FolderUpdateRequest, type FolderUpdateResponse, MainStorageDeleteResponse, MainStorageDetailResponse, MainStorageFile, MainStorageListQuery, MainStorageListResponse, MainStorageRenameRequest, MainStorageRenameResponse, MainStorageRestoreResponse, type MultipartAbortRequest, type MultipartAbortResponse, type MultipartCompleteRequest, type MultipartCompleteResponse, type MultipartCreateRequest, type MultipartCreateResponse, type MultipartListPartsQuery, type MultipartListPartsResponse, type MultipartPart, type MultipartSignPartQuery, type MultipartSignPartResponse, type PublicFileAccessResponse, type PublicFileLockedResponse, type ReleaseDTO, type ReleaseDeleteResponse, type ReleaseMultipartAbortRequest, type ReleaseMultipartAbortResponse, type ReleaseMultipartCompleteRequest, type ReleaseMultipartCompleteResponse, type ReleaseMultipartCreateRequest, type ReleaseMultipartCreateResponse, type ReleaseMultipartListPartsQuery, type ReleaseMultipartListPartsResponse, type ReleaseMultipartPart, type ReleaseMultipartSignPartQuery, type ReleaseMultipartSignPartResponse, type ReleaseSyncManifest, type ReleaseSyncRequest, type ReleaseSyncResponse, type ReleaseSyncResult, type ReleaseUpdateRequest, type ReleaseUploadCompleteRequest, type ReleaseUploadCompleteResponse, type ReleaseUploadFailResponse, type ReleaseUploadInitRequest, type ReleaseUploadInitResponse, type ReleasesListQuery, type ReleasesListResponse, type Service, type ServiceDetailResponse, type ServiceUsageResponse, type ShareLink, type ShareLinkCreateRequest, type ShareLinkCreateResponse, type ShareLinkDeleteResponse, type ShareLinkDetailResponse, type ShareLinkListResponse, type ShareLinkUpdateRequest, type ShareLinkUpdateResponse, type SharesCreateRequest, UnisourceClient, type UnisourceClientConfig, UnisourceError, UnisourceNetworkError, type UploadAppwriteInitRequest, type UploadAppwriteInitResponse, type UploadCompleteResponse, type UploadDestination, type UploadFailResponse, type UploadLifecycleRequest, type UploadR2InitRequest, type UploadR2InitResponse, type UploadRecord, type UploadRecordDetailResponse, type UploadStatus, type UploadType, type UploadsListResponse, adminServiceSettingsRequestSchema, adminServiceSettingsResponseSchema, adminServiceUpdateRequestSchema, adminServiceUpdateResponseSchema, adminUserListResponseSchema, adminUserPasswordResetRequestSchema, adminUserPasswordResetResponseSchema, adminUserRoleUpdateRequestSchema, adminUserSchema, adminUserStorageLimitUpdateRequestSchema, adminUserUpdateRequestSchema, adminUserUpdateResponseSchema, apiErrorSchema, auditEventActionSchema, auditEventSchema, auditLogListQuerySchema, auditLogListResponseSchema, fileDeleteResponseSchema, fileDownloadUrlResponseSchema, fileMoveRequestSchema, fileRecordDetailResponseSchema, fileRecordSchema, fileRecordsListQuerySchema, fileRecordsListResponseSchema, fileRestoreResponseSchema, fileUpdateRequestSchema, fileUpdateResponseSchema, folderCreateRequestSchema, folderCreateResponseSchema, folderDeleteResponseSchema, folderDetailResponseSchema, folderListQuerySchema, folderListResponseSchema, folderRestoreResponseSchema, folderSchema, folderUpdateRequestSchema, folderUpdateResponseSchema, getPublicFileInfo, mainStorageDeleteResponseSchema, mainStorageDetailResponseSchema, mainStorageFileSchema, mainStorageListQuerySchema, mainStorageListResponseSchema, mainStorageRenameRequestSchema, mainStorageRenameResponseSchema, mainStorageRestoreResponseSchema, multipartAbortRequestSchema, multipartAbortResponseSchema, multipartCompleteRequestSchema, multipartCompleteResponseSchema, multipartCreateRequestSchema, multipartCreateResponseSchema, multipartListPartsQuerySchema, multipartListPartsResponseSchema, multipartPartSchema, multipartSignPartQuerySchema, multipartSignPartResponseSchema, nonEmptyString, positiveInt, publicFileAccessResponseSchema, publicFileLockedResponseSchema, releaseDTOSchema, releaseDeleteResponseSchema, releaseMultipartAbortRequestSchema, releaseMultipartAbortResponseSchema, releaseMultipartCompleteRequestSchema, releaseMultipartCompleteResponseSchema, releaseMultipartCreateRequestSchema, releaseMultipartCreateResponseSchema, releaseMultipartListPartsQuerySchema, releaseMultipartListPartsResponseSchema, releaseMultipartPartSchema, releaseMultipartSignPartQuerySchema, releaseMultipartSignPartResponseSchema, releaseSyncManifestSchema, releaseSyncRequestSchema, releaseSyncResponseSchema, releaseSyncResultSchema, releaseUpdateRequestSchema, releaseUploadCompleteRequestSchema, releaseUploadCompleteResponseSchema, releaseUploadFailResponseSchema, releaseUploadInitRequestSchema, releaseUploadInitResponseSchema, releasesListQuerySchema, releasesListResponseSchema, serviceDetailResponseSchema, serviceSchema, serviceUsageResponseSchema, shareLinkCreateRequestSchema, shareLinkCreateResponseSchema, shareLinkDeleteResponseSchema, shareLinkDetailResponseSchema, shareLinkListResponseSchema, shareLinkSchema, shareLinkUpdateRequestSchema, shareLinkUpdateResponseSchema, sharesCreateRequestSchema, unixTimestamp, unlockPublicFile, uploadAppwriteInitRequestSchema, uploadAppwriteInitResponseSchema, uploadCompleteResponseSchema, uploadDestinationSchema, uploadFailResponseSchema, uploadLifecycleRequestSchema, uploadR2InitRequestSchema, uploadR2InitResponseSchema, uploadRecordDetailResponseSchema, uploadRecordSchema, uploadStatusSchema, uploadTypeSchema, uploadsListResponseSchema };
package/dist/index.mjs CHANGED
@@ -409,6 +409,46 @@ const releaseUploadFailResponseSchema = z.object({
409
409
  release_id: nonEmptyString,
410
410
  status: z.literal("failed")
411
411
  });
412
+ const releaseMultipartCreateRequestSchema = z.object({
413
+ name: releaseNameSchema,
414
+ filename: releaseFilenameSchema,
415
+ mime_type: nonEmptyString.optional(),
416
+ tags: releaseTagsSchema.optional().default([]),
417
+ notes: releaseNotesSchema,
418
+ force_update: z.boolean().optional().default(false)
419
+ });
420
+ const releaseMultipartCreateResponseSchema = z.object({
421
+ upload_id: nonEmptyString,
422
+ r2_upload_id: nonEmptyString,
423
+ key: nonEmptyString,
424
+ bucket: nonEmptyString,
425
+ expires_at: positiveInt
426
+ });
427
+ const releaseMultipartSignPartQuerySchema = z.object({
428
+ upload_id: releaseIdSchema,
429
+ part_number: z.coerce.number().int().min(1).max(1e4)
430
+ });
431
+ const releaseMultipartSignPartResponseSchema = z.object({
432
+ url: z.string().url(),
433
+ expires_at: positiveInt
434
+ });
435
+ const releaseMultipartListPartsQuerySchema = z.object({ upload_id: releaseIdSchema });
436
+ const releaseMultipartPartSchema = z.object({
437
+ PartNumber: z.number().int().min(1).max(1e4),
438
+ ETag: nonEmptyString,
439
+ Size: z.number().int().nonnegative()
440
+ });
441
+ const releaseMultipartListPartsResponseSchema = z.object({ parts: z.array(releaseMultipartPartSchema) });
442
+ const releaseMultipartCompleteRequestSchema = z.object({
443
+ upload_id: releaseIdSchema,
444
+ parts: z.array(z.object({
445
+ PartNumber: z.number().int().min(1).max(1e4),
446
+ ETag: nonEmptyString
447
+ })).min(1)
448
+ });
449
+ const releaseMultipartCompleteResponseSchema = releaseUploadCompleteResponseSchema;
450
+ const releaseMultipartAbortRequestSchema = z.object({ upload_id: releaseIdSchema });
451
+ const releaseMultipartAbortResponseSchema = releaseUploadFailResponseSchema;
412
452
  const releasesListQuerySchema = z.object({
413
453
  limit: z.number().int().positive().max(100).optional(),
414
454
  cursor: nonEmptyString.optional()
@@ -738,7 +778,32 @@ var UnisourceClient = class {
738
778
  fail: (releaseId, signal) => apiRequest(this.config, "POST", "/releases/upload/fail", {
739
779
  body: { release_id: releaseId },
740
780
  signal
741
- })
781
+ }),
782
+ multipart: {
783
+ create: (body, signal) => apiRequest(this.config, "POST", "/releases/upload/multipart/create", {
784
+ body,
785
+ signal
786
+ }),
787
+ signPart: (uploadId, partNumber, signal) => apiRequest(this.config, "GET", "/releases/upload/multipart/sign-part", {
788
+ query: {
789
+ upload_id: uploadId,
790
+ part_number: partNumber
791
+ },
792
+ signal
793
+ }),
794
+ listParts: (uploadId, signal) => apiRequest(this.config, "GET", "/releases/upload/multipart/list-parts", {
795
+ query: { upload_id: uploadId },
796
+ signal
797
+ }),
798
+ complete: (body, signal) => apiRequest(this.config, "POST", "/releases/upload/multipart/complete", {
799
+ body,
800
+ signal
801
+ }),
802
+ abort: (uploadId, signal) => apiRequest(this.config, "DELETE", "/releases/upload/multipart/abort", {
803
+ body: { upload_id: uploadId },
804
+ signal
805
+ })
806
+ }
742
807
  },
743
808
  list: (query, signal) => apiRequest(this.config, "GET", "/releases", {
744
809
  query,
@@ -846,4 +911,4 @@ var UnisourceClient = class {
846
911
  };
847
912
  };
848
913
  //#endregion
849
- export { FILES_DEFAULT_LIMIT, FILES_MAX_LIMIT, UnisourceClient, UnisourceError, UnisourceNetworkError, adminServiceSettingsRequestSchema, adminServiceSettingsResponseSchema, adminServiceUpdateRequestSchema, adminServiceUpdateResponseSchema, adminUserListResponseSchema, adminUserPasswordResetRequestSchema, adminUserPasswordResetResponseSchema, adminUserRoleUpdateRequestSchema, adminUserSchema, adminUserStorageLimitUpdateRequestSchema, adminUserUpdateRequestSchema, adminUserUpdateResponseSchema, apiErrorSchema, auditEventActionSchema, auditEventSchema, auditLogListQuerySchema, auditLogListResponseSchema, fileDeleteResponseSchema, fileDownloadUrlResponseSchema, fileMoveRequestSchema, fileRecordDetailResponseSchema, fileRecordSchema, fileRecordsListQuerySchema, fileRecordsListResponseSchema, fileRestoreResponseSchema, fileUpdateRequestSchema, fileUpdateResponseSchema, folderCreateRequestSchema, folderCreateResponseSchema, folderDeleteResponseSchema, folderDetailResponseSchema, folderListQuerySchema, folderListResponseSchema, folderRestoreResponseSchema, folderSchema, folderUpdateRequestSchema, folderUpdateResponseSchema, getPublicFileInfo, mainStorageDeleteResponseSchema, mainStorageDetailResponseSchema, mainStorageFileSchema, mainStorageListQuerySchema, mainStorageListResponseSchema, mainStorageRenameRequestSchema, mainStorageRenameResponseSchema, mainStorageRestoreResponseSchema, multipartAbortRequestSchema, multipartAbortResponseSchema, multipartCompleteRequestSchema, multipartCompleteResponseSchema, multipartCreateRequestSchema, multipartCreateResponseSchema, multipartListPartsQuerySchema, multipartListPartsResponseSchema, multipartPartSchema, multipartSignPartQuerySchema, multipartSignPartResponseSchema, nonEmptyString, positiveInt, publicFileAccessResponseSchema, publicFileLockedResponseSchema, releaseDTOSchema, releaseDeleteResponseSchema, releaseSyncManifestSchema, releaseSyncRequestSchema, releaseSyncResponseSchema, releaseSyncResultSchema, releaseUpdateRequestSchema, releaseUploadCompleteRequestSchema, releaseUploadCompleteResponseSchema, releaseUploadFailResponseSchema, releaseUploadInitRequestSchema, releaseUploadInitResponseSchema, releasesListQuerySchema, releasesListResponseSchema, serviceDetailResponseSchema, serviceSchema, serviceUsageResponseSchema, shareLinkCreateRequestSchema, shareLinkCreateResponseSchema, shareLinkDeleteResponseSchema, shareLinkDetailResponseSchema, shareLinkListResponseSchema, shareLinkSchema, shareLinkUpdateRequestSchema, shareLinkUpdateResponseSchema, sharesCreateRequestSchema, unixTimestamp, unlockPublicFile, uploadAppwriteInitRequestSchema, uploadAppwriteInitResponseSchema, uploadCompleteResponseSchema, uploadDestinationSchema, uploadFailResponseSchema, uploadLifecycleRequestSchema, uploadR2InitRequestSchema, uploadR2InitResponseSchema, uploadRecordDetailResponseSchema, uploadRecordSchema, uploadStatusSchema, uploadTypeSchema, uploadsListResponseSchema };
914
+ export { FILES_DEFAULT_LIMIT, FILES_MAX_LIMIT, UnisourceClient, UnisourceError, UnisourceNetworkError, adminServiceSettingsRequestSchema, adminServiceSettingsResponseSchema, adminServiceUpdateRequestSchema, adminServiceUpdateResponseSchema, adminUserListResponseSchema, adminUserPasswordResetRequestSchema, adminUserPasswordResetResponseSchema, adminUserRoleUpdateRequestSchema, adminUserSchema, adminUserStorageLimitUpdateRequestSchema, adminUserUpdateRequestSchema, adminUserUpdateResponseSchema, apiErrorSchema, auditEventActionSchema, auditEventSchema, auditLogListQuerySchema, auditLogListResponseSchema, fileDeleteResponseSchema, fileDownloadUrlResponseSchema, fileMoveRequestSchema, fileRecordDetailResponseSchema, fileRecordSchema, fileRecordsListQuerySchema, fileRecordsListResponseSchema, fileRestoreResponseSchema, fileUpdateRequestSchema, fileUpdateResponseSchema, folderCreateRequestSchema, folderCreateResponseSchema, folderDeleteResponseSchema, folderDetailResponseSchema, folderListQuerySchema, folderListResponseSchema, folderRestoreResponseSchema, folderSchema, folderUpdateRequestSchema, folderUpdateResponseSchema, getPublicFileInfo, mainStorageDeleteResponseSchema, mainStorageDetailResponseSchema, mainStorageFileSchema, mainStorageListQuerySchema, mainStorageListResponseSchema, mainStorageRenameRequestSchema, mainStorageRenameResponseSchema, mainStorageRestoreResponseSchema, multipartAbortRequestSchema, multipartAbortResponseSchema, multipartCompleteRequestSchema, multipartCompleteResponseSchema, multipartCreateRequestSchema, multipartCreateResponseSchema, multipartListPartsQuerySchema, multipartListPartsResponseSchema, multipartPartSchema, multipartSignPartQuerySchema, multipartSignPartResponseSchema, nonEmptyString, positiveInt, publicFileAccessResponseSchema, publicFileLockedResponseSchema, releaseDTOSchema, releaseDeleteResponseSchema, releaseMultipartAbortRequestSchema, releaseMultipartAbortResponseSchema, releaseMultipartCompleteRequestSchema, releaseMultipartCompleteResponseSchema, releaseMultipartCreateRequestSchema, releaseMultipartCreateResponseSchema, releaseMultipartListPartsQuerySchema, releaseMultipartListPartsResponseSchema, releaseMultipartPartSchema, releaseMultipartSignPartQuerySchema, releaseMultipartSignPartResponseSchema, releaseSyncManifestSchema, releaseSyncRequestSchema, releaseSyncResponseSchema, releaseSyncResultSchema, releaseUpdateRequestSchema, releaseUploadCompleteRequestSchema, releaseUploadCompleteResponseSchema, releaseUploadFailResponseSchema, releaseUploadInitRequestSchema, releaseUploadInitResponseSchema, releasesListQuerySchema, releasesListResponseSchema, serviceDetailResponseSchema, serviceSchema, serviceUsageResponseSchema, shareLinkCreateRequestSchema, shareLinkCreateResponseSchema, shareLinkDeleteResponseSchema, shareLinkDetailResponseSchema, shareLinkListResponseSchema, shareLinkSchema, shareLinkUpdateRequestSchema, shareLinkUpdateResponseSchema, sharesCreateRequestSchema, unixTimestamp, unlockPublicFile, uploadAppwriteInitRequestSchema, uploadAppwriteInitResponseSchema, uploadCompleteResponseSchema, uploadDestinationSchema, uploadFailResponseSchema, uploadLifecycleRequestSchema, uploadR2InitRequestSchema, uploadR2InitResponseSchema, uploadRecordDetailResponseSchema, uploadRecordSchema, uploadStatusSchema, uploadTypeSchema, uploadsListResponseSchema };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@unisource/sdk",
3
3
  "private": false,
4
4
  "type": "module",
5
- "version": "0.4.0",
5
+ "version": "0.6.0",
6
6
  "description": "Wspolne kontrakty danych dla backendu i frontendu UniSource.",
7
7
  "license": "MIT",
8
8
  "publishConfig": {
package/src/client.ts CHANGED
@@ -90,6 +90,13 @@ import type {
90
90
  ReleaseDeleteResponse,
91
91
  ReleaseSyncRequest,
92
92
  ReleaseSyncResponse,
93
+ ReleaseMultipartCreateRequest,
94
+ ReleaseMultipartCreateResponse,
95
+ ReleaseMultipartSignPartResponse,
96
+ ReleaseMultipartListPartsResponse,
97
+ ReleaseMultipartCompleteRequest,
98
+ ReleaseMultipartCompleteResponse,
99
+ ReleaseMultipartAbortResponse,
93
100
  } from './releases';
94
101
 
95
102
  // ─── SDK Error classes ────────────────────────────────────────────────────────
@@ -412,6 +419,38 @@ export class UnisourceClient {
412
419
  /** Mark a release upload as failed */
413
420
  fail: (releaseId: string, signal?: AbortSignal): Promise<ReleaseUploadFailResponse> =>
414
421
  apiRequest(this.config, 'POST', '/releases/upload/fail', { body: { release_id: releaseId }, signal }),
422
+
423
+ /** Multipart upload helpers — direct browser → R2 via S3 presigned URLs */
424
+ multipart: {
425
+ /** Create a multipart release upload — returns the R2 UploadId + storage key */
426
+ create: (body: ReleaseMultipartCreateRequest, signal?: AbortSignal): Promise<ReleaseMultipartCreateResponse> =>
427
+ apiRequest(this.config, 'POST', '/releases/upload/multipart/create', { body, signal }),
428
+
429
+ /** Short-lived presigned PUT URL for a single part */
430
+ signPart: (uploadId: string, partNumber: number, signal?: AbortSignal): Promise<ReleaseMultipartSignPartResponse> =>
431
+ apiRequest(this.config, 'GET', '/releases/upload/multipart/sign-part', {
432
+ query: { upload_id: uploadId, part_number: partNumber },
433
+ signal,
434
+ }),
435
+
436
+ /** List parts already uploaded — feeds Golden Retriever's resume logic */
437
+ listParts: (uploadId: string, signal?: AbortSignal): Promise<ReleaseMultipartListPartsResponse> =>
438
+ apiRequest(this.config, 'GET', '/releases/upload/multipart/list-parts', {
439
+ query: { upload_id: uploadId },
440
+ signal,
441
+ }),
442
+
443
+ /** Finalize the multipart upload — backend reads object size from R2 (no client size). */
444
+ complete: (body: ReleaseMultipartCompleteRequest, signal?: AbortSignal): Promise<ReleaseMultipartCompleteResponse> =>
445
+ apiRequest(this.config, 'POST', '/releases/upload/multipart/complete', { body, signal }),
446
+
447
+ /** Abort an in-flight multipart upload and mark the release as failed */
448
+ abort: (uploadId: string, signal?: AbortSignal): Promise<ReleaseMultipartAbortResponse> =>
449
+ apiRequest(this.config, 'DELETE', '/releases/upload/multipart/abort', {
450
+ body: { upload_id: uploadId },
451
+ signal,
452
+ }),
453
+ },
415
454
  },
416
455
 
417
456
  /** List releases for the configured service */
package/src/index.ts CHANGED
@@ -177,6 +177,17 @@ export {
177
177
  releaseSyncRequestSchema,
178
178
  releaseSyncResultSchema,
179
179
  releaseSyncResponseSchema,
180
+ releaseMultipartCreateRequestSchema,
181
+ releaseMultipartCreateResponseSchema,
182
+ releaseMultipartSignPartQuerySchema,
183
+ releaseMultipartSignPartResponseSchema,
184
+ releaseMultipartListPartsQuerySchema,
185
+ releaseMultipartListPartsResponseSchema,
186
+ releaseMultipartPartSchema,
187
+ releaseMultipartCompleteRequestSchema,
188
+ releaseMultipartCompleteResponseSchema,
189
+ releaseMultipartAbortRequestSchema,
190
+ releaseMultipartAbortResponseSchema,
180
191
  } from './releases';
181
192
  export type {
182
193
  ReleaseDTO,
@@ -193,6 +204,17 @@ export type {
193
204
  ReleaseSyncRequest,
194
205
  ReleaseSyncResult,
195
206
  ReleaseSyncResponse,
207
+ ReleaseMultipartCreateRequest,
208
+ ReleaseMultipartCreateResponse,
209
+ ReleaseMultipartSignPartQuery,
210
+ ReleaseMultipartSignPartResponse,
211
+ ReleaseMultipartListPartsQuery,
212
+ ReleaseMultipartListPartsResponse,
213
+ ReleaseMultipartPart,
214
+ ReleaseMultipartCompleteRequest,
215
+ ReleaseMultipartCompleteResponse,
216
+ ReleaseMultipartAbortRequest,
217
+ ReleaseMultipartAbortResponse,
196
218
  } from './releases';
197
219
 
198
220
  // ─── Share Links ─────────────────────────────────────────────────────────────
package/src/releases.ts CHANGED
@@ -64,6 +64,84 @@ export const releaseUploadFailResponseSchema = z.object({
64
64
  });
65
65
  export type ReleaseUploadFailResponse = z.infer<typeof releaseUploadFailResponseSchema>;
66
66
 
67
+ // ─── Multipart Upload Lifecycle ──────────────────────────────────────────────
68
+
69
+ export const releaseMultipartCreateRequestSchema = z.object({
70
+ name: releaseNameSchema,
71
+ filename: releaseFilenameSchema,
72
+ /** Defaults server-side to `application/octet-stream` when omitted. */
73
+ mime_type: nonEmptyString.optional(),
74
+ tags: releaseTagsSchema.optional().default([]),
75
+ notes: releaseNotesSchema,
76
+ force_update: z.boolean().optional().default(false),
77
+ });
78
+ export type ReleaseMultipartCreateRequest = z.input<typeof releaseMultipartCreateRequestSchema>;
79
+
80
+ export const releaseMultipartCreateResponseSchema = z.object({
81
+ /** UniSource release id — the same id is used for sign/list/complete/abort. */
82
+ upload_id: nonEmptyString,
83
+ /** S3 (R2) multipart UploadId returned by CreateMultipartUpload. */
84
+ r2_upload_id: nonEmptyString,
85
+ /** R2 object key the parts are being uploaded against. */
86
+ key: nonEmptyString,
87
+ bucket: nonEmptyString,
88
+ expires_at: positiveInt,
89
+ });
90
+ export type ReleaseMultipartCreateResponse = z.infer<typeof releaseMultipartCreateResponseSchema>;
91
+
92
+ export const releaseMultipartSignPartQuerySchema = z.object({
93
+ upload_id: releaseIdSchema,
94
+ part_number: z.coerce.number().int().min(1).max(10_000),
95
+ });
96
+ export type ReleaseMultipartSignPartQuery = z.input<typeof releaseMultipartSignPartQuerySchema>;
97
+
98
+ export const releaseMultipartSignPartResponseSchema = z.object({
99
+ url: z.string().url(),
100
+ expires_at: positiveInt,
101
+ });
102
+ export type ReleaseMultipartSignPartResponse = z.infer<typeof releaseMultipartSignPartResponseSchema>;
103
+
104
+ export const releaseMultipartListPartsQuerySchema = z.object({
105
+ upload_id: releaseIdSchema,
106
+ });
107
+ export type ReleaseMultipartListPartsQuery = z.input<typeof releaseMultipartListPartsQuerySchema>;
108
+
109
+ export const releaseMultipartPartSchema = z.object({
110
+ PartNumber: z.number().int().min(1).max(10_000),
111
+ ETag: nonEmptyString,
112
+ Size: z.number().int().nonnegative(),
113
+ });
114
+ export type ReleaseMultipartPart = z.infer<typeof releaseMultipartPartSchema>;
115
+
116
+ export const releaseMultipartListPartsResponseSchema = z.object({
117
+ parts: z.array(releaseMultipartPartSchema),
118
+ });
119
+ export type ReleaseMultipartListPartsResponse = z.infer<typeof releaseMultipartListPartsResponseSchema>;
120
+
121
+ export const releaseMultipartCompleteRequestSchema = z.object({
122
+ upload_id: releaseIdSchema,
123
+ parts: z
124
+ .array(
125
+ z.object({
126
+ PartNumber: z.number().int().min(1).max(10_000),
127
+ ETag: nonEmptyString,
128
+ })
129
+ )
130
+ .min(1),
131
+ });
132
+ export type ReleaseMultipartCompleteRequest = z.input<typeof releaseMultipartCompleteRequestSchema>;
133
+
134
+ export const releaseMultipartCompleteResponseSchema = releaseUploadCompleteResponseSchema;
135
+ export type ReleaseMultipartCompleteResponse = z.infer<typeof releaseMultipartCompleteResponseSchema>;
136
+
137
+ export const releaseMultipartAbortRequestSchema = z.object({
138
+ upload_id: releaseIdSchema,
139
+ });
140
+ export type ReleaseMultipartAbortRequest = z.input<typeof releaseMultipartAbortRequestSchema>;
141
+
142
+ export const releaseMultipartAbortResponseSchema = releaseUploadFailResponseSchema;
143
+ export type ReleaseMultipartAbortResponse = z.infer<typeof releaseMultipartAbortResponseSchema>;
144
+
67
145
  // ─── List ───────────────────────────────────────────────────────────────────
68
146
 
69
147
  export const releasesListQuerySchema = z.object({