chore: standardize and improve API structure (#5224)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
boojack 2025-11-05 22:36:51 +08:00 committed by GitHub
parent 5f57f48673
commit d98ee36178
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 17 additions and 17 deletions

View File

@ -14,19 +14,19 @@ option go_package = "gen/api/v1";
service IdentityProviderService {
// ListIdentityProviders lists identity providers.
rpc ListIdentityProviders(ListIdentityProvidersRequest) returns (ListIdentityProvidersResponse) {
option (google.api.http) = {get: "/api/v1/identityProviders"};
option (google.api.http) = {get: "/api/v1/identity-providers"};
}
// GetIdentityProvider gets an identity provider.
rpc GetIdentityProvider(GetIdentityProviderRequest) returns (IdentityProvider) {
option (google.api.http) = {get: "/api/v1/{name=identityProviders/*}"};
option (google.api.http) = {get: "/api/v1/{name=identity-providers/*}"};
option (google.api.method_signature) = "name";
}
// CreateIdentityProvider creates an identity provider.
rpc CreateIdentityProvider(CreateIdentityProviderRequest) returns (IdentityProvider) {
option (google.api.http) = {
post: "/api/v1/identityProviders"
post: "/api/v1/identity-providers"
body: "identity_provider"
};
option (google.api.method_signature) = "identity_provider";
@ -35,7 +35,7 @@ service IdentityProviderService {
// UpdateIdentityProvider updates an identity provider.
rpc UpdateIdentityProvider(UpdateIdentityProviderRequest) returns (IdentityProvider) {
option (google.api.http) = {
patch: "/api/v1/{identity_provider.name=identityProviders/*}"
patch: "/api/v1/{identity_provider.name=identity-providers/*}"
body: "identity_provider"
};
option (google.api.method_signature) = "identity_provider,update_mask";
@ -43,7 +43,7 @@ service IdentityProviderService {
// DeleteIdentityProvider deletes an identity provider.
rpc DeleteIdentityProvider(DeleteIdentityProviderRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {delete: "/api/v1/{name=identityProviders/*}"};
option (google.api.http) = {delete: "/api/v1/{name=identity-providers/*}"};
option (google.api.method_signature) = "name";
}
}
@ -51,14 +51,14 @@ service IdentityProviderService {
message IdentityProvider {
option (google.api.resource) = {
type: "memos.api.v1/IdentityProvider"
pattern: "identityProviders/{idp}"
pattern: "identity-providers/{idp}"
name_field: "name"
singular: "identityProvider"
plural: "identityProviders"
};
// The resource name of the identity provider.
// Format: identityProviders/{idp}
// Format: identity-providers/{idp}
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
// Required. The type of the identity provider.
@ -112,7 +112,7 @@ message ListIdentityProvidersResponse {
message GetIdentityProviderRequest {
// Required. The resource name of the identity provider to get.
// Format: identityProviders/{idp}
// Format: identity-providers/{idp}
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "memos.api.v1/IdentityProvider"}
@ -139,7 +139,7 @@ message UpdateIdentityProviderRequest {
message DeleteIdentityProviderRequest {
// Required. The resource name of the identity provider to delete.
// Format: identityProviders/{idp}
// Format: identity-providers/{idp}
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "memos.api.v1/IdentityProvider"}

View File

@ -54,7 +54,7 @@ message GetWorkspaceProfileRequest {}
// A workspace setting resource.
message WorkspaceSetting {
option (google.api.resource) = {
type: "api.memos.dev/WorkspaceSetting"
type: "memos.api.v1/WorkspaceSetting"
pattern: "workspace/settings/{setting}"
singular: "workspaceSetting"
plural: "workspaceSettings"
@ -178,7 +178,7 @@ message GetWorkspaceSettingRequest {
// Format: workspace/settings/{setting}
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {type: "api.memos.dev/WorkspaceSetting"}
(google.api.resource_reference) = {type: "memos.api.v1/WorkspaceSetting"}
];
}

View File

@ -16,7 +16,7 @@ const (
AttachmentNamePrefix = "attachments/"
ReactionNamePrefix = "reactions/"
InboxNamePrefix = "inboxes/"
IdentityProviderNamePrefix = "identityProviders/"
IdentityProviderNamePrefix = "identity-providers/"
ActivityNamePrefix = "activities/"
WebhookNamePrefix = "webhooks/"
)

View File

@ -56,7 +56,7 @@ func TestCreateIdentityProvider(t *testing.T) {
require.NotNil(t, resp)
require.Equal(t, "Test OAuth2 Provider", resp.Title)
require.Equal(t, v1pb.IdentityProvider_OAUTH2, resp.Type)
require.Contains(t, resp.Name, "identityProviders/")
require.Contains(t, resp.Name, "identity-providers/")
require.NotNil(t, resp.Config.GetOauth2Config())
require.Equal(t, "test-client-id", resp.Config.GetOauth2Config().ClientId)
})
@ -249,7 +249,7 @@ func TestGetIdentityProvider(t *testing.T) {
defer ts.Cleanup()
req := &v1pb.GetIdentityProviderRequest{
Name: "identityProviders/999",
Name: "identity-providers/999",
}
_, err := ts.Service.GetIdentityProvider(ctx, req)
@ -355,7 +355,7 @@ func TestUpdateIdentityProvider(t *testing.T) {
req := &v1pb.UpdateIdentityProviderRequest{
IdentityProvider: &v1pb.IdentityProvider{
Name: "identityProviders/1",
Name: "identity-providers/1",
Title: "Updated Provider",
},
}
@ -466,7 +466,7 @@ func TestDeleteIdentityProvider(t *testing.T) {
userCtx := ts.CreateUserContext(ctx, hostUser.ID)
req := &v1pb.DeleteIdentityProviderRequest{
Name: "identityProviders/999",
Name: "identity-providers/999",
}
_, err = ts.Service.DeleteIdentityProvider(userCtx, req)

View File

@ -1,7 +1,7 @@
export const workspaceSettingNamePrefix = "workspace/settings/";
export const userNamePrefix = "users/";
export const memoNamePrefix = "memos/";
export const identityProviderNamePrefix = "identityProviders/";
export const identityProviderNamePrefix = "identity-providers/";
export const activityNamePrefix = "activities/";
export const extractUserIdFromName = (name: string) => {