Files
Teamup/src/Modules/TeamUp.Modules.OrgBoard/Endpoints/OrgBoardDtos.cs
T
soroush.asadi bcdbc7e941 Versioned PRODUCT.md library + marketplace — backend (Slice 4)
Mirrors the agent-profile stack for products: ProductProfile entity (org-scoped,
versioned by org+key+version; null org = free builtin), a PRODUCT.md parser + writer,
and endpoints — upload, list, marketplace, get, publish/unpublish, fork, install, and
apply-to-product (sets Product.Identity to the profile's PRODUCT.md). Reuses the shared
ProfileOrigin/Status/Visibility enums; product profiles are gated owner-level
(CreateProductsAndTeams). Adds the product_profiles table.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 20:40:57 +03:30

128 lines
4.2 KiB
C#

using TeamUp.Modules.OrgBoard.Domain;
using TeamUp.SharedKernel.Access;
namespace TeamUp.Modules.OrgBoard.Endpoints;
internal sealed record CreateOrganizationRequest(Guid OrganizationId, string Name);
internal sealed record OrganizationResponse(Guid Id, string Name);
internal sealed record CreateTeamRequest(Guid OrganizationId, string Name, Guid? ProductId = null);
internal sealed record TeamResponse(Guid Id, Guid OrganizationId, string Name, Guid? ProductId = null);
internal sealed record CreateDivisionRequest(Guid OrganizationId, string Name);
internal sealed record DivisionResponse(Guid Id, Guid OrganizationId, string Name);
internal sealed record CreateProductRequest(Guid OrganizationId, string Name, ProductKind Kind, Guid? DivisionId = null);
internal sealed record ProductResponse(Guid Id, Guid OrganizationId, Guid? DivisionId, string Name, string Kind);
internal sealed record SetProductIdentityRequest(string? Identity);
internal sealed record ProductIdentityResponse(Guid ProductId, string Name, string? Identity);
internal sealed record CreateTaskRequest(Guid TeamId, string Title, string? Description, WorkItemType Type);
internal sealed record MoveTaskRequest(WorkItemStatus Status);
internal sealed record AssignTaskRequest(Guid MemberId);
internal sealed record TaskResponse(
Guid Id,
Guid TeamId,
string Title,
string? Description,
string Type,
string Status,
string AssigneeKind,
Guid? AssigneeId,
Guid? ParentId);
internal sealed record BoardColumn(string Status, IReadOnlyList<TaskResponse> Items);
internal sealed record BoardResponse(Guid TeamId, IReadOnlyList<BoardColumn> Columns);
internal sealed record CreateSeatRequest(Guid TeamId, string RoleName);
internal sealed record SeatResponse(Guid Id, Guid TeamId, string RoleName, string State, Guid? MemberId, Guid? AgentId);
internal sealed record ConfigureAgentRequest(
string Name,
string? Monogram,
Autonomy Autonomy,
Guid ApiConfigId,
Guid? FallbackApiConfigId,
List<string> SkillKeys,
List<Guid> McpServerIds,
List<string> Docs,
string? Persona = null);
internal sealed record AgentResponse(
Guid Id,
Guid SeatId,
string Name,
string? Monogram,
string Autonomy,
Guid ApiConfigId,
Guid? FallbackApiConfigId,
List<string> SkillKeys,
List<Guid> McpServerIds,
List<string> Docs,
string? Persona);
// --- Agent profiles (AGENTS.md): a per-org library of reusable agent definitions ---
internal sealed record UploadAgentProfileRequest(Guid OrganizationId, string Content);
internal sealed record PublishAgentProfileRequest(Guid OrganizationId, string Version);
internal sealed record ForkAgentProfileRequest(Guid OrganizationId, string Version, string? Name = null);
internal sealed record InstallAgentProfileRequest(Guid OrganizationId, Guid SourceProfileId);
internal sealed record AgentProfileSummary(
Guid Id,
Guid? OrganizationId,
string Origin,
string ProfileKey,
string Name,
string Version,
string? Summary,
List<string> Roles,
string? Monogram,
string RecommendedAutonomy,
List<string> SkillKeys,
string Visibility,
string Status);
internal sealed record AgentProfileDetail(AgentProfileSummary Profile, string Body);
internal sealed record MarketplaceProfileEntry(AgentProfileSummary Profile, bool AlreadyInLibrary);
internal sealed record UploadProductProfileRequest(Guid OrganizationId, string Content);
internal sealed record PublishProductProfileRequest(Guid OrganizationId, string Version);
internal sealed record ForkProductProfileRequest(Guid OrganizationId, string Version, string? Name = null);
internal sealed record InstallProductProfileRequest(Guid OrganizationId, Guid SourceProfileId);
internal sealed record ApplyProductProfileRequest(Guid OrganizationId, Guid ProductId, string Version);
internal sealed record ProductProfileSummary(
Guid Id,
Guid? OrganizationId,
string Origin,
string ProfileKey,
string Name,
string Version,
string? Summary,
string Visibility,
string Status);
internal sealed record ProductProfileDetail(ProductProfileSummary Profile, string Body);
internal sealed record MarketplaceProductProfileEntry(ProductProfileSummary Profile, bool AlreadyInLibrary);