"""
The base interface for a Stream Feeds activity. You can implement this interface in your own schema to construct types for your custom attributes.
"""
interface StreamActivityInterface {
    """
    the actor performing the activity
    """
    actor: JSON!
    """
    The unique ID of this activity
    """
    id: UUID!
    """
    The object of the activity
    """
    object: JSON!
    """
    The verb of the activity with a maximum length of 255 bytes
    """
    verb: String!
}

"""
The base interface for a Stream Feeds activity Group (returned by Aggregated and Notification feed groups). You can implement this interface in your own schema to construct types for your custom attributes.
"""
interface StreamAggregatedActivityInterface {
    """
    The number of activities
    """
    activity_count: Int!
    """
    Total actors in the aggregated response
    """
    actor_count: Int!
    """
    The date this notification update
    """
    created_at: String!
    """
    The group this notification activity belongs to
    """
    group: String!
    """
    The id of this notification group
    """
    id: UUID!
    """
    The time that this notification activity was updated.
    """
    updated_at: String!
    """
    The verb of the activity with a maximum length of 255 bytes
    """
    verb: String!
}

"""
The base type for an Activity in a Stream Feed. You can extend this type in your own schema to construct types for your custom attributes.
"""
type StreamActivity implements StreamActivityInterface {
    """
    the actor performing the activity
    """
    actor: JSON!
    """
    A unique ID from you application for this activity. i,e.: pin:1 or like:300. Required to later update activities by Time + Foreign ID.
    """
    foreign_id: UUID
    """
    The unique ID of this activity
    """
    id: UUID!
    """
    The object of the activity
    """
    object: JSON!
    """
    The time of the activity, iso format (UTC local time). Required to ensure activity uniqueness and also to later update activities by Time + Foreign ID
    """
    time: String
    """
    Send this activity to other feeds.
    """
    to: [StreamID!]
    """
    The verb of the activity with a maximum length of 255 bytes
    """
    verb: String!
}

type StreamAggregatedActivity implements StreamAggregatedActivityInterface {
    """
    The activities that belong to this group.
    """
    activities: [StreamActivity!]
    """
    The number of activities
    """
    activity_count: Int!
    """
    Total actors in the aggregated response
    """
    actor_count: Int!
    """
    The date this notification update
    """
    created_at: String!
    """
    The group this notification activity belongs to
    """
    group: String!
    """
    The id of this notification group
    """
    id: UUID!
    """
    The time that this notification activity was updated.
    """
    updated_at: String!
    """
    The verb of the activity with a maximum length of 255 bytes
    """
    verb: String!
}

type StreamNotificationActivity implements StreamAggregatedActivityInterface {
    activities: [StreamActivity!]
    """
    The number of activities
    """
    activity_count: Int!
    """
    Total actors in the aggregated response
    """
    actor_count: Int!
    """
    The date this notification update
    """
    created_at: String!
    """
    The group this notification activity belongs to
    """
    group: String!
    """
    The id of this notification group
    """
    id: UUID!
    """
    The read status of this activity
    """
    is_read: Boolean!
    """
    The seen status of this activity
    """
    is_seen: Boolean!
    """
    The time that this notification activity was updated.
    """
    updated_at: String!
    """
    The verb of the activity with a maximum length of 255 bytes
    """
    verb: String!
}

union StreamActivityUnion = StreamActivity | StreamAggregatedActivity | StreamNotificationActivity
