""" CJ Affiliate GraphQL Schema (partial, honestly modeled) CJ Affiliate's primary developer surface is GraphQL. This schema captures the two documented GraphQL endpoints: - Commission Detail API : POST https://commissions.api.cj.com/query - Product Search / ads : POST https://ads.api.cj.com/query Both authenticate with a Bearer personal access token created in the CJ developer portal (https://developers.cj.com/account/personal-access-tokens). The query names, the commissions.api.cj.com and ads.api.cj.com endpoints, the publisherCommissions / advertiserCommissions / products / shoppingProducts / shoppingProductFeeds queries, and the requestor company id (CID) + Bearer PAT auth model are grounded in CJ documentation and CJ knowledge-base articles. Individual field names and argument names below are MODELED from those sources and CJ shopping-feed conventions; verify exact spelling against the live reference at https://developers.cj.com/graphql/reference/ before relying on them. """ # ───────────────────────────────────────────── # Scalars # ───────────────────────────────────────────── scalar Date scalar DateTime scalar Decimal # ───────────────────────────────────────────── # Enums # ───────────────────────────────────────────── enum ActionStatus { NEW LOCKED CLOSED EXTENDED } enum ActionType { SALE LEAD ADVANCED BONUS } enum CorrectionReason { RETURN CANCELLATION ADJUSTMENT FRAUD } # ───────────────────────────────────────────── # Commission Detail API (commissions.api.cj.com) # ───────────────────────────────────────────── type PublisherCommissionRecord { actionTrackerId: ID actionTrackerName: String actionStatus: ActionStatus actionType: ActionType advertiserId: ID advertiserName: String websiteId: ID websiteName: String orderId: String shopperId: String postingDate: DateTime eventDate: DateTime lockingDate: DateTime clickDate: DateTime saleAmountUsd: Decimal saleAmountPubCurrency: Decimal pubCommissionAmountUsd: Decimal pubCommissionAmountPubCurrency: Decimal commissionId: ID correctionReason: CorrectionReason currency: String items: [CommissionLineItem!] } type CommissionLineItem { quantity: Int perItemSaleAmountPubCurrency: Decimal totalCommissionPubCurrency: Decimal sku: String discount: Decimal } type PublisherCommissions { count: Int payloadComplete: Boolean records: [PublisherCommissionRecord!]! } type AdvertiserCommissionRecord { actionTrackerId: ID actionTrackerName: String actionStatus: ActionStatus actionType: ActionType publisherId: ID publisherName: String orderId: String shopperId: String postingDate: DateTime eventDate: DateTime saleAmountUsd: Decimal advCommissionAmountUsd: Decimal currency: String items: [CommissionLineItem!] } type AdvertiserCommissions { count: Int payloadComplete: Boolean records: [AdvertiserCommissionRecord!]! } # ───────────────────────────────────────────── # Product Search API (ads.api.cj.com) # ───────────────────────────────────────────── type Product { id: ID advertiserId: ID advertiserName: String title: String description: String brand: String price: Money salePrice: Money currency: String imageLink: String link: String linkCode(pid: String): LinkCode availability: String gtin: String mpn: String upc: String googleProductCategory: String serviceableArea: [String!] } type Money { amount: Decimal currency: String } type LinkCode { clickUrl: String html: String } type ProductResult { totalCount: Int count: Int limit: Int offset: Int resultList: [Product!]! } type ShoppingProductFeed { adId: ID advertiserId: ID advertiserName: String feedName: String language: String currency: String productCount: Int lastUpdated: DateTime sourceFeedType: String } type ShoppingProductFeedResult { totalCount: Int count: Int resultList: [ShoppingProductFeed!]! } # ───────────────────────────────────────────── # Query Root # ───────────────────────────────────────────── type Query { """ Commission Detail API (commissions.api.cj.com). Near-real-time commission records for a publisher, filtered by posting date range, action status, advertiser IDs, order / shopper IDs, and more. """ publisherCommissions( forPublishers: [ID!]! sincePostingDate: DateTime! beforePostingDate: DateTime! advertiserIds: [ID!] actionStatuses: [ActionStatus!] actionType: ActionType orderId: String shopperId: String performanceLimit: Int ): PublisherCommissions! """ Commission Detail API (commissions.api.cj.com). Near-real-time commission records for an advertiser, filtered by posting date range, action status, publisher IDs, and more. """ advertiserCommissions( forAdvertisers: [ID!]! sincePostingDate: DateTime! beforePostingDate: DateTime! publisherIds: [ID!] actionStatuses: [ActionStatus!] orderId: String shopperId: String ): AdvertiserCommissions! """ Product Search API (ads.api.cj.com). Search products you can promote from advertisers you have joined. """ products( companyId: ID! partnerIds: [ID!] keywords: [String!] lowPrice: Decimal highPrice: Decimal currency: String serviceableArea: String upc: String limit: Int offset: Int ): ProductResult! """ Product Search API (ads.api.cj.com). Search products across the CJ shopping-feed specification. """ shoppingProducts( companyId: ID! partnerIds: [ID!] keywords: [String!] lowPrice: Decimal highPrice: Decimal currency: String serviceableArea: String limit: Int offset: Int ): ProductResult! """ Product Search API (ads.api.cj.com). List every advertiser product feed in the network for cold discovery, regardless of join status. """ shoppingProductFeeds( companyId: ID! partnerIds: [ID!] language: String currency: String limit: Int offset: Int ): ShoppingProductFeedResult! }