Skip to content

Add ZitiManagementService proto definition #30

@rowan-stein

Description

@rowan-stein

User Request

Add the proto definition for the Ziti Management gRPC service, which encapsulates all interactions with the OpenZiti Controller's Edge Management API. See OpenZiti Integration.

Specification

Proto File

Create proto/agynio/api/ziti_management/v1/ziti_management.proto following the conventions of existing protos (e.g., agent_state/v1, threads/v1).

syntax = "proto3";

package agynio.api.ziti_management.v1;

import "google/protobuf/timestamp.proto";

option go_package = "github.com/agynio/api/gen/agynio/api/ziti_management/v1;zitimanagementv1";

service ZitiManagementService {
  // Orchestrator → create OpenZiti identity for an agent, return enrollment JWT.
  rpc CreateAgentIdentity(CreateAgentIdentityRequest) returns (CreateAgentIdentityResponse);

  // Orchestrator → delete OpenZiti identity and its platform mapping.
  rpc DeleteIdentity(DeleteIdentityRequest) returns (DeleteIdentityResponse);

  // Orchestrator → list all platform-managed identities (orphan reconciliation).
  rpc ListManagedIdentities(ListManagedIdentitiesRequest) returns (ListManagedIdentitiesResponse);

  // Gateway → map OpenZiti identity ID to platform identity (hot path).
  rpc ResolveIdentity(ResolveIdentityRequest) returns (ResolveIdentityResponse);
}

enum IdentityType {
  IDENTITY_TYPE_UNSPECIFIED = 0;
  IDENTITY_TYPE_AGENT = 1;
  IDENTITY_TYPE_RUNNER = 2;
  IDENTITY_TYPE_CHANNEL = 3;
}

message ManagedIdentity {
  string ziti_identity_id = 1;
  string identity_id = 2;
  IdentityType identity_type = 3;
  string tenant_id = 4;
  google.protobuf.Timestamp created_at = 5;
}

message CreateAgentIdentityRequest {
  string agent_id = 1;
  string tenant_id = 2;
}

message CreateAgentIdentityResponse {
  string ziti_identity_id = 1;
  string enrollment_jwt = 2;
}

message DeleteIdentityRequest {
  string ziti_identity_id = 1;
}

message DeleteIdentityResponse {}

message ListManagedIdentitiesRequest {
  IdentityType identity_type = 1;
  string tenant_id = 2;
  int32 page_size = 3;
  string page_token = 4;
}

message ListManagedIdentitiesResponse {
  repeated ManagedIdentity identities = 1;
  string next_page_token = 2;
}

message ResolveIdentityRequest {
  string ziti_identity_id = 1;
}

message ResolveIdentityResponse {
  string identity_id = 1;
  IdentityType identity_type = 2;
  string tenant_id = 3;
}

Conventions

  • Package: agynio.api.ziti_management.v1
  • Go package: github.com/agynio/api/gen/agynio/api/ziti_management/v1;zitimanagementv1
  • File location: proto/agynio/api/ziti_management/v1/ziti_management.proto
  • Style matches existing protos: snake_case fields, UPPER_SNAKE enum values with _UNSPECIFIED = 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions