forked from Deuxfleurs/garage
96 lines
1.5 KiB
Text
96 lines
1.5 KiB
Text
$version: "2"
|
|
namespace org.deuxfleurs.garage.k2v
|
|
|
|
use aws.api#service
|
|
use aws.auth#sigv4
|
|
use aws.protocols#restJson1
|
|
|
|
@service(sdkId: "k2v")
|
|
@sigv4(name: "k2v")
|
|
@restJson1
|
|
service K2V {
|
|
version: "2023-04-10"
|
|
resources: [ Item ]
|
|
//operations: [ PollItem, ReadIndex, InsertBatch, DeleteBatch, PollRange ]
|
|
}
|
|
|
|
resource Item {
|
|
read: ReadItem
|
|
put: InsertItem
|
|
//delete: DeleteItem
|
|
//list: ReadBatch
|
|
}
|
|
|
|
@mixin
|
|
structure KeySelector {
|
|
@required
|
|
@httpLabel
|
|
bucketName: String
|
|
|
|
@required
|
|
@httpLabel
|
|
partitionKey: String
|
|
|
|
@required
|
|
@httpQuery("sort_key")
|
|
sortKey: String
|
|
}
|
|
|
|
@readonly
|
|
@http(method: "GET", uri: "/{bucketName}/{partitionKey}", code: 200)
|
|
operation ReadItem {
|
|
input: ReadItemInput
|
|
output: ReadItemOutput
|
|
}
|
|
|
|
@input
|
|
structure ReadItemInput with [KeySelector] {}
|
|
|
|
@output
|
|
structure ReadItemOutput {
|
|
value: ItemList
|
|
}
|
|
|
|
@sparse
|
|
list ItemList {
|
|
member: Blob
|
|
}
|
|
|
|
@idempotent
|
|
@http(method: "PUT", uri: "/{bucketName}/{partitionKey}", code: 204)
|
|
operation InsertItem {
|
|
input: InsertItemInput
|
|
}
|
|
|
|
@input
|
|
structure InsertItemInput with [KeySelector] {}
|
|
|
|
//operation DeleteItem {
|
|
// input: String
|
|
// output: String
|
|
//}
|
|
|
|
//operation PollItem {
|
|
// input: String
|
|
// output: String
|
|
//}
|
|
|
|
//operation ReadIndex {
|
|
// input: String
|
|
// output: String
|
|
//}
|
|
|
|
//operation InsertBatch {
|
|
// input: String
|
|
// output: String
|
|
//}
|
|
|
|
//operation DeleteBatch {
|
|
// input: String
|
|
// output: String
|
|
//}
|
|
|
|
//operation PollRange {
|
|
// input: String
|
|
// output: String
|
|
//}
|