package dto

// WorkspaceServiceAccountCreateRequest submits a workspace-local service
// account for direct creation or Approval according to the caller's current
// workspace role.
type WorkspaceServiceAccountCreateRequest struct {
	ClientRequestID string `json:"clientRequestId" binding:"required"`
	CorrelationID   string `json:"correlationId,omitempty"`
	// ExpectedAuthorizationPath fences stale role-derived UI actions without
	// making the browser authoritative. The service always recomputes the path.
	ExpectedAuthorizationPath string `json:"expectedAuthorizationPath" binding:"required,oneof=direct_create approval_required"`
	Name                      string `json:"name" binding:"required"`
	Description               string `json:"description,omitempty"`
	AvatarAssetID             string `json:"avatarAssetId,omitempty"`
	AvatarURL                 string `json:"avatarUrl,omitempty"`
}

type WorkspaceServiceAccountManagerAddRequest struct {
	MemberID string `json:"memberId" binding:"required"`
}

type WorkspaceServiceAccountAvatarUpdateRequest struct {
	AvatarAssetID string `json:"avatarAssetId"`
}
