# Contains the information for a given sales channel.
type ChannelInformation implements Node {
    # The app associated with the channel.
    app: App!

    # The channel definition associated with the channel.
    channelDefinition: ChannelDefinition

    # The unique identifier for the channel.
    channelId: ID!

    # A globally-unique identifier.
    id: ID!
}

# A channel definition represents channels surfaces on the platform.
# A channel definition can be a platform or a subsegment of it such as Facebook Home, Instagram Live, Instagram Shops, or WhatsApp chat.
type ChannelDefinition implements Node {
    # Name of the channel that this sub channel belongs to.
    channelName: String!

    # Unique string used as a public identifier for the channel definition.
    handle: String!

    # The unique identifier for the channel definition.
    id: ID!

    # Name of the sub channel (e.g. Online Store, Instagram Shopping, TikTok Live).
    subChannelName: String!

    # Icon displayed when showing the channel in admin.
    svgIcon: String
}

# Represents an object containing all information for channels available to a shop.
type AvailableChannelDefinitionsByChannel {
    # The channel definitions for channels installed on a shop.
    channelDefinitions: [ChannelDefinition!]!

    # The name of the channel.
    channelName: String!
}
