| 1 | using System.Text.Json; |
| 2 | using System.Text.Json.Serialization; |
| 3 | |
| 4 | namespace CascadeIDE.Features.Intercom.Transport; |
| 5 | |
| 6 | public sealed record IntercomSenderWireDto( |
| 7 | [property: JsonPropertyName("member_id")] string MemberId, |
| 8 | [property: JsonPropertyName("display_name")] string DisplayName, |
| 9 | [property: JsonPropertyName("sender_role")] string SenderRole, |
| 10 | [property: JsonPropertyName("client_kind")] string ClientKind); |
| 11 | |
| 12 | public sealed record IntercomTransportEventEnvelopeDto( |
| 13 | [property: JsonPropertyName("schema_version")] int SchemaVersion, |
| 14 | [property: JsonPropertyName("seq")] long Seq, |
| 15 | [property: JsonPropertyName("team_id")] string TeamId, |
| 16 | [property: JsonPropertyName("topic_id")] string TopicId, |
| 17 | [property: JsonPropertyName("client_event_id")] string ClientEventId, |
| 18 | [property: JsonPropertyName("occurred_at_utc")] string OccurredAtUtc, |
| 19 | [property: JsonPropertyName("event_kind")] string EventKind, |
| 20 | [property: JsonPropertyName("sender")] IntercomSenderWireDto Sender, |
| 21 | [property: JsonPropertyName("payload")] JsonElement Payload); |
| 22 | |
| 23 | public sealed record IntercomAppendEventRequestDto( |
| 24 | [property: JsonPropertyName("schema_version")] int SchemaVersion, |
| 25 | [property: JsonPropertyName("client_event_id")] string ClientEventId, |
| 26 | [property: JsonPropertyName("occurred_at_utc")] string? OccurredAtUtc, |
| 27 | [property: JsonPropertyName("event_kind")] string EventKind, |
| 28 | [property: JsonPropertyName("sender")] IntercomSenderWireDto? Sender, |
| 29 | [property: JsonPropertyName("payload")] JsonElement Payload); |
| 30 | |
| 31 | public sealed record IntercomTopicDto( |
| 32 | [property: JsonPropertyName("topic_id")] string TopicId, |
| 33 | [property: JsonPropertyName("team_id")] string TeamId, |
| 34 | [property: JsonPropertyName("title")] string Title, |
| 35 | [property: JsonPropertyName("spine_key")] string? SpineKey); |
| 36 | |
| 37 | public sealed record IntercomTokenResponseDto( |
| 38 | [property: JsonPropertyName("access_token")] string AccessToken, |
| 39 | [property: JsonPropertyName("refresh_token")] string RefreshToken, |
| 40 | [property: JsonPropertyName("expires_in")] int ExpiresIn, |
| 41 | [property: JsonPropertyName("token_type")] string TokenType); |
| 42 | |
| 43 | public sealed record OAuthTokenRequest( |
| 44 | [property: JsonPropertyName("grant_type")] string GrantType, |
| 45 | [property: JsonPropertyName("refresh_token")] string? RefreshToken, |
| 46 | [property: JsonPropertyName("code")] string? Code, |
| 47 | [property: JsonPropertyName("state")] string? State, |
| 48 | [property: JsonPropertyName("code_verifier")] string? CodeVerifier, |
| 49 | [property: JsonPropertyName("redirect_uri")] string? RedirectUri); |
| 50 | |
| 51 | public sealed record IntercomMeTeamDto( |
| 52 | [property: JsonPropertyName("team_id")] string TeamId, |
| 53 | [property: JsonPropertyName("team_role")] string TeamRole, |
| 54 | [property: JsonPropertyName("display_name")] string DisplayName, |
| 55 | [property: JsonPropertyName("team_display_name")] string? TeamDisplayName = null); |
| 56 | |
| 57 | public sealed record IntercomMeResponseDto( |
| 58 | [property: JsonPropertyName("member_id")] string MemberId, |
| 59 | [property: JsonPropertyName("display_name")] string DisplayName, |
| 60 | [property: JsonPropertyName("member_kind")] string MemberKind, |
| 61 | [property: JsonPropertyName("teams")] IReadOnlyList<IntercomMeTeamDto> Teams); |
| 62 | |
| 63 | public sealed record IntercomAuthProviderDto( |
| 64 | [property: JsonPropertyName("provider_id")] string ProviderId, |
| 65 | [property: JsonPropertyName("display_name")] string DisplayName, |
| 66 | [property: JsonPropertyName("enabled")] bool Enabled); |
| 67 | |
| 68 | public sealed record IntercomWorkspaceContextTeamDto( |
| 69 | [property: JsonPropertyName("team_id")] string TeamId, |
| 70 | [property: JsonPropertyName("display_name")] string DisplayName, |
| 71 | [property: JsonPropertyName("team_role")] string TeamRole, |
| 72 | [property: JsonPropertyName("project_id")] string ProjectId); |
| 73 | |
| 74 | public sealed record IntercomWorkspaceContextResponseDto( |
| 75 | [property: JsonPropertyName("normalized_repo_urls")] IReadOnlyList<string> NormalizedRepoUrls, |
| 76 | [property: JsonPropertyName("projects")] IReadOnlyList<object> Projects, |
| 77 | [property: JsonPropertyName("teams")] IReadOnlyList<IntercomWorkspaceContextTeamDto> Teams, |
| 78 | [property: JsonPropertyName("suggested_team_id")] string? SuggestedTeamId); |
| 79 | |
| 80 | public sealed record IntercomEnsureTopicRequestDto( |
| 81 | [property: JsonPropertyName("spine_key")] string SpineKey, |
| 82 | [property: JsonPropertyName("title")] string Title); |
| 83 | |
| 84 | public static class IntercomTransportJson |
| 85 | { |
| 86 | public static readonly JsonSerializerOptions Web = new(JsonSerializerDefaults.Web); |
| 87 | } |
| 88 | |