diff --git a/jsapp/js/api/models/importCreateRequest.ts b/jsapp/js/api/models/importCreateRequest.ts index 30342529e8..de58e6987d 100644 --- a/jsapp/js/api/models/importCreateRequest.ts +++ b/jsapp/js/api/models/importCreateRequest.ts @@ -11,8 +11,22 @@ The endpoints are grouped by area of intended use. Each category contains relate */ export interface ImportCreateRequest { - destination: string - url: string - name?: string - assetUid: string + /** @nullable */ + destination?: string | null + /** @nullable */ + url?: string | null + /** @nullable */ + name?: string | null + /** @nullable */ + assetUid?: string | null + /** @nullable */ + base64Encoded?: string | null + /** @nullable */ + library?: boolean | null + /** @nullable */ + desired_type?: string | null + /** @nullable */ + totalFiles?: number | null + /** @nullable */ + file?: string | null } diff --git a/jsapp/js/api/react-query/manage-projects-and-library-content.ts b/jsapp/js/api/react-query/manage-projects-and-library-content.ts index 7a58dfdf50..1d631cfc27 100644 --- a/jsapp/js/api/react-query/manage-projects-and-library-content.ts +++ b/jsapp/js/api/react-query/manage-projects-and-library-content.ts @@ -1772,12 +1772,33 @@ export const importsCreate = async ( options?: RequestInit, ): Promise => { const formData = new FormData() - formData.append(`destination`, importCreateRequest.destination) - formData.append(`url`, importCreateRequest.url) - if (importCreateRequest.name !== undefined) { + if (importCreateRequest.destination !== undefined && importCreateRequest.destination !== null) { + formData.append(`destination`, importCreateRequest.destination) + } + if (importCreateRequest.url !== undefined && importCreateRequest.url !== null) { + formData.append(`url`, importCreateRequest.url) + } + if (importCreateRequest.name !== undefined && importCreateRequest.name !== null) { formData.append(`name`, importCreateRequest.name) } - formData.append(`assetUid`, importCreateRequest.assetUid) + if (importCreateRequest.assetUid !== undefined && importCreateRequest.assetUid !== null) { + formData.append(`assetUid`, importCreateRequest.assetUid) + } + if (importCreateRequest.base64Encoded !== undefined && importCreateRequest.base64Encoded !== null) { + formData.append(`base64Encoded`, importCreateRequest.base64Encoded) + } + if (importCreateRequest.library !== undefined && importCreateRequest.library !== null) { + formData.append(`library`, importCreateRequest.library.toString()) + } + if (importCreateRequest.desired_type !== undefined && importCreateRequest.desired_type !== null) { + formData.append(`desired_type`, importCreateRequest.desired_type) + } + if (importCreateRequest.totalFiles !== undefined && importCreateRequest.totalFiles !== null) { + formData.append(`totalFiles`, importCreateRequest.totalFiles.toString()) + } + if (importCreateRequest.file !== undefined && importCreateRequest.file !== null) { + formData.append(`file`, importCreateRequest.file) + } return fetchWithAuth(getImportsCreateUrl(), { ...options, diff --git a/kpi/schema_extensions/v2/imports/serializers.py b/kpi/schema_extensions/v2/imports/serializers.py index bc84dda329..baa8760183 100644 --- a/kpi/schema_extensions/v2/imports/serializers.py +++ b/kpi/schema_extensions/v2/imports/serializers.py @@ -6,10 +6,25 @@ ImportCreateRequestSerializer = inline_serializer_class( name='ImportCreateRequestSerializer', fields={ - 'destination': serializers.URLField(), - 'url': serializers.URLField(), - 'name': serializers.CharField(required=False, allow_blank=True), - 'assetUid': serializers.CharField(), + 'destination': serializers.URLField( + required=False, allow_blank=True, allow_null=True + ), + 'url': serializers.URLField(required=False, allow_blank=True, allow_null=True), + 'name': serializers.CharField( + required=False, allow_blank=True, allow_null=True + ), + 'assetUid': serializers.CharField( + required=False, allow_blank=True, allow_null=True + ), + 'base64Encoded': serializers.CharField( + required=False, allow_blank=True, allow_null=True + ), + 'library': serializers.BooleanField(required=False, allow_null=True), + 'desired_type': serializers.CharField( + required=False, allow_blank=True, allow_null=True + ), + 'totalFiles': serializers.IntegerField(required=False, allow_null=True), + 'file': serializers.FileField(required=False, allow_null=True), }, ) diff --git a/static/openapi/schema_v2.json b/static/openapi/schema_v2.json index 724d48e406..030ff5ec8f 100644 --- a/static/openapi/schema_v2.json +++ b/static/openapi/schema_v2.json @@ -11257,8 +11257,7 @@ "$ref": "#/components/schemas/ImportCreateRequest" } } - }, - "required": true + } }, "security": [ { @@ -25125,24 +25124,44 @@ "properties": { "destination": { "type": "string", - "format": "uri" + "format": "uri", + "nullable": true }, "url": { "type": "string", - "format": "uri" + "format": "uri", + "nullable": true }, "name": { - "type": "string" + "type": "string", + "nullable": true }, "assetUid": { - "type": "string" + "type": "string", + "nullable": true + }, + "base64Encoded": { + "type": "string", + "nullable": true + }, + "library": { + "type": "boolean", + "nullable": true + }, + "desired_type": { + "type": "string", + "nullable": true + }, + "totalFiles": { + "type": "integer", + "nullable": true + }, + "file": { + "type": "string", + "format": "uri", + "nullable": true } - }, - "required": [ - "assetUid", - "destination", - "url" - ] + } }, "ImportCreateResponse": { "type": "object", diff --git a/static/openapi/schema_v2.yaml b/static/openapi/schema_v2.yaml index d31b76f407..8d1c3d3c08 100644 --- a/static/openapi/schema_v2.yaml +++ b/static/openapi/schema_v2.yaml @@ -8228,7 +8228,6 @@ paths: multipart/form-data: schema: $ref: '#/components/schemas/ImportCreateRequest' - required: true security: - BasicAuth: [] - TokenAuth: [] @@ -17892,17 +17891,33 @@ components: destination: type: string format: uri + nullable: true url: type: string format: uri + nullable: true name: type: string + nullable: true assetUid: type: string - required: - - assetUid - - destination - - url + nullable: true + base64Encoded: + type: string + nullable: true + library: + type: boolean + nullable: true + desired_type: + type: string + nullable: true + totalFiles: + type: integer + nullable: true + file: + type: string + format: uri + nullable: true ImportCreateResponse: type: object properties: