# SPDX-License-Identifier: CC-BY-NC-SA-4.0 arazzo: 1.0.1 info: title: S3 interface core conformance version: 1.0.0 summary: Create a bucket, put an object, read it back, list it, then clean up. description: 'The core tier in the order a real client uses it. Unlike the conformance flows for the other standards in this programme, THIS ONE CANNOT BE RUN ANONYMOUSLY: every request carries an AWS Signature Version 4 header, and an S3 server validates the signature before it routes the operation. That is also why this profile''s adopter registry has no `tested` entries — an unauthenticated caller gets AccessDenied for a supported operation and for an unsupported one alike. The flow writes and then deletes what it wrote. Run it against your own bucket.' sourceDescriptions: - name: profile url: ../openapi.yml type: openapi workflows: - workflowId: core-conformance summary: CreateBucket, PutObject, GetObject, ListObjects, DeleteObject, DeleteBucket. description: 'Every step is a core-tier operation. The flow is destructive by design at the end: it removes the object and bucket it created, so it leaves no residue on the endpoint under test.' inputs: type: object required: - bucket properties: bucket: type: string description: A bucket name you control. key: type: string default: api-commons-conformance.txt steps: - stepId: createBucket description: CreateBucket — PUT /{Bucket}. operationId: $sourceDescriptions.profile.CreateBucket successCriteria: - condition: $statusCode == 200 - stepId: putObject description: PutObject — PUT /{Bucket}/{Key+}. operationId: $sourceDescriptions.profile.PutObject successCriteria: - condition: $statusCode == 200 - stepId: getObject description: GetObject — GET /{Bucket}/{Key+}. operationId: $sourceDescriptions.profile.GetObject successCriteria: - condition: $statusCode == 200 - stepId: listObjects description: ListObjects — GET /{Bucket}. operationId: $sourceDescriptions.profile.ListObjects successCriteria: - condition: $statusCode == 200 - stepId: deleteObject description: DeleteObject — DELETE /{Bucket}/{Key+}. operationId: $sourceDescriptions.profile.DeleteObject successCriteria: - condition: $statusCode == 204 - stepId: deleteBucket description: DeleteBucket — DELETE /{Bucket}. operationId: $sourceDescriptions.profile.DeleteBucket successCriteria: - condition: $statusCode == 204 outputs: bucket: $inputs.bucket