@giveitsmaller/contracts 0.1.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.
Files changed (89) hide show
  1. package/asyncapi/ErrorCode.ts +19 -0
  2. package/asyncapi/MergeOutputType.ts +9 -0
  3. package/asyncapi/NotificationsOperationsQueue.ts +4 -0
  4. package/asyncapi/OperationMetrics.ts +12 -0
  5. package/asyncapi/OperationProgress.ts +12 -0
  6. package/asyncapi/OperationRequest.ts +21 -0
  7. package/asyncapi/OperationResult.ts +20 -0
  8. package/asyncapi/OperationType.ts +10 -0
  9. package/asyncapi/ProgressStatus.ts +8 -0
  10. package/asyncapi/README.md +16 -0
  11. package/asyncapi/ResultStatus.ts +6 -0
  12. package/asyncapi/SourceEntry.ts +9 -0
  13. package/asyncapi/index.ts +11 -0
  14. package/index.ts +5 -0
  15. package/openapi/.openapi-generator-ignore +26 -0
  16. package/openapi/README.md +17 -0
  17. package/openapi/index.ts +4 -0
  18. package/openapi/models/CallbackEventType.ts +60 -0
  19. package/openapi/models/ContactRequest.ts +113 -0
  20. package/openapi/models/ContactSubject.ts +62 -0
  21. package/openapi/models/ContactValidationErrorResponse.ts +67 -0
  22. package/openapi/models/ErrorEnvelope.ts +85 -0
  23. package/openapi/models/ExportConfig.ts +108 -0
  24. package/openapi/models/JobDefinition.ts +56 -0
  25. package/openapi/models/JobDownload.ts +92 -0
  26. package/openapi/models/JobInput.ts +89 -0
  27. package/openapi/models/JobResponse.ts +119 -0
  28. package/openapi/models/JobSource.ts +79 -0
  29. package/openapi/models/JobStatus.ts +62 -0
  30. package/openapi/models/JobType.ts +60 -0
  31. package/openapi/models/LivenessResponse.ts +66 -0
  32. package/openapi/models/MetadataResponse.ts +223 -0
  33. package/openapi/models/MetadataResponseDimensions.ts +73 -0
  34. package/openapi/models/MetadataResponseExif.ts +97 -0
  35. package/openapi/models/MetadataResponseExifGps.ts +73 -0
  36. package/openapi/models/MetadataSuccessEnvelope.ts +93 -0
  37. package/openapi/models/MimeGroupSchema.ts +91 -0
  38. package/openapi/models/MultipartCompleteRequest.ts +85 -0
  39. package/openapi/models/MultipartCompleteRequestPartsInner.ts +75 -0
  40. package/openapi/models/MultipartInitiateResponse.ts +137 -0
  41. package/openapi/models/MultipartInitiateSuccessEnvelope.ts +93 -0
  42. package/openapi/models/OperationDefinition.ts +91 -0
  43. package/openapi/models/OperationDownload.ts +102 -0
  44. package/openapi/models/OperationInputModel.ts +56 -0
  45. package/openapi/models/OperationResponse.ts +124 -0
  46. package/openapi/models/OperationResult.ts +100 -0
  47. package/openapi/models/OperationResultMetrics.ts +73 -0
  48. package/openapi/models/OperationSchemaDefinition.ts +163 -0
  49. package/openapi/models/OperationStatus.ts +62 -0
  50. package/openapi/models/OperationType.ts +64 -0
  51. package/openapi/models/OperationsSchemaResponse.ts +90 -0
  52. package/openapi/models/OptionSchema.ts +160 -0
  53. package/openapi/models/PresignedUrlPart.ts +86 -0
  54. package/openapi/models/ReadinessResponse.ts +73 -0
  55. package/openapi/models/ResponseEnvelope.ts +70 -0
  56. package/openapi/models/RetryResponse.ts +94 -0
  57. package/openapi/models/RetrySuccessEnvelope.ts +93 -0
  58. package/openapi/models/SseEventType.ts +68 -0
  59. package/openapi/models/SseJobCompletedData.ts +94 -0
  60. package/openapi/models/SseJobFailedData.ts +94 -0
  61. package/openapi/models/SseOperationCompletedData.ts +143 -0
  62. package/openapi/models/SseOperationFailedData.ts +129 -0
  63. package/openapi/models/SseOperationProgressData.ts +103 -0
  64. package/openapi/models/SseWorkflowTerminalData.ts +89 -0
  65. package/openapi/models/UploadResponse.ts +93 -0
  66. package/openapi/models/UploadSuccessEnvelope.ts +93 -0
  67. package/openapi/models/ValidationErrorEnvelope.ts +104 -0
  68. package/openapi/models/ValidationErrorEnvelopeDetailsInner.ts +90 -0
  69. package/openapi/models/WebhookOperationContext.ts +77 -0
  70. package/openapi/models/WebhookPayload.ts +132 -0
  71. package/openapi/models/WorkflowCreateRequest.ts +143 -0
  72. package/openapi/models/WorkflowCreateResponse.ts +114 -0
  73. package/openapi/models/WorkflowCreateSuccessEnvelope.ts +93 -0
  74. package/openapi/models/WorkflowDownloadResponse.ts +74 -0
  75. package/openapi/models/WorkflowDownloadSuccessEnvelope.ts +93 -0
  76. package/openapi/models/WorkflowEdge.ts +77 -0
  77. package/openapi/models/WorkflowStatus.ts +62 -0
  78. package/openapi/models/WorkflowStatusResponse.ts +101 -0
  79. package/openapi/models/WorkflowStatusSuccessEnvelope.ts +93 -0
  80. package/openapi/models/index.ts +64 -0
  81. package/openapi/runtime.ts +432 -0
  82. package/operations/README.md +17 -0
  83. package/operations/archive.ts +16 -0
  84. package/operations/compress.ts +177 -0
  85. package/operations/convert.ts +69 -0
  86. package/operations/index.ts +7 -0
  87. package/operations/merge.ts +95 -0
  88. package/operations/thumbnail.ts +66 -0
  89. package/package.json +19 -0
