GET https://dev.revpu.sh/

GraphQL requests

No HTTP queries on GraphQL endpoint(s)

Refresh with latest query

No GraphQL queries stored.

Schema: default

"ClickFilter GraphQL API"
type Query {
  partners(after: String, first: Int, before: String, last: Int, filter: PartnerFilter, order: PartnerOrder): PartnerConnection
  campaigns(after: String, first: Int, before: String, last: Int, filter: CampaignFilter, order: CampaignOrder): CampaignConnection
  landingPages(after: String, first: Int, before: String, last: Int, filter: LandingPageFilter, order: LandingPageOrder): LandingPageConnection
  sites(after: String, first: Int, before: String, last: Int, filter: SiteFilter, order: SiteOrder): SiteConnection
  extraQueryParams(after: String, first: Int, before: String, last: Int, filter: ExtraQueryParamFilter, order: ExtraQueryParamOrder): ExtraQueryParamConnection
  countries(after: String, first: Int, before: String, last: Int, filter: CountryFilter, order: CountryOrder): CountryConnection
  botDetectorLevels(after: String, first: Int, before: String, last: Int, filter: BotDetectorLevelFilter, order: BotDetectorLevelOrder): BotDetectorLevelConnection
  botDetectorCheckers: [BotDetectorChecker]
  devices(after: String, first: Int, before: String, last: Int, filter: DeviceFilter, order: DeviceOrder): DeviceConnection
  analyticVar1(after: String, first: Int, before: String, last: Int, filter: AnalyticVar1Filter, order: AnalyticVar1Order): AnalyticVar1Connection
  analyticVar2(after: String, first: Int, before: String, last: Int, filter: AnalyticVar2Filter, order: AnalyticVar2Order): AnalyticVar2Connection
  analyticVar3(after: String, first: Int, before: String, last: Int, filter: AnalyticVar3Filter, order: AnalyticVar3Order): AnalyticVar3Connection
  analyticRequest(id: Uuid!): AnalyticRequest
  landingPageRedirectUrl(landingPageId: Uuid!): String!
  reportBotCheckersHourly(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportBotCheckersHourlyOrder): ReportBotCheckersHourlyConnection
  reportClicksHourly(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportClicksHourlyOrder): ReportClicksHourlyConnection
  reportClicksTotal(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportClicksTotalOrder): ReportClicksTotalConnection
  reportDeviceTotal(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportDeviceTotalOrder): ReportDeviceTotalConnection
  reportDeviceHourly(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportDeviceHourlyOrder): ReportDeviceHourlyConnection
  reportCountryTotal(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportCountryTotalOrder): ReportCountryTotalConnection
  reportCountryHourly(after: String, first: Int, before: String, last: Int, filter: ReportFilter, order: ReportCountryHourlyOrder): ReportCountryHourlyConnection
  reportCampaignTotal(after: String, first: Int, before: String, last: Int, filter: ReportCampaignTotalFilter, order: ReportCampaignTotalOrder): ReportCampaignTotalConnection
  reportAnalyticRequest(after: String, first: Int, before: String, last: Int, filter: ReportAnalyticRequestFilter, order: ReportAnalyticRequestOrder): ReportAnalyticRequestConnection
}

input PartnerFilter {
  ids: [Uuid!]
  userIds: [Int!]
}

"UUIDs are 128-bit numbers represented as five groups of hexadecimal characters: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
scalar Uuid

input PartnerOrder {
  id: OrderDirection
  name: OrderDirection
  trackingParamClickId: OrderDirection
  userEmail: OrderDirection
  botDetectorLevelName: OrderDirection
  createdAt: OrderDirection
  updatedAt: OrderDirection
  passReferer: OrderDirection
  serverSideRedirect: OrderDirection
  blockBots: OrderDirection
  encodeRedirectUrl: OrderDirection
}

enum OrderDirection {
  ASC
  DESC
}

"A connection to a list of items."
type PartnerConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [PartnerEdge]
}

"Information about pagination in a connection."
type PageInfo {
  "When paginating forwards, are there more items?"
  hasNextPage: Boolean!

  "When paginating backwards, are there more items?"
  hasPreviousPage: Boolean!

  "When paginating backwards, the cursor to continue."
  startCursor: String

  "When paginating forwards, the cursor to continue."
  endCursor: String
}

