Compare commits

..

No commits in common. "main" and "generated-documentation" have entirely different histories.

10 changed files with 331 additions and 692 deletions

View File

@ -1,6 +0,0 @@
# Lint directives.
lint:
rules_option:
max_line_length:
max_chars: 120
tab_chars: 2

View File

@ -1,33 +0,0 @@
---
when:
event:
- push
branch: main
steps:
lint:
name: Generate docs
image: pseudomuto/protoc-gen-doc
secrets:
- softplayer_bot_ssh_key
- git_known_hosts
commands:
- mkdir -p ~/.ssh
- apk update && apk add git openssh
- echo $SOFTPLAYER_BOT_SSH_KEY | base64 -d > ~/.ssh/id_ed25519
- echo $GIT_KNOWN_HOSTS > ~/.ssh/known_hosts
- cat ~/.ssh/id_ed25519
- chmod 0600 ~/.ssh/id_ed25519
- protoc --proto_path=./proto --doc_out=. --doc_opt=markdown,README.md $(find ./proto -type f -iname "*.proto")
# To make sure there is always a change, even when protos are not updated
- echo "Generated on $(date)" >> README.md
- eval `ssh-agent`
- ssh-add ~/.ssh/id_ed25519
- git config --global user.email "allanger@badhouseplants.net"
- git config --global user.name "Softplayer Bot"
- git clone git@gitea.badhouseplants.net:softplayer/softplayer-proto.git /tmp/repo
- git -C /tmp/repo checkout generated-documentation
- mv README.md /tmp/repo/README.md
- git -C /tmp/repo add .
- git -C /tmp/repo commit -m "Update documentation from $CI_COMMIT_SHA"
- git -C /tmp/repo push

View File

@ -1,11 +0,0 @@
---
when:
event:
- push
steps:
lint:
name: Lint protobufs
image: yoheimuta/protolint
commands:
- protolint lint $(find . -type f -iname "*.proto")

View File

@ -1,11 +0,0 @@
FROM alpine:3.16.2
RUN apk add --no-cache git make musl-dev go protobuf protobuf-dev
ENV GOROOT /usr/lib/go
ENV GOPATH /go
ENV PATH /go/bin:$PATH
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
CMD [ "protoc -v" ]

View File

@ -1,36 +0,0 @@
# ---------------------------------------------------------------------
# -- Which container tool to use
# ---------------------------------------------------------------------
CONTAINER_TOOL ?= docker
protoc-docs-gen:
protoc \
--proto_path=./proto \
--doc_out=. \
--doc_opt=markdown,readme.md \
$$(find ./proto -type f -iname "*.proto")
docker-docs-gen:
$(CONTAINER_TOOL) run --rm \
-v $$(pwd):/out \
-v $$(pwd)/proto:/proto \
pseudomuto/protoc-gen-doc --doc_opt=markdown,README.md --proto_path=proto \
$$(find proto -type f -iname "*.proto")
docker-lint:
$(CONTAINER_TOOL) run --rm \
-v $$(pwd):/workspace \
--workdir /workspace \
yoheimuta/protolint lint \
$$(find . -type f -iname "*.proto")
docker-protobuf:
$(CONTAINER_TOOL) build -t gogen . && \
$(CONTAINER_TOOL) run --rm \
-v $$(pwd)/proto:/proto \
-v $$(pwd)/pkg:/pkg \
gogen \
protoc --go_out=/pkg/ --go_opt=paths=source_relative \
--go-grpc_out=/pkg/ --go-grpc_opt=paths=source_relative \
--proto_path=proto/proto \
$$(find proto -type f -iname "*.proto")

625
README.md
View File