@@ -0,0 +1,91 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { OptionSchema } from './OptionSchema';
17
+ import {
18
+ OptionSchemaFromJSON,
19
+ OptionSchemaFromJSONTyped,
20
+ OptionSchemaToJSON,
21
+ OptionSchemaToJSONTyped,
22
+ } from './OptionSchema';
23
+
24
+ /**
25
+ * MIME-group-specific option schema
26
+ * @export
27
+ * @interface MimeGroupSchema
28
+ */
29
+ export interface MimeGroupSchema {
30
+ /**
31
+ * List of MIME types in this group
32
+ * @type {Array<string>}
33
+ * @memberof MimeGroupSchema
34
+ */
35
+ mimes: Array<string>;
36
+ /**
37
+ * Options specific to this MIME group, keyed by option name
38
+ * @type {{ [key: string]: OptionSchema; }}
39
+ * @memberof MimeGroupSchema
40
+ */
41
+ options: { [key: string]: OptionSchema; };
42
+ /**
43
+ * Per-input overrides for this MIME group, keyed by option name (multi-input only)
44
+ * @type {{ [key: string]: OptionSchema; }}
45
+ * @memberof MimeGroupSchema
46
+ */
47
+ perInputOptions?: { [key: string]: OptionSchema; };
48
+ }
49
+
50
+ /**
51
+ * Check if a given object implements the MimeGroupSchema interface.
52
+ */
53
+ export function instanceOfMimeGroupSchema(value: object): value is MimeGroupSchema {
54
+ if (!('mimes' in value) || value['mimes'] === undefined) return false;
55
+ if (!('options' in value) || value['options'] === undefined) return false;
56
+ return true;
57
+ }
58
+
59
+ export function MimeGroupSchemaFromJSON(json: any): MimeGroupSchema {
60
+ return MimeGroupSchemaFromJSONTyped(json, false);
61
+ }
62
+
63
+ export function MimeGroupSchemaFromJSONTyped(json: any, ignoreDiscriminator: boolean): MimeGroupSchema {
64
+ if (json == null) {
65
+ return json;
66
+ }
67
+ return {
68
+
69
+ 'mimes': json['mimes'],
70
+ 'options': (mapValues(json['options'], OptionSchemaFromJSON)),
71
+ 'perInputOptions': json['per_input_options'] == null ? undefined : (mapValues(json['per_input_options'], OptionSchemaFromJSON)),
72
+ };
73
+ }
74
+
75
+ export function MimeGroupSchemaToJSON(json: any): MimeGroupSchema {
76
+ return MimeGroupSchemaToJSONTyped(json, false);
77
+ }
78
+
79
+ export function MimeGroupSchemaToJSONTyped(value?: MimeGroupSchema | null, ignoreDiscriminator: boolean = false): any {
80
+ if (value == null) {
81
+ return value;
82
+ }
83
+
84
+ return {
85
+
86
+ 'mimes': value['mimes'],
87
+ 'options': (mapValues(value['options'], OptionSchemaToJSON)),
88
+ 'per_input_options': value['perInputOptions'] == null ? undefined : (mapValues(value['perInputOptions'], OptionSchemaToJSON)),
89
+ };
90
+ }
91
+
@@ -0,0 +1,85 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { MultipartCompleteRequestPartsInner } from './MultipartCompleteRequestPartsInner';
17
+ import {
18
+ MultipartCompleteRequestPartsInnerFromJSON,
19
+ MultipartCompleteRequestPartsInnerFromJSONTyped,
20
+ MultipartCompleteRequestPartsInnerToJSON,
21
+ MultipartCompleteRequestPartsInnerToJSONTyped,
22
+ } from './MultipartCompleteRequestPartsInner';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface MultipartCompleteRequest
28
+ */
29
+ export interface MultipartCompleteRequest {
30
+ /**
31
+ * UUID v7 format identifier (time-ordered)
32
+ * @type {string}
33
+ * @memberof MultipartCompleteRequest
34
+ */
35
+ fileId: string;
36
+ /**
37
+ * ETags for parts 2 through total_parts, collected from S3 PUT responses.
38
+ * Part 1 ETag is already known from the initiate step.
39
+ *
40
+ * @type {Array<MultipartCompleteRequestPartsInner>}
41
+ * @memberof MultipartCompleteRequest
42
+ */
43
+ parts: Array<MultipartCompleteRequestPartsInner>;
44
+ }
45
+
46
+ /**
47
+ * Check if a given object implements the MultipartCompleteRequest interface.
48
+ */
49
+ export function instanceOfMultipartCompleteRequest(value: object): value is MultipartCompleteRequest {
50
+ if (!('fileId' in value) || value['fileId'] === undefined) return false;
51
+ if (!('parts' in value) || value['parts'] === undefined) return false;
52
+ return true;
53
+ }
54
+
55
+ export function MultipartCompleteRequestFromJSON(json: any): MultipartCompleteRequest {
56
+ return MultipartCompleteRequestFromJSONTyped(json, false);
57
+ }
58
+
59
+ export function MultipartCompleteRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): MultipartCompleteRequest {
60
+ if (json == null) {
61
+ return json;
62
+ }
63
+ return {
64
+
65
+ 'fileId': json['file_id'],
66
+ 'parts': ((json['parts'] as Array<any>).map(MultipartCompleteRequestPartsInnerFromJSON)),
67
+ };
68
+ }
69
+
70
+ export function MultipartCompleteRequestToJSON(json: any): MultipartCompleteRequest {
71
+ return MultipartCompleteRequestToJSONTyped(json, false);
72
+ }
73
+
74
+ export function MultipartCompleteRequestToJSONTyped(value?: MultipartCompleteRequest | null, ignoreDiscriminator: boolean = false): any {
75
+ if (value == null) {
76
+ return value;
77
+ }
78
+
79
+ return {
80
+
81
+ 'file_id': value['fileId'],
82
+ 'parts': ((value['parts'] as Array<any>).map(MultipartCompleteRequestPartsInnerToJSON)),
83
+ };
84
+ }
85
+
@@ -0,0 +1,75 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface MultipartCompleteRequestPartsInner
20
+ */
21
+ export interface MultipartCompleteRequestPartsInner {
22
+ /**
23
+ * S3 part number (must match presigned_urls part_number)
24
+ * @type {number}
25
+ * @memberof MultipartCompleteRequestPartsInner
26
+ */
27
+ partNumber: number;
28
+ /**
29
+ * ETag from S3 PUT response header
30
+ * @type {string}
31
+ * @memberof MultipartCompleteRequestPartsInner
32
+ */
33
+ etag: string;
34
+ }
35
+
36
+ /**
37
+ * Check if a given object implements the MultipartCompleteRequestPartsInner interface.
38
+ */
39
+ export function instanceOfMultipartCompleteRequestPartsInner(value: object): value is MultipartCompleteRequestPartsInner {
40
+ if (!('partNumber' in value) || value['partNumber'] === undefined) return false;
41
+ if (!('etag' in value) || value['etag'] === undefined) return false;
42
+ return true;
43
+ }
44
+
45
+ export function MultipartCompleteRequestPartsInnerFromJSON(json: any): MultipartCompleteRequestPartsInner {
46
+ return MultipartCompleteRequestPartsInnerFromJSONTyped(json, false);
47
+ }
48
+
49
+ export function MultipartCompleteRequestPartsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): MultipartCompleteRequestPartsInner {
50
+ if (json == null) {
51
+ return json;
52
+ }
53
+ return {
54
+
55
+ 'partNumber': json['part_number'],
56
+ 'etag': json['etag'],
57
+ };
58
+ }
59
+
60
+ export function MultipartCompleteRequestPartsInnerToJSON(json: any): MultipartCompleteRequestPartsInner {
61
+ return MultipartCompleteRequestPartsInnerToJSONTyped(json, false);
62
+ }
63
+
64
+ export function MultipartCompleteRequestPartsInnerToJSONTyped(value?: MultipartCompleteRequestPartsInner | null, ignoreDiscriminator: boolean = false): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+
69
+ return {
70
+
71
+ 'part_number': value['partNumber'],
72
+ 'etag': value['etag'],
73
+ };
74
+ }
75
+
@@ -0,0 +1,137 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { PresignedUrlPart } from './PresignedUrlPart';
17
+ import {
18
+ PresignedUrlPartFromJSON,
19
+ PresignedUrlPartFromJSONTyped,
20
+ PresignedUrlPartToJSON,
21
+ PresignedUrlPartToJSONTyped,
22
+ } from './PresignedUrlPart';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface MultipartInitiateResponse
28
+ */
29
+ export interface MultipartInitiateResponse {
30
+ /**
31
+ * UUID v7 format identifier (time-ordered)
32
+ * @type {string}
33
+ * @memberof MultipartInitiateResponse
34
+ */
35
+ fileId: string;
36
+ /**
37
+ * MIME type detected from the first chunk
38
+ * @type {string}
39
+ * @memberof MultipartInitiateResponse
40
+ */
41
+ mimeType: string;
42
+ /**
43
+ * ETag of the first chunk stored as S3 part 1
44
+ * @type {string}
45
+ * @memberof MultipartInitiateResponse
46
+ */
47
+ firstChunkEtag: string;
48
+ /**
49
+ * Size of the first chunk received (for client validation)
50
+ * @type {number}
51
+ * @memberof MultipartInitiateResponse
52
+ */
53
+ firstChunkSizeBytes: number;
54
+ /**
55
+ * Total number of parts. The client slices the remaining file into
56
+ * exactly (total_parts - 1) chunks using recommended_chunk_size.
57
+ * The last chunk may be smaller.
58
+ *
59
+ * @type {number}
60
+ * @memberof MultipartInitiateResponse
61
+ */
62
+ totalParts: number;
63
+ /**
64
+ * Chunk size in bytes for remaining parts. Calculated from first chunk
65
+ * throughput * 5s target, clamped to 5MB-100MB. The last chunk may be
66
+ * smaller than 5MB.
67
+ *
68
+ * @type {number}
69
+ * @memberof MultipartInitiateResponse
70
+ */
71
+ recommendedChunkSize: number;
72
+ /**
73
+ * Pre-signed S3 PUT URLs for parts 2 through total_parts.
74
+ * Each URL accepts a PUT request with raw chunk bytes as body.
75
+ * Collect the ETag from each S3 response for the complete request.
76
+ *
77
+ * @type {Array<PresignedUrlPart>}
78
+ * @memberof MultipartInitiateResponse
79
+ */
80
+ presignedUrls: Array<PresignedUrlPart>;
81
+ }
82
+
83
+ /**
84
+ * Check if a given object implements the MultipartInitiateResponse interface.
85
+ */
86
+ export function instanceOfMultipartInitiateResponse(value: object): value is MultipartInitiateResponse {
87
+ if (!('fileId' in value) || value['fileId'] === undefined) return false;
88
+ if (!('mimeType' in value) || value['mimeType'] === undefined) return false;
89
+ if (!('firstChunkEtag' in value) || value['firstChunkEtag'] === undefined) return false;
90
+ if (!('firstChunkSizeBytes' in value) || value['firstChunkSizeBytes'] === undefined) return false;
91
+ if (!('totalParts' in value) || value['totalParts'] === undefined) return false;
92
+ if (!('recommendedChunkSize' in value) || value['recommendedChunkSize'] === undefined) return false;
93
+ if (!('presignedUrls' in value) || value['presignedUrls'] === undefined) return false;
94
+ return true;
95
+ }
96
+
97
+ export function MultipartInitiateResponseFromJSON(json: any): MultipartInitiateResponse {
98
+ return MultipartInitiateResponseFromJSONTyped(json, false);
99
+ }
100
+
101
+ export function MultipartInitiateResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): MultipartInitiateResponse {
102
+ if (json == null) {
103
+ return json;
104
+ }
105
+ return {
106
+
107
+ 'fileId': json['file_id'],
108
+ 'mimeType': json['mime_type'],
109
+ 'firstChunkEtag': json['first_chunk_etag'],
110
+ 'firstChunkSizeBytes': json['first_chunk_size_bytes'],
111
+ 'totalParts': json['total_parts'],
112
+ 'recommendedChunkSize': json['recommended_chunk_size'],
113
+ 'presignedUrls': ((json['presigned_urls'] as Array<any>).map(PresignedUrlPartFromJSON)),
114
+ };
115
+ }
116
+
117
+ export function MultipartInitiateResponseToJSON(json: any): MultipartInitiateResponse {
118
+ return MultipartInitiateResponseToJSONTyped(json, false);
119
+ }
120
+
121
+ export function MultipartInitiateResponseToJSONTyped(value?: MultipartInitiateResponse | null, ignoreDiscriminator: boolean = false): any {
122
+ if (value == null) {
123
+ return value;
124
+ }
125
+
126
+ return {
127
+
128
+ 'file_id': value['fileId'],
129
+ 'mime_type': value['mimeType'],
130
+ 'first_chunk_etag': value['firstChunkEtag'],
131
+ 'first_chunk_size_bytes': value['firstChunkSizeBytes'],
132
+ 'total_parts': value['totalParts'],
133
+ 'recommended_chunk_size': value['recommendedChunkSize'],
134
+ 'presigned_urls': ((value['presignedUrls'] as Array<any>).map(PresignedUrlPartToJSON)),
135
+ };
136
+ }
137
+
@@ -0,0 +1,93 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { MultipartInitiateResponse } from './MultipartInitiateResponse';
17
+ import {
18
+ MultipartInitiateResponseFromJSON,
19
+ MultipartInitiateResponseFromJSONTyped,
20
+ MultipartInitiateResponseToJSON,
21
+ MultipartInitiateResponseToJSONTyped,
22
+ } from './MultipartInitiateResponse';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface MultipartInitiateSuccessEnvelope
28
+ */
29
+ export interface MultipartInitiateSuccessEnvelope {
30
+ /**
31
+ *
32
+ * @type {boolean}
33
+ * @memberof MultipartInitiateSuccessEnvelope
34
+ */
35
+ success: MultipartInitiateSuccessEnvelopeSuccessEnum;
36
+ /**
37
+ *
38
+ * @type {MultipartInitiateResponse}
39
+ * @memberof MultipartInitiateSuccessEnvelope
40
+ */
41
+ data: MultipartInitiateResponse;
42
+ }
43
+
44
+
45
+ /**
46
+ * @export
47
+ */
48
+ export const MultipartInitiateSuccessEnvelopeSuccessEnum = {
49
+ true: true
50
+ } as const;
51
+ export type MultipartInitiateSuccessEnvelopeSuccessEnum = typeof MultipartInitiateSuccessEnvelopeSuccessEnum[keyof typeof MultipartInitiateSuccessEnvelopeSuccessEnum];
52
+
53
+
54
+ /**
55
+ * Check if a given object implements the MultipartInitiateSuccessEnvelope interface.
56
+ */
57
+ export function instanceOfMultipartInitiateSuccessEnvelope(value: object): value is MultipartInitiateSuccessEnvelope {
58
+ if (!('success' in value) || value['success'] === undefined) return false;
59
+ if (!('data' in value) || value['data'] === undefined) return false;
60
+ return true;
61
+ }
62
+
63
+ export function MultipartInitiateSuccessEnvelopeFromJSON(json: any): MultipartInitiateSuccessEnvelope {
64
+ return MultipartInitiateSuccessEnvelopeFromJSONTyped(json, false);
65
+ }
66
+
67
+ export function MultipartInitiateSuccessEnvelopeFromJSONTyped(json: any, ignoreDiscriminator: boolean): MultipartInitiateSuccessEnvelope {
68
+ if (json == null) {
69
+ return json;
70
+ }
71
+ return {
72
+
73
+ 'success': json['success'],
74
+ 'data': MultipartInitiateResponseFromJSON(json['data']),
75
+ };
76
+ }
77
+
78
+ export function MultipartInitiateSuccessEnvelopeToJSON(json: any): MultipartInitiateSuccessEnvelope {
79
+ return MultipartInitiateSuccessEnvelopeToJSONTyped(json, false);
80
+ }
81
+
82
+ export function MultipartInitiateSuccessEnvelopeToJSONTyped(value?: MultipartInitiateSuccessEnvelope | null, ignoreDiscriminator: boolean = false): any {
83
+ if (value == null) {
84
+ return value;
85
+ }
86
+
87
+ return {
88
+
89
+ 'success': value['success'],
90
+ 'data': MultipartInitiateResponseToJSON(value['data']),
91
+ };
92
+ }
93
+
@@ -0,0 +1,91 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { OperationType } from './OperationType';
17
+ import {
18
+ OperationTypeFromJSON,
19
+ OperationTypeFromJSONTyped,
20
+ OperationTypeToJSON,
21
+ OperationTypeToJSONTyped,
22
+ } from './OperationType';
23
+
24
+ /**
25
+ * Definition of a single operation within a job
26
+ * @export
27
+ * @interface OperationDefinition
28
+ */
29
+ export interface OperationDefinition {
30
+ /**
31
+ *
32
+ * @type {OperationType}
33
+ * @memberof OperationDefinition
34
+ */
35
+ type: OperationType;
36
+ /**
37
+ * Operation-specific options. The available options and their validation
38
+ * rules depend on the operation type and the input file's MIME type.
39
+ * See `GET /api/operations/schema` for the full schema.
40
+ *
41
+ * Options are validated against the schema using JSON Schema if/then/else
42
+ * rules. For example, `quality` is only valid when `mode: lossy` for
43
+ * compress operations.
44
+ *
45
+ * @type {{ [key: string]: any; }}
46
+ * @memberof OperationDefinition
47
+ */
48
+ options?: { [key: string]: any; };
49
+ }
50
+
51
+
52
+
53
+ /**
54
+ * Check if a given object implements the OperationDefinition interface.
55
+ */
56
+ export function instanceOfOperationDefinition(value: object): value is OperationDefinition {
57
+ if (!('type' in value) || value['type'] === undefined) return false;
58
+ return true;
59
+ }
60
+
61
+ export function OperationDefinitionFromJSON(json: any): OperationDefinition {
62
+ return OperationDefinitionFromJSONTyped(json, false);
63
+ }
64
+
65
+ export function OperationDefinitionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OperationDefinition {
66
+ if (json == null) {
67
+ return json;
68
+ }
69
+ return {
70
+
71
+ 'type': OperationTypeFromJSON(json['type']),
72
+ 'options': json['options'] == null ? undefined : json['options'],
73
+ };
74
+ }
75
+
76
+ export function OperationDefinitionToJSON(json: any): OperationDefinition {
77
+ return OperationDefinitionToJSONTyped(json, false);
78
+ }
79
+
80
+ export function OperationDefinitionToJSONTyped(value?: OperationDefinition | null, ignoreDiscriminator: boolean = false): any {
81
+ if (value == null) {
82
+ return value;
83
+ }
84
+
85
+ return {
86
+
87
+ 'type': OperationTypeToJSON(value['type']),
88
+ 'options': value['options'],
89
+ };
90
+ }
91
+
@@ -0,0 +1,102 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * GISL Compression API
5
+ * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, watermark, merge, archive, convert) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (CDN-cacheable), health probes return flat objects, and `POST /api/contact` returns 204 with no body.
6
+ *
7
+ * The version of the OpenAPI document: 2.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface OperationDownload
20
+ */
21
+ export interface OperationDownload {
22
+ /**
23
+ * Operation type that produced this file
24
+ * @type {string}
25
+ * @memberof OperationDownload
26
+ */
27
+ operation: string;
28
+ /**
29
+ * UUID v7 format identifier (time-ordered)
30
+ * @type {string}
31
+ * @memberof OperationDownload
32
+ */
33
+ operationId: string;
34
+ /**
35
+ * Output filename
36
+ * @type {string}
37
+ * @memberof OperationDownload
38
+ */
39
+ filename: string;
40
+ /**
41
+ * Output file size in bytes
42
+ * @type {number}
43
+ * @memberof OperationDownload
44
+ */
45
+ sizeBytes: number;
46
+ /**
47
+ * Pre-signed download URL
48
+ * @type {string}
49
+ * @memberof OperationDownload
50
+ */
51
+ downloadUrl: string;
52
+ }
53
+
54
+ /**
55
+ * Check if a given object implements the OperationDownload interface.
56
+ */
57
+ export function instanceOfOperationDownload(value: object): value is OperationDownload {
58
+ if (!('operation' in value) || value['operation'] === undefined) return false;
59
+ if (!('operationId' in value) || value['operationId'] === undefined) return false;
60
+ if (!('filename' in value) || value['filename'] === undefined) return false;
61
+ if (!('sizeBytes' in value) || value['sizeBytes'] === undefined) return false;
62
+ if (!('downloadUrl' in value) || value['downloadUrl'] === undefined) return false;
63
+ return true;
64
+ }
65
+
66
+ export function OperationDownloadFromJSON(json: any): OperationDownload {
67
+ return OperationDownloadFromJSONTyped(json, false);
68
+ }
69
+
70
+ export function OperationDownloadFromJSONTyped(json: any, ignoreDiscriminator: boolean): OperationDownload {
71
+ if (json == null) {
72
+ return json;
73
+ }
74
+ return {
75
+
76
+ 'operation': json['operation'],
77
+ 'operationId': json['operation_id'],
78
+ 'filename': json['filename'],
79
+ 'sizeBytes': json['size_bytes'],
80
+ 'downloadUrl': json['download_url'],
81
+ };
82
+ }
83
+
84
+ export function OperationDownloadToJSON(json: any): OperationDownload {
85
+ return OperationDownloadToJSONTyped(json, false);
86
+ }
87
+
88
+ export function OperationDownloadToJSONTyped(value?: OperationDownload | null, ignoreDiscriminator: boolean = false): any {
89
+ if (value == null) {
90
+ return value;
91
+ }
92
+
93
+ return {
94
+
95
+ 'operation': value['operation'],
96
+ 'operation_id': value['operationId'],
97
+ 'filename': value['filename'],
98
+ 'size_bytes': value['sizeBytes'],
99
+ 'download_url': value['downloadUrl'],
100
+ };
101
+ }
102
+