diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java index 90b3c3d75..4e56db485 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DeviceController.java @@ -65,6 +65,7 @@ import org.whispersystems.textsecuregcm.entities.PreKeySignatureValidator; import org.whispersystems.textsecuregcm.entities.ProvisioningMessage; import org.whispersystems.textsecuregcm.entities.RemoteAttachment; +import org.whispersystems.textsecuregcm.entities.RemoteAttachmentError; import org.whispersystems.textsecuregcm.entities.RestoreAccountRequest; import org.whispersystems.textsecuregcm.entities.SetPublicKeyRequest; import org.whispersystems.textsecuregcm.entities.TransferArchiveResult; @@ -550,7 +551,10 @@ public CompletionStage recordTransferArchiveUploaded(@ReadOnly @Auth final archive when available. """) @ApiResponse(responseCode = "200", description = "Either a new transfer archive was uploaded for the authenticated device, or the upload has failed", - content = @Content(schema = @Schema(implementation = TransferArchiveResult.class))) + content = @Content(schema = @Schema(description = """ + The location of the transfer archive if the archive was successfully uploaded, otherwise a error indicating that + the upload has failed and the destination device should stop waiting + """, oneOf = {RemoteAttachment.class, RemoteAttachmentError.class}))) @ApiResponse(responseCode = "204", description = "No transfer archive was uploaded before the call completed; clients may repeat the call to continue waiting") @ApiResponse(responseCode = "400", description = "The given timeout was invalid") @ApiResponse(responseCode = "429", description = "Rate-limited; try again after the prescribed delay") diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveResult.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveResult.java index 54928c613..378e1143f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveResult.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveResult.java @@ -14,8 +14,4 @@ @JsonSubTypes.Type(value = RemoteAttachment.class, name = "success"), @JsonSubTypes.Type(value = RemoteAttachmentError.class, name = "error"), }) -@Schema(description = """ - The location of the transfer archive if the archive was successfully uploaded, otherwise a error indicating that - the upload has failed and the destination device should stop waiting - """, oneOf = {RemoteAttachmentError.class, RemoteAttachment.class}) public sealed interface TransferArchiveResult permits RemoteAttachment, RemoteAttachmentError {} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveUploadedRequest.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveUploadedRequest.java index 913021ac5..f94331443 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveUploadedRequest.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/entities/TransferArchiveUploadedRequest.java @@ -25,4 +25,8 @@ public record TransferArchiveUploadedRequest( @NotNull @Valid + @Schema(description = """ + The location of the transfer archive if the archive was successfully uploaded, otherwise a error indicating that + the upload has failed and the destination device should stop waiting + """, oneOf = {RemoteAttachment.class, RemoteAttachmentError.class}) TransferArchiveResult transferArchive) {}