Skip to content

feat: add Vector-API support#3079

Merged
afranken merged 2 commits into
mainfrom
3047-vector-api
Jun 20, 2026
Merged

feat: add Vector-API support#3079
afranken merged 2 commits into
mainfrom
3047-vector-api

Conversation

@afranken

@afranken afranken commented Jun 16, 2026

Copy link
Copy Markdown
Member

Description

Related Issue

fixes #3047

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have signed the Adobe Open Source CLA.
  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Copilot AI review requested due to automatic review settings June 16, 2026 15:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds S3 Vectors (the s3vectors AWS SDK v2 client surface) to S3Mock as an optional feature, implemented as a parallel JSON-based API alongside the existing XML S3 endpoints.

Changes:

  • Introduces a new vectors Spring profile with controllers/services/stores + DTOs for core S3 Vectors operations.
  • Adds server + integration-test dependencies and new integration tests using S3VectorsClient.
  • Updates docs/changelog/docker exposure to describe and publish the new vectors API.

Reviewed changes

Copilot reviewed 134 out of 134 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
server/src/main/resources/application.properties Adds vectors HTTP/HTTPS port properties.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/VectorsTomcatConnectorsConfiguration.kt Registers an additional Tomcat connector for vectors HTTP.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/S3VectorsProperties.kt Defines configuration properties for vectors ports.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/S3VectorsException.kt Adds vectors-specific exception model + common constants.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorsControllerConfiguration.kt Registers JSON converter + vectors controllers + vectors exception handlers.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorBucketController.kt Implements VectorBucket operations (create/get/list/delete).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorIndexController.kt Implements Index operations (create/get/list/delete).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorController.kt Implements vector CRUD (put/get/list/delete).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorQueryController.kt Implements similarity search (QueryVectors).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorPolicyController.kt Implements vector bucket policy endpoints.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorTaggingController.kt Implements tagging endpoints under /tags/**.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorsServiceConfiguration.kt Wires vectors services under the vectors profile.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorBucketService.kt Business logic for vector buckets (validation/ARN handling/pagination).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorIndexService.kt Business logic for indexes (validation/ARN handling/pagination).
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorService.kt Vector CRUD logic including pagination/segmentation.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorArns.kt ARN helpers for vectors resources.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorsStoreConfiguration.kt Wires vectors stores and vectors root directory under vectors/.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorBucketStore.kt Filesystem persistence for vector bucket metadata/policy/tags.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorBucketMetadata.kt Persistent metadata model for vector buckets.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexStore.kt Filesystem persistence for index metadata + tagging.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexMetadata.kt Persistent metadata model for indexes.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/CreateVectorBucketRequest.kt DTO for CreateVectorBucket request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/CreateVectorBucketResponse.kt DTO for CreateVectorBucket response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorBucketRequest.kt DTO for GetVectorBucket request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorBucketResponse.kt DTO for GetVectorBucket response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListVectorBucketsRequest.kt DTO for ListVectorBuckets request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListVectorBucketsResponse.kt DTO for ListVectorBuckets response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/DeleteVectorBucketRequest.kt DTO for DeleteVectorBucket request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/CreateIndexRequest.kt DTO for CreateIndex request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/CreateIndexResponse.kt DTO for CreateIndex response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetIndexRequest.kt DTO for GetIndex request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetIndexResponse.kt DTO for GetIndex response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListIndexesRequest.kt DTO for ListIndexes request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListIndexesResponse.kt DTO for ListIndexes response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/DeleteIndexRequest.kt DTO for DeleteIndex request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/PutVectorsRequest.kt DTO for PutVectors request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorsRequest.kt DTO for GetVectors request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorsResponse.kt DTO for GetVectors response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListVectorsRequest.kt DTO for ListVectors request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListVectorsResponse.kt DTO for ListVectors response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/DeleteVectorsRequest.kt DTO for DeleteVectors request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/QueryVectorsRequest.kt DTO for QueryVectors request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/QueryVectorsResponse.kt DTO for QueryVectors response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/PutVectorBucketPolicyRequest.kt DTO for PutVectorBucketPolicy request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorBucketPolicyRequest.kt DTO for GetVectorBucketPolicy request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetVectorBucketPolicyResponse.kt DTO for GetVectorBucketPolicy response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/DeleteVectorBucketPolicyRequest.kt DTO for DeleteVectorBucketPolicy request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/TagResourceRequest.kt DTO for TagResource request.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListTagsForResourceResponse.kt DTO for ListTagsForResource response.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/VectorsErrorResponse.kt DTO for vectors JSON error responses.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/EncryptionConfiguration.kt DTO for SSE config.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/MetadataConfiguration.kt DTO for metadata config.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/VectorBucket.kt DTO for VectorBucket.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/VectorBucketSummary.kt DTO summary for ListVectorBuckets.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/VectorIndex.kt DTO for VectorIndex.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/IndexSummary.kt DTO summary for ListIndexes.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/VectorData.kt DTO for tagged-union vector payload.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/PutInputVector.kt DTO for vectors ingestion item.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/GetOutputVector.kt DTO for GetVectors output.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/ListOutputVector.kt DTO for ListVectors output.
server/src/main/kotlin/com/adobe/testing/s3mock/vectors/dto/QueryOutputVector.kt DTO for QueryVectors output.
server/src/main/kotlin/com/adobe/testing/s3mock/store/BucketStore.kt Filters bucket folders missing metadata during listBuckets().
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/store/VectorBucketStoreTest.kt Store unit tests for vector buckets.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexStoreTest.kt Store unit tests for indexes.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/service/VectorBucketServiceTest.kt Service unit tests for vector buckets.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/service/VectorIndexServiceTest.kt Service unit tests for indexes.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorBucketControllerTest.kt Controller unit tests for vector buckets.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/controller/VectorIndexControllerTest.kt Controller unit tests for indexes.
server/src/test/kotlin/com/adobe/testing/s3mock/vectors/dto/*.kt DTO serialization/deserialization tests for vectors JSON schema.
server/src/test/resources/com/adobe/testing/s3mock/vectors/dto/*.json Golden JSON fixtures for the DTO tests.
integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/S3TestBase.kt Adds S3VectorsClient factory + cleanup of vector buckets/indexes.
integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/vectors/VectorBucketIT.kt Integration tests for vector bucket operations.
integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/vectors/VectorIT.kt Integration tests for vector CRUD operations.
integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/vectors/VectorQueryIT.kt Integration tests for QueryVectors behavior.
integration-tests/pom.xml Adds s3vectors test dependency + container ports + activates vectors profile.
server/pom.xml Adds software.amazon.awssdk:s3vectors dependency to server module.
docker/Dockerfile Exposes additional ports for vectors.
README.md Documents vectors feature, ports, configuration, and supported operations.
CHANGELOG.md Announces the new vectors API feature for the next release.
INVARIANTS.md Adds requirement to update README for new API surface/ports/profiles.
.agents/skills/document/SKILL.md Updates documentation skill guidance for new API surface/ports.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorService.kt Outdated
Comment thread docker/Dockerfile
Comment thread integration-tests/pom.xml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 134 out of 134 changed files in this pull request and generated 3 comments.

Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/service/VectorService.kt Outdated
@afranken afranken force-pushed the 3047-vector-api branch 3 times, most recently from abddd96 to 520b5cd Compare June 17, 2026 14:13
@afranken afranken requested a review from Copilot June 17, 2026 14:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 137 out of 137 changed files in this pull request and generated 7 comments.

Comment thread integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/S3TestBase.kt Outdated
@afranken afranken force-pushed the 3047-vector-api branch 4 times, most recently from 47d7fd7 to 04445a4 Compare June 17, 2026 20:50
@afranken afranken requested a review from Copilot June 17, 2026 20:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 139 out of 139 changed files in this pull request and generated 5 comments.

Comment thread server/pom.xml Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 140 out of 140 changed files in this pull request and generated 4 comments.

Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexStore.kt Outdated
Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexStore.kt Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 140 out of 140 changed files in this pull request and generated 3 comments.

Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorIndexStore.kt Outdated
Comment thread server/src/main/kotlin/com/adobe/testing/s3mock/vectors/store/VectorStore.kt Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 140 out of 140 changed files in this pull request and generated 3 comments.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 140 out of 140 changed files in this pull request and generated 1 comment.

@afranken afranken force-pushed the 3047-vector-api branch 3 times, most recently from a5db8a2 to b7bff28 Compare June 20, 2026 19:49
@afranken afranken requested a review from Copilot June 20, 2026 19:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 140 out of 140 changed files in this pull request and generated 2 comments.

Comment on lines +94 to +98
val lockKey = lockKey(bucketName, indexName, key)
synchronized(lockStore[lockKey]!!) {
getVectorDir(bucketName, indexName, key).deleteRecursively()
lockStore.remove(lockKey)
}
afranken and others added 2 commits June 20, 2026 21:58
This was mostly implemented using Claude with human guidance.

fixes #3047
@afranken afranken merged commit 95cb4fe into main Jun 20, 2026
7 checks passed
@afranken afranken deleted the 3047-vector-api branch June 20, 2026 20:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Support for AWS S3 Vectors (vector buckets, indexes, and similarity search)

3 participants