"An edge in a connection."
type PartnerEdge {
  "The item at the end of the edge."
  node: Partner!

  "A cursor for use in pagination."
  cursor: String!
}

type Partner {
  id: Uuid!
  name: String!
  trackingParamClickId: String!
  createdAt: DateTime!
  updatedAt: DateTime!
  user: User!
  botDetectorLevel: BotDetectorLevel!
  passReferer: Boolean!
  serverSideRedirect: Boolean!
  blockBots: Boolean!
  encodeRedirectUrl: Boolean!
}

"Date with time string represented in format YYYY-MM-DD HH:MM:SS"
scalar DateTime

type User {
  id: Int!
  email: String!
  name: String
  surname: String
}

type BotDetectorLevel {
  id: Uuid!
  name: String!
  checkers: [BotDetectorChecker]
}

type BotDetectorChecker {
  gid: String!
  name: String!
}

input CampaignFilter {
  ids: [Uuid!]
  partnerIds: [Uuid!]
  userIds: [Int!]
}

input CampaignOrder {
  id: OrderDirection
  name: OrderDirection
  partnerName: OrderDirection
  userEmail: OrderDirection
  createdAt: OrderDirection
  updatedAt: OrderDirection
}

"A connection to a list of items."
type CampaignConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [CampaignEdge]
}

"An edge in a connection."
type CampaignEdge {
  "The item at the end of the edge."
  node: Campaign!

  "A cursor for use in pagination."
  cursor: String!
}

type Campaign {
  id: Uuid!
  partner: Partner!
  user: User!
  name: String!
  createdAt: DateTime!
  updatedAt: DateTime!
}

input LandingPageFilter {
  ids: [Uuid!]
  campaignIds: [Uuid!]
  siteIds: [Uuid!]
  partnerIds: [Uuid!]
  userIds: [Int!]
}

input LandingPageOrder {
  id: OrderDirection
  url: OrderDirection
  campaignName: OrderDirection
  siteDomain: OrderDirection
  partnerName: OrderDirection
  userEmail: OrderDirection
  createdAt: OrderDirection
  updatedAt: OrderDirection
}

"A connection to a list of items."
type LandingPageConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [LandingPageEdge]
}

"An edge in a connection."
type LandingPageEdge {
  "The item at the end of the edge."
  node: LandingPage!

  "A cursor for use in pagination."
  cursor: String!
}

type LandingPage {
  id: Uuid!
  campaign: Campaign!
  user: User!
  url: String!
  site: Site!
  createdAt: DateTime!
  updatedAt: DateTime!
  redirectUrl: String!
}

type Site {
  id: Uuid!
  user: User!
  domain: String!
  createdAt: DateTime!
  updatedAt: DateTime!
}

input SiteFilter {
  ids: [Uuid!]
  userIds: [Int!]
}

input SiteOrder {
  id: OrderDirection
  domain: OrderDirection
  userEmail: OrderDirection
  createdAt: OrderDirection
  updatedAt: OrderDirection
}

"A connection to a list of items."
type SiteConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [SiteEdge]
}

"An edge in a connection."
type SiteEdge {
  "The item at the end of the edge."
  node: Site!

  "A cursor for use in pagination."
  cursor: String!
}

input ExtraQueryParamFilter {
  ids: [Uuid!]
  partnerIds: [Uuid!]
  campaignIds: [Uuid!]
  siteIds: [Uuid!]
  userIds: [Int!]
}

input ExtraQueryParamOrder {
  id: OrderDirection
  name: OrderDirection
  value: OrderDirection
  appendToRedirectUrl: OrderDirection
  appendToLandingPageUrl: OrderDirection
  createdAt: OrderDirection
  updatedAt: OrderDirection
  userEmail: OrderDirection
}

"A connection to a list of items."
type ExtraQueryParamConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ExtraQueryParamEdge]
}

"An edge in a connection."
type ExtraQueryParamEdge {
  "The item at the end of the edge."
  node: ExtraQueryParam!

  "A cursor for use in pagination."
  cursor: String!
}

type ExtraQueryParam {
  id: Uuid!
  name: String!
  value: String!
  createdAt: DateTime!
  updatedAt: DateTime!
  user: User!
  partners: [Partner!]
  campaigns: [Campaign!]
  sites: [Site!]
  appendToLandingPageUrl: Boolean!
  appendToRedirectUrl: Boolean!
}

input CountryFilter {
  ids: [Int!]
}

