Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
d98ee361
Unverified
Commit
d98ee361
authored
Nov 05, 2025
by
boojack
Committed by
GitHub
Nov 05, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: standardize and improve API structure (#5224)
Co-authored-by:
Claude
<
noreply@anthropic.com
>
parent
5f57f486
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
17 deletions
+17
-17
idp_service.proto
proto/api/v1/idp_service.proto
+9
-9
workspace_service.proto
proto/api/v1/workspace_service.proto
+2
-2
resource_name.go
server/router/api/v1/resource_name.go
+1
-1
idp_service_test.go
server/router/api/v1/test/idp_service_test.go
+4
-4
common.ts
web/src/store/common.ts
+1
-1
No files found.
proto/api/v1/idp_service.proto
View file @
d98ee361
...
@@ -14,19 +14,19 @@ option go_package = "gen/api/v1";
...
@@ -14,19 +14,19 @@ option go_package = "gen/api/v1";
service
IdentityProviderService
{
service
IdentityProviderService
{
// ListIdentityProviders lists identity providers.
// ListIdentityProviders lists identity providers.
rpc
ListIdentityProviders
(
ListIdentityProvidersRequest
)
returns
(
ListIdentityProvidersResponse
)
{
rpc
ListIdentityProviders
(
ListIdentityProvidersRequest
)
returns
(
ListIdentityProvidersResponse
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/identity
P
roviders"
};
option
(
google.api.http
)
=
{
get
:
"/api/v1/identity
-p
roviders"
};
}
}
// GetIdentityProvider gets an identity provider.
// GetIdentityProvider gets an identity provider.
rpc
GetIdentityProvider
(
GetIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
rpc
GetIdentityProvider
(
GetIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v1/{name=identity
P
roviders/*}"
};
option
(
google.api.http
)
=
{
get
:
"/api/v1/{name=identity
-p
roviders/*}"
};
option
(
google.api.method_signature
)
=
"name"
;
option
(
google.api.method_signature
)
=
"name"
;
}
}
// CreateIdentityProvider creates an identity provider.
// CreateIdentityProvider creates an identity provider.
rpc
CreateIdentityProvider
(
CreateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
rpc
CreateIdentityProvider
(
CreateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
option
(
google.api.http
)
=
{
post
:
"/api/v1/identity
P
roviders"
post
:
"/api/v1/identity
-p
roviders"
body
:
"identity_provider"
body
:
"identity_provider"
};
};
option
(
google.api.method_signature
)
=
"identity_provider"
;
option
(
google.api.method_signature
)
=
"identity_provider"
;
...
@@ -35,7 +35,7 @@ service IdentityProviderService {
...
@@ -35,7 +35,7 @@ service IdentityProviderService {
// UpdateIdentityProvider updates an identity provider.
// UpdateIdentityProvider updates an identity provider.
rpc
UpdateIdentityProvider
(
UpdateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
rpc
UpdateIdentityProvider
(
UpdateIdentityProviderRequest
)
returns
(
IdentityProvider
)
{
option
(
google.api.http
)
=
{
option
(
google.api.http
)
=
{
patch
:
"/api/v1/{identity_provider.name=identity
P
roviders/*}"
patch
:
"/api/v1/{identity_provider.name=identity
-p
roviders/*}"
body
:
"identity_provider"
body
:
"identity_provider"
};
};
option
(
google.api.method_signature
)
=
"identity_provider,update_mask"
;
option
(
google.api.method_signature
)
=
"identity_provider,update_mask"
;
...
@@ -43,7 +43,7 @@ service IdentityProviderService {
...
@@ -43,7 +43,7 @@ service IdentityProviderService {
// DeleteIdentityProvider deletes an identity provider.
// DeleteIdentityProvider deletes an identity provider.
rpc
DeleteIdentityProvider
(
DeleteIdentityProviderRequest
)
returns
(
google.protobuf.Empty
)
{
rpc
DeleteIdentityProvider
(
DeleteIdentityProviderRequest
)
returns
(
google.protobuf.Empty
)
{
option
(
google.api.http
)
=
{
delete
:
"/api/v1/{name=identity
P
roviders/*}"
};
option
(
google.api.http
)
=
{
delete
:
"/api/v1/{name=identity
-p
roviders/*}"
};
option
(
google.api.method_signature
)
=
"name"
;
option
(
google.api.method_signature
)
=
"name"
;
}
}
}
}
...
@@ -51,14 +51,14 @@ service IdentityProviderService {
...
@@ -51,14 +51,14 @@ service IdentityProviderService {
message
IdentityProvider
{
message
IdentityProvider
{
option
(
google.api.resource
)
=
{
option
(
google.api.resource
)
=
{
type
:
"memos.api.v1/IdentityProvider"
type
:
"memos.api.v1/IdentityProvider"
pattern
:
"identity
P
roviders/{idp}"
pattern
:
"identity
-p
roviders/{idp}"
name_field
:
"name"
name_field
:
"name"
singular
:
"identityProvider"
singular
:
"identityProvider"
plural
:
"identityProviders"
plural
:
"identityProviders"
};
};
// The resource name of the identity provider.
// The resource name of the identity provider.
// Format: identity
P
roviders/{idp}
// Format: identity
-p
roviders/{idp}
string
name
=
1
[(
google.api.field_behavior
)
=
IDENTIFIER
];
string
name
=
1
[(
google.api.field_behavior
)
=
IDENTIFIER
];
// Required. The type of the identity provider.
// Required. The type of the identity provider.
...
@@ -112,7 +112,7 @@ message ListIdentityProvidersResponse {
...
@@ -112,7 +112,7 @@ message ListIdentityProvidersResponse {
message
GetIdentityProviderRequest
{
message
GetIdentityProviderRequest
{
// Required. The resource name of the identity provider to get.
// Required. The resource name of the identity provider to get.
// Format: identity
P
roviders/{idp}
// Format: identity
-p
roviders/{idp}
string
name
=
1
[
string
name
=
1
[
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
...
@@ -139,7 +139,7 @@ message UpdateIdentityProviderRequest {
...
@@ -139,7 +139,7 @@ message UpdateIdentityProviderRequest {
message
DeleteIdentityProviderRequest
{
message
DeleteIdentityProviderRequest
{
// Required. The resource name of the identity provider to delete.
// Required. The resource name of the identity provider to delete.
// Format: identity
P
roviders/{idp}
// Format: identity
-p
roviders/{idp}
string
name
=
1
[
string
name
=
1
[
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
(
google.api.resource_reference
)
=
{
type
:
"memos.api.v1/IdentityProvider"
}
...
...
proto/api/v1/workspace_service.proto
View file @
d98ee361
...
@@ -54,7 +54,7 @@ message GetWorkspaceProfileRequest {}
...
@@ -54,7 +54,7 @@ message GetWorkspaceProfileRequest {}
// A workspace setting resource.
// A workspace setting resource.
message
WorkspaceSetting
{
message
WorkspaceSetting
{
option
(
google.api.resource
)
=
{
option
(
google.api.resource
)
=
{
type
:
"
api.memos.dev
/WorkspaceSetting"
type
:
"
memos.api.v1
/WorkspaceSetting"
pattern
:
"workspace/settings/{setting}"
pattern
:
"workspace/settings/{setting}"
singular
:
"workspaceSetting"
singular
:
"workspaceSetting"
plural
:
"workspaceSettings"
plural
:
"workspaceSettings"
...
@@ -178,7 +178,7 @@ message GetWorkspaceSettingRequest {
...
@@ -178,7 +178,7 @@ message GetWorkspaceSettingRequest {
// Format: workspace/settings/{setting}
// Format: workspace/settings/{setting}
string
name
=
1
[
string
name
=
1
[
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.field_behavior
)
=
REQUIRED
,
(
google.api.resource_reference
)
=
{
type
:
"
api.memos.dev
/WorkspaceSetting"
}
(
google.api.resource_reference
)
=
{
type
:
"
memos.api.v1
/WorkspaceSetting"
}
];
];
}
}
...
...
server/router/api/v1/resource_name.go
View file @
d98ee361
...
@@ -16,7 +16,7 @@ const (
...
@@ -16,7 +16,7 @@ const (
AttachmentNamePrefix
=
"attachments/"
AttachmentNamePrefix
=
"attachments/"
ReactionNamePrefix
=
"reactions/"
ReactionNamePrefix
=
"reactions/"
InboxNamePrefix
=
"inboxes/"
InboxNamePrefix
=
"inboxes/"
IdentityProviderNamePrefix
=
"identity
P
roviders/"
IdentityProviderNamePrefix
=
"identity
-p
roviders/"
ActivityNamePrefix
=
"activities/"
ActivityNamePrefix
=
"activities/"
WebhookNamePrefix
=
"webhooks/"
WebhookNamePrefix
=
"webhooks/"
)
)
...
...
server/router/api/v1/test/idp_service_test.go
View file @
d98ee361
...
@@ -56,7 +56,7 @@ func TestCreateIdentityProvider(t *testing.T) {
...
@@ -56,7 +56,7 @@ func TestCreateIdentityProvider(t *testing.T) {
require
.
NotNil
(
t
,
resp
)
require
.
NotNil
(
t
,
resp
)
require
.
Equal
(
t
,
"Test OAuth2 Provider"
,
resp
.
Title
)
require
.
Equal
(
t
,
"Test OAuth2 Provider"
,
resp
.
Title
)
require
.
Equal
(
t
,
v1pb
.
IdentityProvider_OAUTH2
,
resp
.
Type
)
require
.
Equal
(
t
,
v1pb
.
IdentityProvider_OAUTH2
,
resp
.
Type
)
require
.
Contains
(
t
,
resp
.
Name
,
"identity
P
roviders/"
)
require
.
Contains
(
t
,
resp
.
Name
,
"identity
-p
roviders/"
)
require
.
NotNil
(
t
,
resp
.
Config
.
GetOauth2Config
())
require
.
NotNil
(
t
,
resp
.
Config
.
GetOauth2Config
())
require
.
Equal
(
t
,
"test-client-id"
,
resp
.
Config
.
GetOauth2Config
()
.
ClientId
)
require
.
Equal
(
t
,
"test-client-id"
,
resp
.
Config
.
GetOauth2Config
()
.
ClientId
)
})
})
...
@@ -249,7 +249,7 @@ func TestGetIdentityProvider(t *testing.T) {
...
@@ -249,7 +249,7 @@ func TestGetIdentityProvider(t *testing.T) {
defer
ts
.
Cleanup
()
defer
ts
.
Cleanup
()
req
:=
&
v1pb
.
GetIdentityProviderRequest
{
req
:=
&
v1pb
.
GetIdentityProviderRequest
{
Name
:
"identity
P
roviders/999"
,
Name
:
"identity
-p
roviders/999"
,
}
}
_
,
err
:=
ts
.
Service
.
GetIdentityProvider
(
ctx
,
req
)
_
,
err
:=
ts
.
Service
.
GetIdentityProvider
(
ctx
,
req
)
...
@@ -355,7 +355,7 @@ func TestUpdateIdentityProvider(t *testing.T) {
...
@@ -355,7 +355,7 @@ func TestUpdateIdentityProvider(t *testing.T) {
req
:=
&
v1pb
.
UpdateIdentityProviderRequest
{
req
:=
&
v1pb
.
UpdateIdentityProviderRequest
{
IdentityProvider
:
&
v1pb
.
IdentityProvider
{
IdentityProvider
:
&
v1pb
.
IdentityProvider
{
Name
:
"identity
P
roviders/1"
,
Name
:
"identity
-p
roviders/1"
,
Title
:
"Updated Provider"
,
Title
:
"Updated Provider"
,
},
},
}
}
...
@@ -466,7 +466,7 @@ func TestDeleteIdentityProvider(t *testing.T) {
...
@@ -466,7 +466,7 @@ func TestDeleteIdentityProvider(t *testing.T) {
userCtx
:=
ts
.
CreateUserContext
(
ctx
,
hostUser
.
ID
)
userCtx
:=
ts
.
CreateUserContext
(
ctx
,
hostUser
.
ID
)
req
:=
&
v1pb
.
DeleteIdentityProviderRequest
{
req
:=
&
v1pb
.
DeleteIdentityProviderRequest
{
Name
:
"identity
P
roviders/999"
,
Name
:
"identity
-p
roviders/999"
,
}
}
_
,
err
=
ts
.
Service
.
DeleteIdentityProvider
(
userCtx
,
req
)
_
,
err
=
ts
.
Service
.
DeleteIdentityProvider
(
userCtx
,
req
)
...
...
web/src/store/common.ts
View file @
d98ee361
export
const
workspaceSettingNamePrefix
=
"workspace/settings/"
;
export
const
workspaceSettingNamePrefix
=
"workspace/settings/"
;
export
const
userNamePrefix
=
"users/"
;
export
const
userNamePrefix
=
"users/"
;
export
const
memoNamePrefix
=
"memos/"
;
export
const
memoNamePrefix
=
"memos/"
;
export
const
identityProviderNamePrefix
=
"identity
P
roviders/"
;
export
const
identityProviderNamePrefix
=
"identity
-p
roviders/"
;
export
const
activityNamePrefix
=
"activities/"
;
export
const
activityNamePrefix
=
"activities/"
;
export
const
extractUserIdFromName
=
(
name
:
string
)
=>
{
export
const
extractUserIdFromName
=
(
name
:
string
)
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment