Product
Product associated with an integration event.
This page contains
Fields
| id: ID! | Catalog reference ID of the product |
| version: String! | Product version, either PUBLISHED or WORKING |
| vendor: Account! PREVIEW | Vendor information |
| externalSource: PriceBookExternalSource PREVIEW | |
| type: ProductType! PREVIEW | The type of product (ex: WEB_APP) |
| name: [LocalizedString!]! | The name of the product |
| vendorId: ID! @deprecated( reason: "No longer supported" ) | Vendor identifier |
| addon: Boolean! | Whether the product is an add-on |
| importable: Boolean! | Whether the product is an importable |
| buyable: Boolean! | Whether the product is buyable |
| allowMultiplePurchases: Boolean! | Whether the product allows multiple purchases |
| usageType: UsageType! | How many users can be assigned per purchase of the product. |
| referable: Boolean! | Whether the product is referable |
| supplierId: ID | Supplier id |
| defaultVariant: ProductVariant @deprecated( reason: "Replaced by templateVariant in favour of better naming" ) | Default product variant |
| templateVariant: ProductVariant | Template product variant. This template is used to configure fields that are common to multiple variants such as the physical attributes. |
| variantOptions: [ProductVariantOption!] | Variant options of the product |
| variants(configuration: ProductVariantConfigurationInput): [ProductVariant!] | Variants of the product |
| integration: ProductIntegration | Integration configuration for the product |
| validationErrors: [ProductValidationError!] | Publication validation errors |
| edition(id: ID!): ProductEdition! | Edition by id |
| editions: [ProductEdition!]! | Editions |
| editionSharedInformation: ProductEditionSharedInformation | Edition shared information |
| shortDescription: [LocalizedString!]! | Listing 5 words description of the product |
| description: [LocalizedString!]! | Listing description of the product |
| vendorName: [LocalizedString!]! | Displayed customizable name of the vendor |
| linkToProductWebsite: [LocalizedString!]! | Link to the product website |
| support: ProductSupport! | Support information of a Product |
| overview: ProductOverview! | Profile overview information |
| media: [ProductMedia!] | Media information |
| features: [ProductFeature!] | Features of a product |
| benefits: [ProductBenefit!]! | Profile Benefits Information |
| listingLogo: ProductImage | Logo for listing information |
| myAppsLogo: ProductImage | Logo for MyApps |
| profileLogo: ProductImage | Application profile logo |
| screenshots: [ProductScreenshot!] | Profile screenshots |
| privacyPolicyLink: [LocalizedURL!] | URL to the application's privacy policy |
| termsAndConditionsLink: [LocalizedURL!] | URL to the application's terms and conditions |
| resources: [ProductResource!] | Application's resources |
| source: ProductSource PREVIEW | Product source |
| externalResources: ProductExternalResources! | Application's external resources |
| customIntegration: String | Custom integration type for specialized vendor integrations. Returns the integration type name (e.g., "GOOGLE_APPS", "DOCUSIGN", etc.) or null if not set |
| customAttributeValues: [ProductCustomAttributeValue!]! PREVIEW | Custom attribute values for this product |
| isFullyInitialized: Boolean! PREVIEW | Whether the product's MySQL applications row is available |
| distributionStatus: ProductDistributionStatus PREVIEW | Distribution status for this product |
| networkRemovalRequest: ProductNetworkRemovalRequest PREVIEW | Active or most recent network removal request for this product, if any. Null when no request has been submitted. Populated from the PS-only productNetworkRemovalRequests aggregate. |
| productRetirementProcess: ProductRetirementProcess PREVIEW | Active or most recent retirement process for this product, if any. Null when no retirement is in progress or has been run. Used by the UI as a busy-state guard to prevent duplicate operations. |
| productPublicationProcess: ProductPublicationProcess | Active publication process for this product, if any (STARTED or PUBLISHING). Null once all publication processes have reached a terminal state. Used by the UI to resume the publication polling loop after a page reload. |
| status: ProductStatus PREVIEW | Status for this product |
| isVisible: Boolean PREVIEW | Whether the product is visible |
| isListedInStoreFront: Boolean PREVIEW | Whether this product is listed in the viewer tenant's local production catalog (app_2_market.is_added = Y for the published application and tenant partner). False when the Product parent is not PUBLISHED, or published but not added to the production catalog (e.g. staged-only). Distinct from isVisible (network visibility via applications.is_visible). Not storefront visibility (app_2_market.is_visible). |
| isInViewerCatalog: Boolean PREVIEW | True when this product is already in the viewer's marketplace (is_added=Y or is_staging=Y). |
| requiresDistributionApproval: Boolean PREVIEW | True when adding to the viewer's marketplace requires ISV/NCM approval (!isPreapprovedByIsv). Computed fresh each query — not frozen at add time. |
| networkSellStatus: NetworkCatalogSellStatus PREVIEW | Sell-readiness. READY_TO_SELL if isPreapprovedByIsv=true. |
| viewerSyndicationRequest: ProductSyndicationRequest PREVIEW | The viewer's active syndication request for this product, if any. |
| isNetworkVisible: Boolean PREVIEW | Whether the base product is visible on the network catalog (applications.is_visible). |
| isNetworkFeatured: Boolean PREVIEW | NCM editorial flags |
| isNetworkPopular: Boolean PREVIEW | |
| isNetworkStaffPick: Boolean PREVIEW |
Parent objects of Product
| AdobeRevertSwitchCurrentSubscription PREVIEW | |
| AdobeRevertSwitchRestoredSubscription PREVIEW | |
| CatalogFeedItem PREVIEW | |
| MarketplaceProductSettings PREVIEW | |
| PriceBookEntry | Represents the custom prices set in price book entry |
| ProductAlreadyDistributedOnNetworkError PREVIEW | |
| ProductAlreadyInLocalCatalogError PREVIEW | Returned when the product is already in the caller's marketplace (is_added=Y or is_staging=Y). |
| ProductAlreadyRequestedForDistributionError PREVIEW | |
| ProductConnection | |
| ProductCustomization PREVIEW | |
| ProductEdition | Product edition associated with the event. |
| ProductInfo PREVIEW | Product for invoice. Contains a reference to current object and data recorded at invoice creation. |
| ProductIntegrationEvent PREVIEW | Base integration event type owned by graphql-rest-proxy. Extended in integration-events-query.graphqls with monolith-only fields. |
| ProductIntegrationEventItem PREVIEW | A product integration event. |
| ProductNetworkDistributionNotRequestedError PREVIEW | Returned when distributionStatus is not REQUESTED (stale request guard). |
| ProductNetworkRemovalRequestAlreadySubmittedError PREVIEW | |
| ProductNotDistributedOnNetworkError PREVIEW | |
| ProductNotEligibleForDistributionError PREVIEW | |
| ProductNotSyndicatableError PREVIEW | Returned when the product is not eligible for syndication to the caller's marketplace. |
| ProductPublicationRequest | |
| ProductSyndicationPendingError PREVIEW | Returned when a syndication request is already pending for this product. |
| ProductSyndicationRequest PREVIEW | |
| ProductVariant | Specific variant of a Product from a configuration of a product's variant value |
| ProductVariantsCreationProcess | Asynchronous ProductVariant creation process |
| PsaProductMapping PREVIEW | Definition of a product mapping |
| QuoteItem PREVIEW | Individual item within a quote representing a product to be purchased |
| QuoteVersionItem PREVIEW | Individual item within a quote version representing a product to be purchased |
| SubscriptionDefinition PREVIEW | Subscription definition |
| SubscriptionDefinitionPreview PREVIEW | Subscription definition preview |
| SubscriptionRecordState PREVIEW | |
| SubscriptionState PREVIEW | Subscription State |
| TransferUnitEligibleEdition PREVIEW | Response for unit transfer. |
| UsageReaderConfiguration PREVIEW | Payload for new reader |
| VendorCustomerAccountEntitlement |
Mutations for Product
| addProductVariantOption | Add a product variant option to a product |
| addProductVariantOptionValue | Create variant option values for a product |
| approveProductNetworkDistribution PREVIEW | NCM approves a pending network distribution request. Always transitions distributionStatus REQUESTED → DISTRIBUTED, regardless of isPreapprovedByIsv. The isPreapprovedByIsv gate is enforced per-marketplace in addNetworkProductToLocalCatalog. |
| createProduct | Create a product |
| denyProductNetworkDistribution PREVIEW | NCM denies a pending network distribution request. Transitions distributionStatus: REQUESTED → DENIED. Clears distribution_target_partner. |
| disableProductVariants | Disable a product variant |
| enableProductVariants | Enable a product variant |
| isvApproveNetworkDistribution PREVIEW | ISV approves a pending per-marketplace ISV approval request for a product they own. The requestRefId was returned by addNetworkProductToLocalCatalog when isPreapprovedByIsv=false. Transitions catalog_requests: COMPANY_REQUESTED → CHANNEL_APPROVED and auto-stages the product into the requesting marketplace (SyndicationAutoStaged + CustomizationNativeCreated). |
| isvDenyNetworkDistribution PREVIEW | ISV denies a pending per-marketplace ISV approval request for a product they own. The requestRefId was returned by addNetworkProductToLocalCatalog when isPreapprovedByIsv=false. Transitions catalog_requests: COMPANY_REQUESTED → CHANNEL_DENIED. |
| linkProductIntegration | Link a product to a product integration |
| orderProductVariantOptions | Edit the order for product variant options |
| orderProductVariantOptionValues | Order product variant option values |
| removePrivacyPolicyLink | Remove a privacy policy link for a product |
| removeProductVariantOption | Remove a product variant option from a product |
| removeProductVariantOptionValue | Delete/remove a variant option's value |
| removeTermsAndConditionsLink | Remove a terms and conditions link for a product |
| requestProductNetworkDistribution PREVIEW | Developer/ISV or MM submits a product they own for inclusion in the AppDirect Network Catalog. Caller must have write access to the product (tenant or vendor). Transitions distributionStatus: NEW or DENIED → REQUESTED. NCM then reviews: approving transitions to DISTRIBUTED. When is_preapproved_by_isv = false, any marketplace adding this product via addNetworkProductToLocalCatalog will trigger a per-MP ISV approval request (COMPANY_REQUESTED in catalog_requests). V1 notification gap (D13): does NOT emit the monolith's NCM notification Kafka event. |
| requestProductNetworkRemoval PREVIEW | Developer/ISV requests removal of a distributed product from the AppDirect Network Catalog. Caller must have write access to the product (tenant or vendor). Requires distributionStatus = DISTRIBUTED on the published snapshot. Persists a PS-only network removal request for NCM review. Does NOT change distributionStatus — the product remains DISTRIBUTED until NCM acts. |
| updateProduct | Update a product |
| updateProductDefaultVariant | Update a product's default variant |
| updateProductVariantOption | Update a product's variant option |
| updateProductVariantOptionValue | Update a product variant option value |
| updateProductVariants | Update the product's variant(s) |
| withdrawProductNetworkDistribution PREVIEW | Developer/ISV or MM withdraws a pending network distribution request for a product they own. Caller must have write access to the product (tenant or vendor). Transitions distributionStatus: REQUESTED → NEW. Clears distributionTargetPartner. Does NOT change exclusivePartner (cleared only on approve). Does NOT emit the monolith NCM notification Kafka event. |
Queries for Product
| distributionCatalogProducts PREVIEW | Consolidated catalog for the Distribution Catalog UI. Returns exactly one node per product owned by the vendor. Each node is the product's PUBLISHED snapshot when one exists, and its WORKING (draft) snapshot otherwise — so name, logo, and branding always reflect what buyers currently see when the product is live, and reflect the draft when it is not. Product.version identifies which snapshot a node came from ("PUBLISHED" or "WORKING"). Status badge display is left to the UI for v1 — derive from version, status, and distributionStatus on each node. Check version first: on a node whose version is "WORKING", distributionStatus is a stale working-document value and must not be used to render a badge. Bundles and internal product types are always excluded. |
| marketplaceProductSettings PREVIEW | |
| networkCatalogProducts PREVIEW | Browse products on the AppDirect Network Catalog available to the viewer's marketplace. Viewer's marketplace = context.user.tenant. |
| priceBookEntry | Returns price book entry by its id |
| product | Query a product |
| productIntegrationEvent PREVIEW | A single product integration event, looked up by event identifier (event token). Returns null when the event is not found. |
| products | Query products by tenant |
| productsByVendorId | Query products by vendor ID |
| productSyndicationRequest PREVIEW | Returns the caller's own syndication request for the given catalog_requests.request_ref_id. Scoped to context.user.tenant (D3) — rows belonging to other marketplaces are invisible (null), even if the ID is known. Only returns the current (non-superseded) request for the app_2_market row. |
| productVariantsCreationProcess | Query the variants creation process |
| productVariantsCreationProcessByProductRefId | Query the variants creation process by product ref id |
| transferUnitEligibleSubscriptions PREVIEW | Get the list of eligible subscriptions for a unit transfer. |
| vendorIntegrationEventDetail PREVIEW | Fetch a single integration event by its unique token. Returns null if the event does not exist or the caller cannot access it. |