input CountryOrder {
  id: OrderDirection
  name: OrderDirection
  code: OrderDirection
}

"A connection to a list of items."
type CountryConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [CountryEdge]
}

"An edge in a connection."
type CountryEdge {
  "The item at the end of the edge."
  node: Country!

  "A cursor for use in pagination."
  cursor: String!
}

type Country {
  id: Int!
  name: String!
  code: String!
}

input BotDetectorLevelFilter {
  ids: [Uuid!]
}

input BotDetectorLevelOrder {
  id: OrderDirection
  name: OrderDirection
}

"A connection to a list of items."
type BotDetectorLevelConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [BotDetectorLevelEdge]
}

"An edge in a connection."
type BotDetectorLevelEdge {
  "The item at the end of the edge."
  node: BotDetectorLevel!

  "A cursor for use in pagination."
  cursor: String!
}

input DeviceFilter {
  ids: [Int!]
}

input DeviceOrder {
  id: OrderDirection
  name: OrderDirection
}

"A connection to a list of items."
type DeviceConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [DeviceEdge]
}

"An edge in a connection."
type DeviceEdge {
  "The item at the end of the edge."
  node: Country!

  "A cursor for use in pagination."
  cursor: String!
}

input AnalyticVar1Filter {
  ids: [Uuid!]
  appIds: [Uuid!]
  userIds: [Int!]
}

input AnalyticVar1Order {
  id: OrderDirection
  name: OrderDirection
  value: OrderDirection
}

"A connection to a list of items."
type AnalyticVar1Connection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [AnalyticVar1Edge]
}

"An edge in a connection."
type AnalyticVar1Edge {
  "The item at the end of the edge."
  node: AnalyticVar1!

  "A cursor for use in pagination."
  cursor: String!
}

type AnalyticVar1 {
  id: Uuid!
  value: String
  name: String
}

input AnalyticVar2Filter {
  ids: [Uuid!]
  appIds: [Uuid!]
  userIds: [Int!]
}

input AnalyticVar2Order {
  id: OrderDirection
  name: OrderDirection
  value: OrderDirection
}

"A connection to a list of items."
type AnalyticVar2Connection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [AnalyticVar2Edge]
}

"An edge in a connection."
type AnalyticVar2Edge {
  "The item at the end of the edge."
  node: AnalyticVar2!

  "A cursor for use in pagination."
  cursor: String!
}

type AnalyticVar2 {
  id: Uuid!
  value: String
  name: String
}

input AnalyticVar3Filter {
  ids: [Uuid!]
  appIds: [Uuid!]
  userIds: [Int!]
}

input AnalyticVar3Order {
  id: OrderDirection
  name: OrderDirection
  value: OrderDirection
}

"A connection to a list of items."
type AnalyticVar3Connection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [AnalyticVar3Edge]
}

"An edge in a connection."
type AnalyticVar3Edge {
  "The item at the end of the edge."
  node: AnalyticVar3!

  "A cursor for use in pagination."
  cursor: String!
}

type AnalyticVar3 {
  id: Uuid!
  value: String
  name: String
}

type AnalyticRequest {
  id: Uuid!
  datetime: DateTime
  userIp: String
  country: Country
  city: String
  partnerClickId: String
  bot: Boolean
  redirected: Boolean
  device: Device
  app: App
  landingPage: LandingPage
  var1: AnalyticVar1
  var2: AnalyticVar2
  var3: AnalyticVar3
  browserInfo: AnalyticBrowserInfo
  requestUrl: AnalyticRequestUrl
  userAgent: AnalyticUserAgent
  checkerResults: [AnalyticCheckerResult!]
}

type Device {
  id: Int!
  name: String!
}

type App {
  id: Uuid!
  user: User
}

type AnalyticBrowserInfo {
  id: Uuid!
  cookieEnabled: Boolean
  windowHasOntouchstart: Boolean
  windowMaxTouchPoints: Int
  windowNavigatorOscpu: String
  windowNavigatorWebdriver: Boolean
  windowNavigatorPlatform: String
  windowNavigatorHasPlugins: Boolean
  createdAt: DateTime
  updatedAt: DateTime
}

type AnalyticRequestUrl {
  id: Uuid!
  currentUrl: String
  destinationUrl: String
  refererUrl: String
}

type AnalyticUserAgent {
  id: Uuid!
  userAgent: String
  name: String
  os: String
  osVersion: String
  device: String
}

