# List all buckets s3_list_buckets: path: /s3/ controller: App\Controller\S3ApiController::listBuckets methods: [GET] # Bucket operations s3_create_bucket: path: /s3/{bucket} controller: App\Controller\S3ApiController::createBucket methods: [PUT] requirements: bucket: '[a-z0-9\-\.]+' s3_delete_bucket: path: /s3/{bucket} controller: App\Controller\S3ApiController::deleteBucket methods: [DELETE] requirements: bucket: '[a-z0-9\-\.]+' s3_head_bucket: path: /s3/{bucket} controller: App\Controller\S3ApiController::headBucket methods: [HEAD] requirements: bucket: '[a-z0-9\-\.]+' s3_list_objects: path: /s3/{bucket} controller: App\Controller\S3ApiController::listObjects methods: [GET] requirements: bucket: '[a-z0-9\-\.]+' # Object operations s3_put_object: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::putObject methods: [PUT] requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_get_object: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::getObject methods: [GET] requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_head_object: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::headObject methods: [HEAD] requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_delete_object: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::deleteObject methods: [DELETE] requirements: bucket: '[a-z0-9\-\.]+' key: '.+' # Multipart upload operations s3_initiate_multipart: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::initiateMultipartUpload methods: [POST] condition: "request.query.has('uploads')" requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_upload_part: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::uploadPart methods: [PUT] condition: "request.query.has('partNumber') and request.query.has('uploadId')" requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_complete_multipart: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::completeMultipartUpload methods: [POST] condition: "request.query.has('uploadId') and not request.query.has('uploads')" requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_abort_multipart: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::abortMultipartUpload methods: [DELETE] condition: "request.query.has('uploadId')" requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_list_parts: path: /s3/{bucket}/{key} controller: App\Controller\S3ApiController::listParts methods: [GET] condition: "request.query.has('uploadId')" requirements: bucket: '[a-z0-9\-\.]+' key: '.+' s3_list_multipart_uploads: path: /s3/{bucket} controller: App\Controller\S3ApiController::listMultipartUploads methods: [GET] condition: "request.query.has('uploads')" requirements: bucket: '[a-z0-9\-\.]+'