@startuml S3Client -> Gateway: PUT /bucket/dest\nx-amz-copy-source: /bucket/source Gateway -> Uplink: CopyObject call note left oldBucket oldKey newBucket newKey end note Uplink -> Satellite: BeginCopyObjectRequest note left Bucket ObjectKey //encrypted// NewBucket NewObjectKey //encrypted// end note Uplink <-- Satellite: BeginCopyObjectResponse note right StreamId SegmentKeys //encrypted// MetadataKey //encrypted// end note Uplink -> Satellite: FinishCopyObjectRequest note left StreamId Bucket ObjectKey //encrypted// NewBucket NewObjectKey //encrypted// SegmentKeys //encrypted// MetadataKey //encrypted// MetaData (optional) //encrypted// end note Uplink <-- Satellite: FinishCopyObjectResponse note right: Object //encrypted// Gateway <-- Uplink: CopyObject return note right: Object S3Client <-- Gateway: 200 response note right end note @enduml