type AnalyticCheckerResult {
  id: Uuid!
  checkerGid: String
  checker: BotDetectorChecker!
  bot: Boolean
  reason: String
  createdAt: DateTime
  updatedAt: DateTime
}

input ReportFilter {
  dateFrom: DateTime!
  dateTo: DateTime!
  partnerIds: [Uuid!]
  campaignIds: [Uuid!]
  siteIds: [Uuid!]
  var1Ids: [Uuid!]
  var2Ids: [Uuid!]
  var3Ids: [Uuid!]
  userIds: [Int!]
}

input ReportBotCheckersHourlyOrder {
  hour: OrderDirection
  checkerGid: OrderDirection
  clicks: OrderDirection
}

"A connection to a list of items."
type ReportBotCheckersHourlyConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportBotCheckersHourlyEdge]
}

"An edge in a connection."
type ReportBotCheckersHourlyEdge {
  "The item at the end of the edge."
  node: ReportBotCheckersHourly!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportBotCheckersHourly {
  hour: Int
  checkerGid: String!
  checker: BotDetectorChecker!
  clicks: Int
}

input ReportClicksHourlyOrder {
  hour: OrderDirection
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportClicksHourlyConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportClicksHourlyEdge]
}

"An edge in a connection."
type ReportClicksHourlyEdge {
  "The item at the end of the edge."
  node: ReportClicksHourly!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportClicksHourly {
  hour: Int
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportClicksTotalOrder {
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportClicksTotalConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportClicksTotalEdge]
}

"An edge in a connection."
type ReportClicksTotalEdge {
  "The item at the end of the edge."
  node: ReportClicksTotal!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportClicksTotal {
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportDeviceTotalOrder {
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportDeviceTotalConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportDeviceTotalEdge]
}

"An edge in a connection."
type ReportDeviceTotalEdge {
  "The item at the end of the edge."
  node: ReportDeviceTotal!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportDeviceTotal {
  deviceId: Int!
  deviceName: String!
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportDeviceHourlyOrder {
  hour: OrderDirection
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportDeviceHourlyConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportDeviceHourlyEdge]
}

"An edge in a connection."
type ReportDeviceHourlyEdge {
  "The item at the end of the edge."
  node: ReportDeviceHourly!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportDeviceHourly {
  hour: Int
  deviceId: Int!
  deviceName: String!
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportCountryTotalOrder {
  countryAlpha2Code: OrderDirection
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportCountryTotalConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportCountryTotalEdge]
}

"An edge in a connection."
type ReportCountryTotalEdge {
  "The item at the end of the edge."
  node: ReportCountryTotal!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportCountryTotal {
  countryName: String
  countryCode: String
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportCountryHourlyOrder {
  hour: OrderDirection
  countryAlpha2Code: OrderDirection
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportCountryHourlyConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportCountryHourlyEdge]
}

"An edge in a connection."
type ReportCountryHourlyEdge {
  "The item at the end of the edge."
  node: ReportCountryHourly!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportCountryHourly {
  hour: Int
  countryAlpha2Code: String
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportCampaignTotalFilter {
  dateFrom: DateTime!
  dateTo: DateTime!
  partnerIds: [Uuid!]
  campaignIds: [Uuid!]
  siteIds: [Uuid!]
  var1Ids: [Uuid!]
  var2Ids: [Uuid!]
  var3Ids: [Uuid!]
  userIds: [Int!]
}

input ReportCampaignTotalOrder {
  campaignName: OrderDirection
  partnerName: OrderDirection
  var1Name: OrderDirection
  var2Name: OrderDirection
  var3Name: OrderDirection
  clicksBot: OrderDirection
  clicksRedirected: OrderDirection
  clicksTotal: OrderDirection
}

"A connection to a list of items."
type ReportCampaignTotalConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportCampaignTotalEdge]
}

"An edge in a connection."
type ReportCampaignTotalEdge {
  "The item at the end of the edge."
  node: ReportCampaignTotal!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportCampaignTotal {
  campaignId: Uuid
  campaignName: String
  partnerId: Uuid
  partnerName: String
  var1Id: Uuid
  var1Name: String
  var2Id: Uuid
  var2Name: String
  var3Id: Uuid
  var3Name: String
  clicksBot: Int
  clicksRedirected: Int
  clicksTotal: Int
}

input ReportAnalyticRequestFilter {
  dateFrom: DateTime!
  dateTo: DateTime!
  partnerIds: [Uuid!]
  campaignIds: [Uuid!]
  siteIds: [Uuid!]
  appIds: [Uuid!]
  var1Ids: [Uuid!]
  var2Ids: [Uuid!]
  var3Ids: [Uuid!]
  deviceIds: [Int!]
  countryIds: [Int!]
  userIds: [Int!]
  bot: [Boolean]
  redirected: [Boolean]
  botDetectorCheckersGids: [String!]
}

input ReportAnalyticRequestOrder {
  id: OrderDirection
  datetime: OrderDirection
  userIp: OrderDirection
  countryName: OrderDirection
  city: OrderDirection
  partnerClickId: OrderDirection
  userAgent: OrderDirection
  refererUrl: OrderDirection
  partnerName: OrderDirection
  campaignName: OrderDirection
  bot: OrderDirection
  deviceName: OrderDirection
  var1Name: OrderDirection
  var2Name: OrderDirection
  var3Name: OrderDirection
}

"A connection to a list of items."
type ReportAnalyticRequestConnection {
  total: Int

  "Information to aid in pagination."
  pageInfo: PageInfo!

  "Information to aid in pagination."
  edges: [ReportAnalyticRequestEdge]
}

"An edge in a connection."
type ReportAnalyticRequestEdge {
  "The item at the end of the edge."
  node: ReportAnalyticRequest!

  "A cursor for use in pagination."
  cursor: String!
}

type ReportAnalyticRequest {
  id: Uuid!
  datetime: DateTime
  userIp: String
  countryName: String
  countryCode: String
  city: String
  partnerClickId: String
  userAgent: String
  refererUrl: String
  bot: Boolean
  redirected: Boolean
  deviceId: Int
  deviceName: String
  partnerName: String
  campaignName: String
  var1Name: String
  var1Value: String
  var2Name: String
  var2Value: String
  var3Name: String
  var3Value: String
}

"Click Filter GraphQL API"
type Mutation {
  createPartner(name: String!, trackingParamClickId: String!, botDetectorLevelId: Uuid!, passReferer: Boolean!, serverSideRedirect: Boolean!, blockBots: Boolean!, encodeRedirectUrl: Boolean!): Partner!
  updatePartner(id: Uuid!, name: String!, trackingParamClickId: String!, botDetectorLevelId: Uuid!, passReferer: Boolean!, serverSideRedirect: Boolean!, blockBots: Boolean!, encodeRedirectUrl: Boolean!): Partner!
  removePartner(id: Uuid!): Boolean!
  createCampaign(name: String!, partnerId: Uuid!): Campaign!
  updateCampaign(id: Uuid!, name: String!, partnerId: Uuid!): Campaign!
  removeCampaign(id: Uuid!): Boolean!
  createExtraQueryParam(name: String!, value: String!, appendToLandingPageUrl: Boolean!, appendToRedirectUrl: Boolean!, partnerIds: [Uuid!], campaignIds: [Uuid!], siteIds: [Uuid!]): ExtraQueryParam!
  updateExtraQueryParam(id: Uuid!, name: String!, value: String!, appendToLandingPageUrl: Boolean!, appendToRedirectUrl: Boolean!, partnerIds: [Uuid!], campaignIds: [Uuid!], siteIds: [Uuid!]): ExtraQueryParam!
  removeExtraQueryParam(id: Uuid!): Boolean!
  createSite(domain: String!): Site!
  updateSite(id: Uuid!, domain: String!): Site!
  removeSite(id: Uuid!): Boolean!
  createLandingPage(url: String!, campaignId: Uuid!): LandingPage!
  updateLandingPage(id: Uuid!, url: String!, campaignId: Uuid!): LandingPage!
  removeLandingPage(id: Uuid!): Boolean!
  bulkInsert(partnerId: Uuid!, checkLandingPageUrlUniq: Boolean!, entries: [BulkInsertEntryInput!]): BulkInsertResult!
}

input BulkInsertEntryInput {
  campaignName: String!
  landingPageUrl: String!
}

type BulkInsertResult {
  resultEntries: [BulkInsertResultEntry!]
}

type BulkInsertResultEntry {
  entry: BulkInsertEntry!
  landingPage: LandingPage
  error: String
}

type BulkInsertEntry {
  campaignName: String!
  landingPageUrl: String!
}