@ -3,26 +3,6 @@
## Table of Contents
- [environments/environments_v1.proto](#environments_environments_v1-proto)
- [CreateOptions](#environments-CreateOptions)
- [DeleteOptions](#environments-DeleteOptions)
- [EnvironmentFull](#environments-EnvironmentFull)
- [EnvironmentId](#environments-EnvironmentId)
- [EnvironmentMetadata](#environments-EnvironmentMetadata)
- [EnvironmentSpec](#environments-EnvironmentSpec)
- [GetOptions](#environments-GetOptions)
- [ListOptions](#environments-ListOptions)
- [OwnerId](#environments-OwnerId)
- [Token](#environments-Token)
- [UpdateOptions](#environments-UpdateOptions)
- [Kubernetes](#environments-Kubernetes)
- [Location](#environments-Location)
- [Provider](#environments-Provider)
- [ServerType](#environments-ServerType)
- [Environments](#environments-Environments)
- [accounts/accounts_v1.proto](#accounts_accounts_v1-proto)
- [AccountData](#accounts-AccountData)
- [AccountFull](#accounts-AccountFull)
@ -30,6 +10,8 @@
- [AccountId](#accounts-AccountId)
- [AccountPassword](#accounts-AccountPassword)
- [AccountWithPassword](#accounts-AccountWithPassword)
- [AccountWithPasswordAndCode](#accounts-AccountWithPasswordAndCode)
- [EmailVerified](#accounts-EmailVerified)
- [Accounts](#accounts-Accounts)
@ -55,284 +37,30 @@
- [EmailValidation](#email-EmailValidation)
- [environments/environments_v1.proto](#environments_environments_v1-proto)
- [CreateOptions](#environments-CreateOptions)
- [DeleteOptions](#environments-DeleteOptions)
- [EnvironmentFull](#environments-EnvironmentFull)
- [EnvironmentId](#environments-EnvironmentId)
- [EnvironmentMetadata](#environments-EnvironmentMetadata)
- [EnvironmentSpec](#environments-EnvironmentSpec)
- [GetOptions](#environments-GetOptions)
- [ListOptions](#environments-ListOptions)
- [OwnerId](#environments-OwnerId)
- [Token](#environments-Token)
- [UpdateOptions](#environments-UpdateOptions)
- [Kubernetes](#environments-Kubernetes)
- [Location](#environments-Location)
- [Provider](#environments-Provider)
- [ServerType](#environments-ServerType)
- [Environments](#environments-Environments)
- [Scalar Value Types](#scalar-value-types)
<a name="environments_environments_v1-proto"></a>
<p align="right"><a href="#top">Top</a></p>
## environments/environments_v1.proto
This file has messages for describing environments
<a name="environments-CreateOptions"></a>
### CreateOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-DeleteOptions"></a>
### DeleteOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-EnvironmentFull"></a>
### EnvironmentFull
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
<a name="environments-EnvironmentId"></a>
### EnvironmentId
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| uuid | [string](#string) | | |
<a name="environments-EnvironmentMetadata"></a>
### EnvironmentMetadata
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| name | [string](#string) | | A name of the environment |
| description | [string](#string) | | |
<a name="environments-EnvironmentSpec"></a>
### EnvironmentSpec
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| provider | [Provider](#environments-Provider) | | Provide |
| kubernetes | [Kubernetes](#environments-Kubernetes) | | |
| server_type | [ServerType](#environments-ServerType) | | |
| server_location | [Location](#environments-Location) | | |
| disk_size | [int32](#int32) | | |
<a name="environments-GetOptions"></a>
### GetOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-ListOptions"></a>
### ListOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| search_string | [string](#string) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-OwnerId"></a>
### OwnerId
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| uuid | [string](#string) | | UUID of a user that is creating an environemnt |
<a name="environments-Token"></a>
### Token
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| token | [string](#string) | | Token that should be used to create an environment |
<a name="environments-UpdateOptions"></a>
### UpdateOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-Kubernetes"></a>
### Kubernetes
| Name | Number | Description |
| ---- | ------ | ----------- |
| KUBERNETES_UNSPECIFIED | 0 | |
| KUBERNETES_K3S | 1 | |
<a name="environments-Location"></a>
### Location
| Name | Number | Description |
| ---- | ------ | ----------- |
| LOCATION_UNSPECIFIED | 0 | |
| LOCATION_HETZNER_NUREMBERG | 1 | |
| LOCATION_HETZNER_FALKENSTEIN | 2 | |
| LOCATION_HETZNER_HELSINKI | 3 | |
| LOCATION_HETZNER_HILLSBORO | 4 | |
| LOCATION_HETZNER_ASHBURN | 5 | |
<a name="environments-Provider"></a>
### Provider
Helpers and other messages
| Name | Number | Description |
| ---- | ------ | ----------- |
| PROVIDER_UNSPECIFIED | 0 | |
| PROVIDER_HETZNER | 1 | |
<a name="environments-ServerType"></a>
### ServerType
| Name | Number | Description |
| ---- | ------ | ----------- |
| SERVER_TYPE_UNSPECIFIED | 0 | |
| SERVER_TYPE_STARTER | 1 | |
| SERVER_TYPE_REGULAR | 2 | |
| SERVER_TYPE_PLUS | 3 | |
| SERVER_TYPE_PRO | 4 | |
| SERVER_TYPE_CUSTOM | 5 | |
<a name="environments-Environments"></a>
### Environments
Service for handling environments
| Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------|
| Create | [CreateOptions](#environments-CreateOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| Update | [UpdateOptions](#environments-UpdateOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| Delete | [DeleteOptions](#environments-DeleteOptions) | [.google.protobuf.Empty](#google-protobuf-Empty) | |
| Get | [GetOptions](#environments-GetOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| List | [ListOptions](#environments-ListOptions) | [EnvironmentFull](#environments-EnvironmentFull) stream | |
<a name="accounts_accounts_v1-proto"></a>
<p align="right"><a href="#top">Top</a></p>
@ -434,6 +162,38 @@ Represents a environment UUID only
<a name="accounts-AccountWithPasswordAndCode"></a>
### AccountWithPasswordAndCode
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| data | [AccountData](#accounts-AccountData) | | |
| password | [AccountPassword](#accounts-AccountPassword) | | |
| code | [string](#string) | | |
<a name="accounts-EmailVerified"></a>
### EmailVerified
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| verified | [bool](#bool) | | |
@ -451,6 +211,8 @@ Service for handling environments
| SignUp | [AccountWithPassword](#accounts-AccountWithPassword) | [AccountFullWithToken](#accounts-AccountFullWithToken) | |
| SignIn | [AccountWithPassword](#accounts-AccountWithPassword) | [AccountFullWithToken](#accounts-AccountFullWithToken) | |
| ResetPassword | [AccountData](#accounts-AccountData) | [.google.protobuf.Empty](#google-protobuf-Empty) | |
| NewPassword | [AccountWithPasswordAndCode](#accounts-AccountWithPasswordAndCode) | [.google.protobuf.Empty](#google-protobuf-Empty) | |
| IsEmailVerified | [AccountData](#accounts-AccountData) | [EmailVerified](#accounts-EmailVerified) | |
@ -747,6 +509,280 @@ A service that should handle email validation
<a name="environments_environments_v1-proto"></a>
<p align="right"><a href="#top">Top</a></p>
## environments/environments_v1.proto
This file has messages for describing environments
<a name="environments-CreateOptions"></a>
### CreateOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-DeleteOptions"></a>
### DeleteOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-EnvironmentFull"></a>
### EnvironmentFull
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
<a name="environments-EnvironmentId"></a>
### EnvironmentId
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| uuid | [string](#string) | | |
<a name="environments-EnvironmentMetadata"></a>
### EnvironmentMetadata
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| name | [string](#string) | | A name of the environment |
| description | [string](#string) | | |
<a name="environments-EnvironmentSpec"></a>
### EnvironmentSpec
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| provider | [Provider](#environments-Provider) | | Provide |
| kubernetes | [Kubernetes](#environments-Kubernetes) | | |
| server_type | [ServerType](#environments-ServerType) | | |
| server_location | [Location](#environments-Location) | | |
| disk_size | [int32](#int32) | | |
<a name="environments-GetOptions"></a>
### GetOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-ListOptions"></a>
### ListOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| search_string | [string](#string) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-OwnerId"></a>
### OwnerId
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| uuid | [string](#string) | | UUID of a user that is creating an environemnt |
<a name="environments-Token"></a>
### Token
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| token | [string](#string) | | Token that should be used to create an environment |
<a name="environments-UpdateOptions"></a>
### UpdateOptions
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [EnvironmentId](#environments-EnvironmentId) | | |
| metadata | [EnvironmentMetadata](#environments-EnvironmentMetadata) | | |
| spec | [EnvironmentSpec](#environments-EnvironmentSpec) | | |
| owner_id | [OwnerId](#environments-OwnerId) | | |
| token | [Token](#environments-Token) | | |
<a name="environments-Kubernetes"></a>
### Kubernetes
| Name | Number | Description |
| ---- | ------ | ----------- |
| KUBERNETES_UNSPECIFIED | 0 | |
| KUBERNETES_K3S | 1 | |
<a name="environments-Location"></a>
### Location
| Name | Number | Description |
| ---- | ------ | ----------- |
| LOCATION_UNSPECIFIED | 0 | |
| LOCATION_HETZNER_NUREMBERG | 1 | |
| LOCATION_HETZNER_FALKENSTEIN | 2 | |
| LOCATION_HETZNER_HELSINKI | 3 | |
| LOCATION_HETZNER_HILLSBORO | 4 | |
| LOCATION_HETZNER_ASHBURN | 5 | |
<a name="environments-Provider"></a>
### Provider
Helpers and other messages
| Name | Number | Description |
| ---- | ------ | ----------- |
| PROVIDER_UNSPECIFIED | 0 | |
| PROVIDER_HETZNER | 1 | |
<a name="environments-ServerType"></a>
### ServerType
| Name | Number | Description |
| ---- | ------ | ----------- |
| SERVER_TYPE_UNSPECIFIED | 0 | |
| SERVER_TYPE_STARTER | 1 | |
| SERVER_TYPE_REGULAR | 2 | |
| SERVER_TYPE_PLUS | 3 | |
| SERVER_TYPE_PRO | 4 | |
| SERVER_TYPE_CUSTOM | 5 | |
<a name="environments-Environments"></a>
### Environments
Service for handling environments
| Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------|
| Create | [CreateOptions](#environments-CreateOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| Update | [UpdateOptions](#environments-UpdateOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| Delete | [DeleteOptions](#environments-DeleteOptions) | [.google.protobuf.Empty](#google-protobuf-Empty) | |
| Get | [GetOptions](#environments-GetOptions) | [EnvironmentFull](#environments-EnvironmentFull) | |
| List | [ListOptions](#environments-ListOptions) | [EnvironmentFull](#environments-EnvironmentFull) stream | |
## Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
@ -767,3 +803,4 @@ A service that should handle email validation
| <a name="string" /> string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| <a name="bytes" /> bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |
Generated on Tue May 21 22:03:42 UTC 2024

View File

@ -1,60 +0,0 @@
/// This file has messages for describing environments
syntax = "proto3";
package accounts;
import "google/protobuf/empty.proto";
option go_package = "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/accounts";
/**
* Service for handling environments
*/
service Accounts {
rpc SignUp (AccountWithPassword) returns (AccountFullWithToken) {}
rpc SignIn (AccountWithPassword) returns (AccountFullWithToken) {}
rpc ResetPassword (AccountData) returns (google.protobuf.Empty) {}
rpc NewPassword (AccountWithPasswordAndCode) returns (google.protobuf.Empty) {}
rpc IsEmailVerified (AccountData) returns (EmailVerified) {}
}
message EmailVerified {
bool verified = 1;
}
/**
* Represents a environment UUID only
*/
message AccountId {
string id = 1; // Contour ID: UUID
}
message AccountPassword {
string password = 1;
}
message AccountData {
string name = 1; // Account name
string email = 2; // Account email
}
message AccountWithPassword {
AccountData data = 1;
AccountPassword password = 2;
}
message AccountWithPasswordAndCode {
AccountData data = 1;
AccountPassword password = 2;
string code = 3;
}
message AccountFull {
AccountId id = 1;
AccountData data = 2;
}
message AccountFullWithToken {
AccountId id = 1;
AccountData data = 2;
string token = 3;
}

View File

@ -1,93 +0,0 @@
/// This file has messages for describing applications
syntax = "proto3";
package applications;
import "google/protobuf/empty.proto";
option go_package = "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/applications";
/**
* Service for handling applications
*/
service Applications {
rpc Create(CreateOptions) returns (ApplicationFull) {}
rpc Update(UpdateOptions) returns (ApplicationFull) {}
rpc Delete(DeleteOptions) returns (google.protobuf.Empty) {}
rpc Get(GetOptions) returns (ApplicationFull) {}
rpc List(ListOptions) returns (stream ApplicationFull) {}
}
/**
User related messages
*/
message OwnerId {
string uuid = 1; // UUID of a user that is creating an environemnt
}
message Token {
string token = 1; // Token that should be used to create an environment
}
/**
Services options
*/
message CreateOptions {
ApplicationMetadata metadata = 1;
ApplicationSpec spec = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message UpdateOptions {
ApplicationId id = 1;
ApplicationMetadata metadata = 2;
ApplicationSpec spec = 3;
OwnerId owner_id = 4;
Token token = 5;
}
message DeleteOptions {
ApplicationId id = 1;
ApplicationMetadata metadata = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message GetOptions {
ApplicationId id = 1;
ApplicationMetadata metadata = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message ListOptions {
ApplicationMetadata metadata = 1;
OwnerId owner_id = 2;
Token token = 3;
}
/**
Environment related messages
*/
message ApplicationId {
string uuid = 1;
}
message ApplicationMetadata {
string name = 1;
string description = 2;
}
message ApplicationSpec {
string application = 1;
string version = 2;
string environemnt_id = 3;
map<string, string> config = 4;
string raw_config = 5;
}
message ApplicationFull {
ApplicationMetadata metadata = 1;
ApplicationSpec spec = 2;
ApplicationId id = 3;
}

View File

@ -1,23 +0,0 @@
/// This file has messages for describing environments
syntax = "proto3";
package email;
import "google/protobuf/empty.proto";
option go_package = "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/email";
/*
* A service that should handle email validation
*/
service EmailValidation {
rpc SendRequest (RequestValidation) returns (google.protobuf.Empty) {}
rpc ValidateEmail (ConfirmValidation) returns (google.protobuf.Empty) {}
}
message RequestValidation {
string user_id = 1;
}
message ConfirmValidation {
string user_id = 1;
int32 code = 2;
}

View File

@ -1,125 +0,0 @@
/// This file has messages for describing environments
syntax = "proto3";
package environments;
import "google/protobuf/empty.proto";
option go_package = "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/environments";
/**
* Service for handling environments
*/
service Environments {
rpc Create(CreateOptions) returns (EnvironmentFull) {}
rpc Update(UpdateOptions) returns (EnvironmentFull) {}
rpc Delete(DeleteOptions) returns (google.protobuf.Empty) {}
rpc Get(GetOptions) returns (EnvironmentFull) {}
rpc List(ListOptions) returns (stream EnvironmentFull) {}
}
/**
User related messages
*/
message OwnerId {
string uuid = 1; // UUID of a user that is creating an environemnt
}
message Token {
string token = 1; // Token that should be used to create an environment
}
/**
Services options
*/
message CreateOptions {
EnvironmentMetadata metadata = 1;
EnvironmentSpec spec = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message UpdateOptions {
EnvironmentId id = 1;
EnvironmentMetadata metadata = 2;
EnvironmentSpec spec = 3;
OwnerId owner_id = 4;
Token token = 5;
}
message DeleteOptions {
EnvironmentId id = 1;
EnvironmentMetadata metadata = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message GetOptions {
EnvironmentId id = 1;
EnvironmentMetadata metadata = 2;
OwnerId owner_id = 3;
Token token = 4;
}
message ListOptions {
EnvironmentMetadata metadata = 1;
string search_string = 2;
OwnerId owner_id = 3;
Token token = 4;
}
/**
Environment related messages
*/
message EnvironmentId {
string uuid = 1;
}
message EnvironmentMetadata {
string name = 1; // A name of the environment
string description = 2;
}
message EnvironmentSpec {
Provider provider = 1; // Provide
Kubernetes kubernetes = 2;
ServerType server_type = 3;
Location server_location = 4;
int32 disk_size = 5;
}
message EnvironmentFull {
EnvironmentMetadata metadata = 1;
EnvironmentSpec spec = 2;
EnvironmentId id = 3;
}
/**
Helpers and other messages
*/
enum Provider {
PROVIDER_UNSPECIFIED = 0;
PROVIDER_HETZNER = 1;
}
enum ServerType {
SERVER_TYPE_UNSPECIFIED = 0;
SERVER_TYPE_STARTER = 1;
SERVER_TYPE_REGULAR = 2;
SERVER_TYPE_PLUS = 3;
SERVER_TYPE_PRO = 4;
SERVER_TYPE_CUSTOM = 5;
}
enum Location {
LOCATION_UNSPECIFIED = 0;
LOCATION_HETZNER_NUREMBERG = 1;
LOCATION_HETZNER_FALKENSTEIN = 2;
LOCATION_HETZNER_HELSINKI = 3;
LOCATION_HETZNER_HILLSBORO = 4;
LOCATION_HETZNER_ASHBURN = 5;
}
enum Kubernetes {
KUBERNETES_UNSPECIFIED = 0;
KUBERNETES_K3S = 1;
}