1
proto/tokens/v1/service.proto
mya f068352bf7
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat: fill out apis
2023-12-31 13:41:06 -06:00

118 lines
2.3 KiB
Protocol Buffer

// Copyright (C) 2023 The Licensing Authors
// SPDX-License-Identifier: MIT
//
// This file attempts to follow common styles and design patterns described by
// Google Cloud based on their extensive use of protocol buffers.
//
// - See here for more: https://cloud.google.com/apis/design/design_patterns
//
syntax = "proto3";
package tokens.v1;
import "google/api/annotations.proto";
message AuthenticateRequest {
// grant_type = client_credentials, refresh_token, password, authorization_code, license
string grant_type = 1;
// required for a handful of workflows
// can also come from the basic auth header
string client_id = 2;
string client_secret = 3;
// grant_type=refresh_token
string refresh_token = 4;
// grant_type=password
string username = 5;
string password = 6;
// grant_type=authorization_code
string code = 7;
string redirect_uri = 8;
string code_verifier = 9;
// grant_type=license
string license = 10;
// allow for room to add additional grant_type's
string scope = 20;
}
message AuthenticateResponse {
string access_token = 1;
string token_type = 2;
int32 expires_in = 3;
string refresh_token = 4;
string scope = 5;
// error = invalid_request, invalid_client, invalid_grant, invalid_scope, unauthorized_client, unsupported_grant_type
string error = 10;
string error_description = 11;
string error_uri = 12;
}
message Token {
string id = 1;
string name = 2;
repeated string scopes = 3;
// one of
bool no_expiry = 4;
string expires_at = 5;
string expires_in = 6;
}
message ListRequest {}
message ListResponse {
repeated Token tokens = 5;
}
message CreateRequest {
Token token = 1;
}
message CreateResponse {
string token = 1;
}
message DeleteRequest {
string token_id = 1;
}
message DeleteResponse {}
service TokenService {
rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse) {
option (google.api.http) = {
post: "/v1/token"
body: "*"
};
};
rpc List(ListRequest) returns (ListResponse) {
option (google.api.http) = {
get: "/v1/tokens"
};
};
rpc Create(CreateRequest) returns (CreateResponse) {
option (google.api.http) = {
post: "/v1/tokens"
body: "*"
};
};
rpc Delete(DeleteRequest) returns (DeleteResponse) {
option (google.api.http) = {
delete: "/v1/tokens/{token_id}"
};
};
}