Skip to content

Add proto definitions for Port Exposure feature #96

Description

@rowan-stein

User Request

Add all proto definitions needed for the Port Exposure feature. This is the foundation that all other implementation streams depend on.

Specification

New files

1. proto/agynio/api/expose/v1/expose.proto

  • New ExposeService with RPCs: AddExposure, RemoveExposure, ListExposures
  • Exposure resource with fields: id (via EntityMeta), workload_id, agent_id, port, openziti_service_id, openziti_bind_policy_id, openziti_dial_policy_id, url, status
  • ExposureStatus enum: UNSPECIFIED, PROVISIONING, ACTIVE, FAILED, REMOVING
  • Pagination on ListExposures (page_size, page_token)

2. proto/agynio/api/gateway/v1/expose.proto

  • New ExposeGateway service with same 3 RPCs, importing and reusing types from expose/v1

Modified files

3. proto/agynio/api/ziti_management/v1/ziti_management.proto

  • Add 5 new RPCs: CreateServicePolicy, DeleteServicePolicy, DeleteService, CreateDeviceIdentity, DeleteDeviceIdentity
  • Add ServicePolicyType enum (UNSPECIFIED, BIND, DIAL)
  • Add config messages: HostV1Config, InterceptV1Config, PortRange
  • Extend CreateServiceRequest with optional host_v1_config (field 3) and intercept_v1_config (field 4)
  • Add all corresponding request/response messages

4. proto/agynio/api/users/v1/users.proto

  • Add DeviceStatus enum (UNSPECIFIED, PENDING, ENROLLED)
  • Add Device message (meta, user_identity_id, name, openziti_identity_id, status)
  • Add 3 RPCs to UsersService: CreateDevice, ListDevices, DeleteDevice
  • CreateDeviceResponse includes enrollment_jwt

5. proto/agynio/api/gateway/v1/users.proto

  • Add 3 RPCs to UsersGateway: CreateDevice, ListDevices, DeleteDevice

Conventions

  • Follow existing patterns: EntityMeta, ENUM_PREFIX naming, package agynio.api.<service>.v1, Go package format
  • Gateway protos import from internal protos — never duplicate messages
  • Must pass buf lint and buf breaking --against main

Architecture references

  • agynio/architecture: changes/2025-07-25-port-exposure.md, architecture/expose-service.md, architecture/users.md#devices, architecture/openziti.md, architecture/gateway.md

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