type FsMarketingArtistsItem {
    globalParticipant: GlobalParticipant!
    labels: [Label!]!
    name: String!
}

type FsMarketingArtistsResult {
    items: [FsMarketingArtistsItem!]!
    limit: Int!
    offset: Int!
    total: Int!
}

enum FsParticipantType {
    ARTIST
    CUSTOM_LIST
}

type FsMarketingArtistsV2Item {
    globalParticipant: GlobalParticipant
    virtualParticipantId: ID
    spotifyId: String
    labels: [Label!]!
    name: String!
}

type FsMarketingArtistsV2Result {
    items: [FsMarketingArtistsV2Item!]!
    limit: Int!
    offset: Int!
    total: Int!
}

type FsMarketingRostersItem {
    adConsentFansCount: Int!
    customListId: ID
    deezerFollowers: Int
    emailConsentFansCount: Int!
    engagementBenchmark: Float
    engagementRatio: Float!
    facebookFollowers: Int
    fanDataOwner: Boolean
    fansCount: Int!
    fansCount1YearChange: Int!
    fansCount1YearPercentChange: Float!
    fansCount28DaysChange: Int!
    fansCount28DaysPercentChange: Float!
    fansCount6MonthChange: Int!
    fansCount6MonthPercentChange: Float!
    fansCount7DaysChange: Int!
    fansCount7DaysPercentChange: Float!
    globalParticipant: GlobalParticipant
    instagramFollowers: Int
    label: Label
    name: String!
    soundcloudFollowers: Int
    smsConsentFansCount: Int!
    spotifyFollowers: Int
    spotifyMonthlyListeners: Int
    tiktokFollowers: Int
    twitterFollowers: Int
    youtubeFollowers: Int
}

type FsMarketingRostersResult {
    items: [FsMarketingRostersItem!]!
    limit: Int!
    offset: Int!
    total: Int!
}

type FsSearchRostersResponse {
    artists: [GlobalParticipant!]!
    customLists: [FsRosterFanDataList!]!
}

extend type Query {
    marketingArtists(
        vendorId: Int
        subaccountId: Int
        search: String
        limit: Int
        offset: Int
    ): FsMarketingArtistsResult!

    marketingArtistsV2(
        vendorId: Int
        subaccountId: Int
        search: String
        type: FsParticipantType
        virtualParticipantIds: [String!]
        limit: Int
        offset: Int
    ): FsMarketingArtistsV2Result!

    marketingRosters(
        vendorId: Int
        subaccountId: Int
        excludeLocalReps: Boolean
        search: String
        countries: [String!]
        orderBy: String
        limit: Int
        offset: Int
    ): FsMarketingRostersResult!

    marketingLocalRepCountries(
        vendorId: Int!
        subaccountId: Int!
        globalParticipantIds: [ID!]!
    ): [String!]!

    searchRosters(
        vendorId: Int
        subaccountId: Int
        excludeLocalReps: Boolean
        search: String
        limit: Int
    ): FsSearchRostersResponse!
}
