IGPAPI
    Preparing search index...

    Variable DirectThreadDataSchemaConst

    DirectThreadDataSchema: Struct<
        {
            media: $Array<
                Union<
                    readonly [
                        Struct<
                            {
                                height: Number;
                                media_type: Literal<1>;
                                pk: String;
                                url: String;
                                width: Number;
                            },
                        >,
                        Struct<
                            {
                                height: Number;
                                media_type: Literal<2>;
                                pk: String;
                                url: String;
                                width: Number;
                            },
                        >,
                        Struct<
                            {
                                media_type: Literal<8>;
                                pk: String;
                                slides: $Array<
                                    Struct<{ media_type: Union<(...)>; pk: String; url: String }>,
                                >;
                            },
                        >,
                    ],
                >,
            >;
            messages: $Array<
                Struct<
                    {
                        item_id: String;
                        item_type: String;
                        media: optionalKey<
                            Union<
                                readonly [
                                    Struct<
                                        {
                                            height: Number;
                                            media_type: Literal<(...)>;
                                            pk: String;
                                            url: String;
                                            width: Number;
                                        },
                                    >,
                                    Struct<
                                        {
                                            height: Number;
                                            media_type: Literal<(...)>;
                                            pk: String;
                                            url: String;
                                            width: Number;
                                        },
                                    >,
                                    Struct<
                                        {
                                            media_type: Literal<(...)>;
                                            pk: String;
                                            slides: $Array<(...)>;
                                        },
                                    >,
                                ],
                            >,
                        >;
                        send_attribution: optionalKey<String>;
                        text: optionalKey<String>;
                        thread_id: String;
                        timestamp: String;
                        user_id: String;
                    },
                >,
            >;
            thread: Union<
                readonly [
                    Struct<
                        {
                            is_group: Boolean;
                            kind: Literal<"thread">;
                            muted: Boolean;
                            thread_id: String;
                            thread_title: String;
                            thread_v2_id: String;
                        },
                    >,
                    Struct<
                        {
                            kind: Literal<"compose">;
                            recipient_user_id: String;
                            thread_title: String;
                        },
                    >,
                ],
            >;
            users: $Array<
                Struct<
                    {
                        full_name: String;
                        pk: String;
                        thread_v2_id: String;
                        username: String;
                    },
                >,
            >;
        },
    > = ...

    What a thread shows: its participants, its messages and the media elements among them, and its identity — a sum nested under thread, because a handle's data keys are the union's common keys (a top-level union would drop every variant field from the handle), and because a field exists only where it means something:

    • thread: an existing conversation — its v2 id, its name, whether it is a group, and whether its notifications are muted;
    • compose: a picked recipient whose first message has not created the conversation yet — no thread id exists, the person is not a group and has no thread notification setting, so none of those three is carried, and the screen shows the recipient's name and an empty conversation.