mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 18:17:35 +00:00
feat: add admin proto
This commit is contained in:
7
pkg/admin/api/grpc/generate.go
Normal file
7
pkg/admin/api/grpc/generate.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package grpc
|
||||
|
||||
//go:generate protoc -I$GOPATH/src -I../proto -I${GOPATH}/src/github.com/envoyproxy/protoc-gen-validate --go_out=plugins=grpc:$GOPATH/src ../proto/org.proto
|
||||
//go:generate protoc -I$GOPATH/src -I../proto -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis -I${GOPATH}/src/github.com/envoyproxy/protoc-gen-validate -I${GOPATH}/src/github.com/caos/citadel/utils/protoc/protoc-gen-authoption --go_out=plugins=grpc:${GOPATH}/src --grpc-gateway_out=logtostderr=true:${GOPATH}/src --swagger_out=logtostderr=true:. --authoption_out=. ../proto/admin.proto
|
||||
//go:generate mockgen -package api -destination ./mock/admin.proto.mock.go github.com/caos/citadel/admin/api/grpc AdminServiceClient
|
||||
|
||||
//go:generate ../../../console/etc/generate-grpc.sh
|
100
pkg/admin/api/proto/admin.proto
Normal file
100
pkg/admin/api/proto/admin.proto
Normal file
@@ -0,0 +1,100 @@
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/struct.proto";
|
||||
import "protoc-gen-swagger/options/annotations.proto";
|
||||
import "authoption/options.proto";
|
||||
import "github.com/caos/zitadel/pkg/admin/api/proto/org.proto";
|
||||
|
||||
package zitadel.admin.api.v1;
|
||||
|
||||
option go_package ="github.com/caos/zitadel/admin/api/grpc";
|
||||
|
||||
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
|
||||
info: {
|
||||
title: "admin service";
|
||||
version: "0.1";
|
||||
contact:{
|
||||
url: "https://github.com/caos/zitadel/admin"
|
||||
};
|
||||
};
|
||||
|
||||
schemes: HTTPS;
|
||||
|
||||
consumes: "application/json";
|
||||
consumes: "application/grpc";
|
||||
|
||||
produces: "application/json";
|
||||
produces: "application/grpc";
|
||||
};
|
||||
|
||||
service AdminService {
|
||||
// ---------
|
||||
// Probes
|
||||
// ---------
|
||||
|
||||
// Healthz returns status OK as soon as the service started
|
||||
rpc Healthz(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/healthz"
|
||||
};
|
||||
}
|
||||
|
||||
// Ready returns status OK as soon as all dependent services are available
|
||||
rpc Ready(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
get: "/ready"
|
||||
};
|
||||
}
|
||||
|
||||
rpc Validate(google.protobuf.Empty) returns (google.protobuf.Struct) {
|
||||
option (google.api.http) = {
|
||||
get: "/validate"
|
||||
};
|
||||
}
|
||||
|
||||
//ORG
|
||||
rpc IsOrgUnique(zitadel.admin.v1.UniqueOrgRequest) returns (zitadel.admin.v1.UniqueOrgResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/orgs/_isunique"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "iam.read"
|
||||
};
|
||||
}
|
||||
|
||||
rpc GetOrgByID(zitadel.admin.v1.OrgID) returns (zitadel.admin.v1.Org) {
|
||||
option (google.api.http) = {
|
||||
get: "/orgs/{id}"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "iam.read"
|
||||
};
|
||||
}
|
||||
|
||||
rpc SearchOrgs(zitadel.admin.v1.OrgSearchRequest) returns (zitadel.admin.v1.OrgSearchResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/orgs/_search"
|
||||
body: "*"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "iam.read"
|
||||
};
|
||||
}
|
||||
|
||||
rpc SetUpOrg(zitadel.admin.v1.OrgSetUpRequest) returns (zitadel.admin.v1.OrgSetUpResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/orgs/_setup"
|
||||
body: "*"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "iam.write"
|
||||
};
|
||||
}
|
||||
}
|
137
pkg/admin/api/proto/org.proto
Normal file
137
pkg/admin/api/proto/org.proto
Normal file
@@ -0,0 +1,137 @@
|
||||
syntax = "proto3";
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "validate/validate.proto";
|
||||
|
||||
package zitadel.admin.v1;
|
||||
|
||||
option go_package = "github.com/caos/zitadel/pkg/admin/api/grpc";
|
||||
|
||||
message OrgID {
|
||||
string id = 1;
|
||||
}
|
||||
|
||||
message UniqueOrgRequest {
|
||||
string name = 1 [(validate.rules).string.min_len = 1];
|
||||
string domain = 2 [(validate.rules).string.min_len = 1];
|
||||
}
|
||||
|
||||
message UniqueOrgResponse {
|
||||
bool is_unique = 1;
|
||||
}
|
||||
|
||||
message Org {
|
||||
string id = 1;
|
||||
OrgState state = 2;
|
||||
google.protobuf.Timestamp creation_date = 3;
|
||||
google.protobuf.Timestamp change_date = 4;
|
||||
string name = 5;
|
||||
string domain = 6;
|
||||
}
|
||||
|
||||
enum OrgState {
|
||||
ORGSTATE_UNSPECIFIED = 0;
|
||||
ORGSTATE_ACTIVE = 1;
|
||||
ORGSTATE_INACTIVE = 2;
|
||||
}
|
||||
|
||||
message OrgSearchRequest {
|
||||
uint64 offset = 1;
|
||||
uint64 limit = 2;
|
||||
OrgSearchKey sorting_column = 3 [(validate.rules).enum = {not_in: [0]}];;
|
||||
bool asc = 4;
|
||||
repeated OrgSearchQuery queries = 5;
|
||||
}
|
||||
|
||||
message OrgSearchQuery {
|
||||
OrgSearchKey key = 1 [(validate.rules).enum = {not_in: [0]}];;
|
||||
OrgSearchMethod method = 2;
|
||||
string value = 3;
|
||||
}
|
||||
|
||||
enum OrgSearchKey {
|
||||
ORGSEARCHKEY_UNSPECIFIED = 0;
|
||||
ORGSEARCHKEY_ORG_NAME = 1;
|
||||
ORGSEARCHKEY_DOMAIN = 2;
|
||||
ORGSEARCHKEY_STATE = 3;
|
||||
}
|
||||
|
||||
message OrgSearchResponse {
|
||||
uint64 offset = 1;
|
||||
uint64 limit = 2;
|
||||
uint64 total_result = 3;
|
||||
repeated Org result = 4;
|
||||
}
|
||||
|
||||
enum OrgSearchMethod {
|
||||
ORGSEARCHMETHOD_EQUALS = 0;
|
||||
ORGSEARCHMETHOD_STARTS_WITH = 1;
|
||||
ORGSEARCHMETHOD_CONTAINS = 2;
|
||||
}
|
||||
|
||||
message OrgSetUpRequest {
|
||||
CreateOrgRequest org = 1;
|
||||
RegisterUserRequest user = 2;
|
||||
}
|
||||
|
||||
message OrgSetUpResponse {
|
||||
Org org = 1;
|
||||
User user = 2;
|
||||
}
|
||||
|
||||
message RegisterUserRequest {
|
||||
string email = 1 [(validate.rules).string.email = true];
|
||||
string first_name = 2 [(validate.rules).string.min_len = 1];
|
||||
string last_name = 3 [(validate.rules).string.min_len = 1];
|
||||
string nick_name = 4;
|
||||
string display_name = 5;
|
||||
string preferred_language = 6;
|
||||
Gender gender = 7;
|
||||
string password = 8 [(validate.rules).string.min_len = 1];
|
||||
string org_id = 9 [(validate.rules).string.min_len = 1];
|
||||
}
|
||||
|
||||
message User {
|
||||
string id = 1;
|
||||
UserState state = 2;
|
||||
google.protobuf.Timestamp creation_date = 3;
|
||||
google.protobuf.Timestamp change_date = 4;
|
||||
string user_name = 5;
|
||||
string first_name = 6;
|
||||
string last_name = 7;
|
||||
string nick_name = 8;
|
||||
string display_name = 9;
|
||||
string preferred_language = 10;
|
||||
Gender gender = 11;
|
||||
string email = 12;
|
||||
bool isEmailVerified = 13;
|
||||
string phone = 14;
|
||||
bool isPhoneVerified = 15;
|
||||
string country = 16;
|
||||
string locality = 17;
|
||||
string postal_code = 18;
|
||||
string region = 19;
|
||||
string street_address = 20;
|
||||
}
|
||||
|
||||
enum UserState {
|
||||
USERSTATE_UNSPPECIFIED = 0;
|
||||
USERSTATE_ACTIVE = 1;
|
||||
USERSTATE_INACTIVE = 2;
|
||||
USERSTATE_DELETED = 3;
|
||||
USERSTATE_LOCKED = 4;
|
||||
USERSTATE_SUSPEND = 5;
|
||||
USERSTATE_INITIAL= 6;
|
||||
}
|
||||
|
||||
enum Gender {
|
||||
GENDER_UNSPECIFIED = 0;
|
||||
GENDER_FEMALE = 1;
|
||||
GENDER_MALE = 2;
|
||||
GENDER_DIVERSE = 3;
|
||||
}
|
||||
|
||||
message CreateOrgRequest {
|
||||
string name = 1 [(validate.rules).string.min_len = 1];
|
||||
string domain = 2 [(validate.rules).string.min_len = 1];
|
||||
}
|
Reference in New Issue
Block a user