scalar JSON scalar DateTime scalar Date scalar Time type Asset { url: String! fileName: String mimeType: String size: Int alt: String } type Money { amount: Float! currency: String! } type Measurement { value: Float! unit: String! } type GeoPoint { lat: Float! lng: Float! } type PageInfo { total: Int! limit: Int! offset: Int! hasMore: Boolean! nextCursor: String } enum PublicationState { PUBLISHED DRAFT ANY } enum SortDirection { ASC DESC } input SortInput { field: String! direction: SortDirection = ASC } input FilterInput { field: String! operator: String! value: JSON } enum AlarmCategorySeverityFloor { info warning critical } enum AlarmDefinitionSeverity { info warning critical } enum LandingPageLayoutStyle { standard video minimal } enum LifecycleStatusPhase { design active retired obsolete } enum ProductCharacteristicValueType { string number boolean date dateTime enum range object } enum ProductVariantStockStatus { inStock lowStock outOfStock preorder discontinued } enum CtaBlockVariant { primary ghost custom } enum TmfCharValueValueType { string number boolean date range } enum HeroBlockMedia { none image video } enum TmfPricePriceType { oneTime recurring usage } enum TmfPriceRecurringChargePeriod { day week month quarter year } enum RichTextBlockAlign { left center } """Conversion block with a conditional button style.""" type CtaBlock { """Button label""" label: String! """Target URL""" href: String! """Variant""" variant: CtaBlockVariant """Custom colour""" customColor: String } input CtaBlockInput { label: String href: String variant: CtaBlockVariant customColor: String } """TMF CharacteristicValueSpecification: one allowed value or range.""" type TmfCharValue { """Value type""" valueType: TmfCharValueValueType! """Value""" value: String """Range from""" valueFrom: Float """Range to""" valueTo: Float """Unit of measure""" unitOfMeasure: String """Default value""" isDefault: Boolean """Sort order""" sortOrder: Int } input TmfCharValueInput { valueType: TmfCharValueValueType value: String valueFrom: Float valueTo: Float unitOfMeasure: String isDefault: Boolean sortOrder: Int } """Headline block with an optional media background.""" type HeroBlock { """Headline""" headline: String! """Subheadline""" subheadline: String """Background media""" media: HeroBlockMedia """Background image""" image: Asset """Video URL""" videoUrl: String } input HeroBlockInput { headline: String subheadline: String media: HeroBlockMedia image: Asset videoUrl: String } """Shipping-relevant measurements of a physical variant.""" type TmfDimensions { """Length""" length: Measurement """Width""" width: Measurement """Height""" height: Measurement """Weight""" weight: Measurement } input TmfDimensionsInput { length: Measurement width: Measurement height: Measurement weight: Measurement } """TMF ProductOfferingPrice: one charge with its period and tax handling.""" type TmfPrice { """Price name""" name: String """Price type""" priceType: TmfPricePriceType! """Recurring period""" recurringChargePeriod: TmfPriceRecurringChargePeriod """Usage unit""" unitOfMeasure: String """Amount""" amount: Money! """Currency""" currency: String! """Tax included""" taxIncluded: Boolean """Tax rate""" taxRate: Float } input TmfPriceInput { name: String priceType: TmfPricePriceType recurringChargePeriod: TmfPriceRecurringChargePeriod unitOfMeasure: String amount: Money currency: String taxIncluded: Boolean taxRate: Float } """Long-form editorial content.""" type RichTextBlock { """Heading""" heading: String """Content""" content: String! """Alignment""" align: RichTextBlockAlign } input RichTextBlockInput { heading: String content: String align: RichTextBlockAlign } """Reusable search metadata block.""" type SeoMeta { """Meta title""" title: String """Meta description""" description: String """Keywords""" keywords: String } input SeoMetaInput { title: String description: String keywords: String } """TMF TimePeriod: the window during which an entity is valid.""" type TmfValidityPeriod { """Valid from""" validFrom: DateTime """Valid to""" validTo: DateTime } input TmfValidityPeriodInput { validFrom: DateTime validTo: DateTime } """Concrete value a variant assigns to a specification characteristic.""" type TmfVariantCharacteristic { """Characteristic code""" characteristicCode: String! """Value""" value: String! """Unit of measure""" unitOfMeasure: String } input TmfVariantCharacteristicInput { characteristicCode: String value: String unitOfMeasure: String } """Grouping of alarm definitions by functional area.""" type AlarmCategory { """Code""" code: String! """Name""" name: String! """Description""" description: String """Severity floor""" severityFloor: AlarmCategorySeverityFloor! """Accent colour""" color: String """SEO""" seo: SeoMeta """Alarm definitions""" definitions: [AlarmDefinition!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type AlarmCategoryPage { nodes: [AlarmCategory!]! pageInfo: PageInfo! } input AlarmCategoryCreateInput { code: String! name: String! description: String severityFloor: AlarmCategorySeverityFloor! color: String seo: SeoMetaInput status: String } input AlarmCategoryUpdateInput { code: String name: String description: String severityFloor: AlarmCategorySeverityFloor color: String seo: SeoMetaInput status: String } """A single machine-readable alarm contract.""" type AlarmDefinition { """Alarm code""" code: String! """Title""" title: String! """Summary""" summary: String """Remediation""" remediation: String """Severity""" severity: AlarmDefinitionSeverity! """Priority""" priority: Int! """Auto resolve""" autoResolve: Boolean """Threshold (s)""" thresholdSeconds: Int """Runbook URL""" runbookUrl: String """Owner e-mail""" ownerEmail: String """Payload example""" payloadExample: JSON """Category""" category: AlarmCategory! """Markets""" markets: [Country!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type AlarmDefinitionPage { nodes: [AlarmDefinition!]! pageInfo: PageInfo! } input AlarmDefinitionCreateInput { code: String! title: String! summary: String remediation: String severity: AlarmDefinitionSeverity! priority: Int! autoResolve: Boolean thresholdSeconds: Int runbookUrl: String ownerEmail: String payloadExample: JSON category: ID! markets: [ID!] status: String locale: String } input AlarmDefinitionUpdateInput { code: String title: String summary: String remediation: String severity: AlarmDefinitionSeverity priority: Int autoResolve: Boolean thresholdSeconds: Int runbookUrl: String ownerEmail: String payloadExample: JSON category: ID markets: [ID!] status: String locale: String } """Market reference data.""" type Country { """ISO 3166-1 alpha-2""" iso2: String! """Name""" name: String! """Currency""" currency: String id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type CountryPage { nodes: [Country!]! pageInfo: PageInfo! } input CountryCreateInput { iso2: String! name: String! currency: String status: String } input CountryUpdateInput { iso2: String name: String currency: String status: String } """E2E Note""" type E2eNote02573 { """Title""" title: String! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type E2eNote02573Page { nodes: [E2eNote02573!]! pageInfo: PageInfo! } input E2eNote02573CreateInput { title: String! status: String } input E2eNote02573UpdateInput { title: String status: String } """Composable marketing page assembled from blocks.""" type LandingPage { """Title""" title: String! """Slug""" slug: String! """Layout style""" layoutStyle: LandingPageLayoutStyle! """Hero video URL""" heroVideoUrl: String """Intro (markdown)""" body: String """Page blocks""" blocks: [JSON!]! """Gallery""" gallery: JSON """Campaign rating""" campaignRating: Int """Estimated read time""" readTimeSeconds: Int """Contact phone""" contactPhone: String """Preview allowlist IP""" allowlistIp: String """SEO""" seo: SeoMeta id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type LandingPagePage { nodes: [LandingPage!]! pageInfo: PageInfo! } input LandingPageCreateInput { title: String! slug: String! layoutStyle: LandingPageLayoutStyle! heroVideoUrl: String body: String blocks: [JSON!] gallery: JSON campaignRating: Int readTimeSeconds: Int contactPhone: String allowlistIp: String previewSecret: String seo: SeoMetaInput status: String } input LandingPageUpdateInput { title: String slug: String layoutStyle: LandingPageLayoutStyle heroVideoUrl: String body: String blocks: [JSON!] gallery: JSON campaignRating: Int readTimeSeconds: Int contactPhone: String allowlistIp: String previewSecret: String seo: SeoMetaInput status: String } """TMF lifecycle status catalogue shared by every catalog entity.""" type LifecycleStatus { """Name""" name: String! """Code""" code: String! """Phase""" phase: LifecycleStatusPhase! """Sellable""" isSellable: Boolean """Badge colour""" color: String """Sort order""" sortOrder: Int """Description""" description: String id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type LifecycleStatusPage { nodes: [LifecycleStatus!]! pageInfo: PageInfo! } input LifecycleStatusCreateInput { name: String! code: String! phase: LifecycleStatusPhase! isSellable: Boolean color: String sortOrder: Int description: String status: String } input LifecycleStatusUpdateInput { name: String code: String phase: LifecycleStatusPhase isSellable: Boolean color: String sortOrder: Int description: String status: String } """TMF Category: hierarchical classification of the catalog.""" type ProductCategory { """Name""" name: String! """Code""" code: String! """Description""" description: String """Category image""" image: Asset """Parent category""" parent: ProductCategory """Root category""" isRoot: Boolean """Sort order""" sortOrder: Int """Lifecycle status""" lifecycleStatus: LifecycleStatus """Valid for""" validFor: TmfValidityPeriod """Tags""" tags: [ContentTag!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ProductCategoryPage { nodes: [ProductCategory!]! pageInfo: PageInfo! } input ProductCategoryCreateInput { name: String! code: String! description: String image: Asset parent: ID isRoot: Boolean sortOrder: Int lifecycleStatus: ID validFor: TmfValidityPeriodInput tags: [ID!] status: String locale: String } input ProductCategoryUpdateInput { name: String code: String description: String image: Asset parent: ID isRoot: Boolean sortOrder: Int lifecycleStatus: ID validFor: TmfValidityPeriodInput tags: [ID!] status: String locale: String } """TMF ProductSpecificationCharacteristic: a reusable product attribute with its allowed values.""" type ProductCharacteristic { """Name""" name: String! """Code""" code: String! """Description""" description: String """Value type""" valueType: ProductCharacteristicValueType! """Unit of measure""" unitOfMeasure: String """Value pattern (regex)""" regex: String """Min cardinality""" minCardinality: Int """Max cardinality""" maxCardinality: Int """Allowed values""" allowedValues: [TmfCharValue!]! """Configurable by customer""" configurable: Boolean """Variant defining""" variantDefining: Boolean """Extensible""" extensible: Boolean """Category""" category: ProductCategory """Tags""" tags: [ContentTag!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ProductCharacteristicPage { nodes: [ProductCharacteristic!]! pageInfo: PageInfo! } input ProductCharacteristicCreateInput { name: String! code: String! description: String valueType: ProductCharacteristicValueType! unitOfMeasure: String regex: String minCardinality: Int maxCardinality: Int allowedValues: [TmfCharValueInput!] configurable: Boolean variantDefining: Boolean extensible: Boolean category: ID tags: [ID!] status: String } input ProductCharacteristicUpdateInput { name: String code: String description: String valueType: ProductCharacteristicValueType unitOfMeasure: String regex: String minCardinality: Int maxCardinality: Int allowedValues: [TmfCharValueInput!] configurable: Boolean variantDefining: Boolean extensible: Boolean category: ID tags: [ID!] status: String } """TMF ProductOffering: the commercial packaging of a specification for a market.""" type ProductOffering { """Name""" name: String! """Code""" code: String! """Description""" description: String """Product specification""" specification: ProductSpecification! """Offered variants""" variants: [ProductVariant!]! """Prices""" prices: [TmfPrice!]! """Sellable""" isSellable: Boolean """Sales channels""" channels: [String!]! """Primary market""" primaryMarket: String """Lifecycle status""" lifecycleStatus: LifecycleStatus """Valid for""" validFor: TmfValidityPeriod """Categories""" categories: [ProductCategory!]! """Tags""" tags: [ContentTag!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ProductOfferingPage { nodes: [ProductOffering!]! pageInfo: PageInfo! } input ProductOfferingCreateInput { name: String! code: String! description: String specification: ID! variants: [ID!] prices: [TmfPriceInput!] isSellable: Boolean channels: [String!] primaryMarket: String lifecycleStatus: ID validFor: TmfValidityPeriodInput categories: [ID!] tags: [ID!] status: String locale: String } input ProductOfferingUpdateInput { name: String code: String description: String specification: ID variants: [ID!] prices: [TmfPriceInput!] isSellable: Boolean channels: [String!] primaryMarket: String lifecycleStatus: ID validFor: TmfValidityPeriodInput categories: [ID!] tags: [ID!] status: String locale: String } """TMF ProductSpecification: the technical definition of a product.""" type ProductSpecification { """Name""" name: String! """Code""" code: String! """Product number""" productNumber: String """Brand""" brand: String """Description""" description: String """Attachments""" attachments: JSON """Characteristics""" characteristics: [ProductCharacteristic!]! """Bundle""" isBundle: Boolean """Bundled specifications""" bundledSpecifications: [ProductSpecification!]! """Lifecycle status""" lifecycleStatus: LifecycleStatus """Specification version""" version: String """Valid for""" validFor: TmfValidityPeriod """Categories""" categories: [ProductCategory!]! """Tags""" tags: [ContentTag!]! """External ID""" externalId: String id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ProductSpecificationPage { nodes: [ProductSpecification!]! pageInfo: PageInfo! } input ProductSpecificationCreateInput { name: String! code: String! productNumber: String brand: String description: String attachments: JSON characteristics: [ID!] isBundle: Boolean bundledSpecifications: [ID!] lifecycleStatus: ID version: String validFor: TmfValidityPeriodInput categories: [ID!] tags: [ID!] externalId: String status: String locale: String } input ProductSpecificationUpdateInput { name: String code: String productNumber: String brand: String description: String attachments: JSON characteristics: [ID!] isBundle: Boolean bundledSpecifications: [ID!] lifecycleStatus: ID version: String validFor: TmfValidityPeriodInput categories: [ID!] tags: [ID!] externalId: String status: String locale: String } """Sellable variant of a specification, defined by its characteristic values.""" type ProductVariant { """Name""" name: String! """SKU""" sku: String! """Product specification""" specification: ProductSpecification! """GTIN / EAN""" gtin: String """Variant image""" image: Asset """Characteristic values""" characteristics: [TmfVariantCharacteristic!]! """Prices""" prices: [TmfPrice!]! """Stock status""" stockStatus: ProductVariantStockStatus """Stock quantity""" stockQuantity: Int """Default variant""" isDefault: Boolean """Dimensions""" dimensions: TmfDimensions """Lifecycle status""" lifecycleStatus: LifecycleStatus """Valid for""" validFor: TmfValidityPeriod """Tags""" tags: [ContentTag!]! id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ProductVariantPage { nodes: [ProductVariant!]! pageInfo: PageInfo! } input ProductVariantCreateInput { name: String! sku: String! specification: ID! gtin: String image: Asset characteristics: [TmfVariantCharacteristicInput!] prices: [TmfPriceInput!] stockStatus: ProductVariantStockStatus stockQuantity: Int isDefault: Boolean dimensions: TmfDimensionsInput lifecycleStatus: ID validFor: TmfValidityPeriodInput tags: [ID!] status: String } input ProductVariantUpdateInput { name: String sku: String specification: ID gtin: String image: Asset characteristics: [TmfVariantCharacteristicInput!] prices: [TmfPriceInput!] stockStatus: ProductVariantStockStatus stockQuantity: Int isDefault: Boolean dimensions: TmfDimensionsInput lifecycleStatus: ID validFor: TmfValidityPeriodInput tags: [ID!] status: String } """Cross-entity tag catalogue used for grouping and faceted search.""" type ContentTag { """Name""" name: String! """Slug""" slug: String! """Colour""" color: String """Applies to""" scope: [String!]! """Description""" description: String id: ID! status: String! locale: String revision: Int! createdAt: DateTime updatedAt: DateTime publishedAt: DateTime } type ContentTagPage { nodes: [ContentTag!]! pageInfo: PageInfo! } input ContentTagCreateInput { name: String! slug: String! color: String scope: [String!] description: String status: String } input ContentTagUpdateInput { name: String slug: String color: String scope: [String!] description: String status: String } type Query { """Single Alarm category by id.""" alarmCategory(id: ID!): AlarmCategory """Paginated Alarm categories.""" alarmCategories(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): AlarmCategoryPage! """Single Alarm definition by id.""" alarmDefinition(id: ID!): AlarmDefinition """Paginated Alarm definitions.""" alarmDefinitions(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): AlarmDefinitionPage! """Single Country by id.""" country(id: ID!): Country """Paginated Countries.""" countries(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): CountryPage! """Single E2E Note by id.""" e2eNote02573(id: ID!): E2eNote02573 """Paginated E2E Notes.""" e2eNote02573s(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): E2eNote02573Page! """Single Landing page by id.""" landingPage(id: ID!): LandingPage """Paginated Landing pages.""" landingPages(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): LandingPagePage! """Single Lifecycle status by id.""" lifecycleStatus(id: ID!): LifecycleStatus """Paginated Lifecycle statuses.""" lifecycleStatuses(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): LifecycleStatusPage! """Single Product category by id.""" productCategory(id: ID!): ProductCategory """Paginated Product categories.""" productCategories(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ProductCategoryPage! """Single Product characteristic by id.""" productCharacteristic(id: ID!): ProductCharacteristic """Paginated Product characteristics.""" productCharacteristics(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ProductCharacteristicPage! """Single Product offering by id.""" productOffering(id: ID!): ProductOffering """Paginated Product offerings.""" productOfferings(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ProductOfferingPage! """Single Product specification by id.""" productSpecification(id: ID!): ProductSpecification """Paginated Product specifications.""" productSpecifications(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ProductSpecificationPage! """Single Product variant by id.""" productVariant(id: ID!): ProductVariant """Paginated Product variants.""" productVariants(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ProductVariantPage! """Single Tag by id.""" contentTag(id: ID!): ContentTag """Paginated Tags.""" contentTags(limit: Int = 25, offset: Int = 0, locale: String, publicationState: PublicationState = ANY, search: String, sort: [SortInput!], filters: [FilterInput!]): ContentTagPage! } type Mutation { createAlarmCategory(data: AlarmCategoryCreateInput!): AlarmCategory! updateAlarmCategory(id: ID!, data: AlarmCategoryUpdateInput!, ifRevision: Int): AlarmCategory! deleteAlarmCategory(id: ID!): Boolean! publishAlarmCategory(id: ID!): AlarmCategory! unpublishAlarmCategory(id: ID!): AlarmCategory! createAlarmDefinition(data: AlarmDefinitionCreateInput!): AlarmDefinition! updateAlarmDefinition(id: ID!, data: AlarmDefinitionUpdateInput!, ifRevision: Int): AlarmDefinition! deleteAlarmDefinition(id: ID!): Boolean! publishAlarmDefinition(id: ID!): AlarmDefinition! unpublishAlarmDefinition(id: ID!): AlarmDefinition! createCountry(data: CountryCreateInput!): Country! updateCountry(id: ID!, data: CountryUpdateInput!, ifRevision: Int): Country! deleteCountry(id: ID!): Boolean! publishCountry(id: ID!): Country! unpublishCountry(id: ID!): Country! createE2eNote02573(data: E2eNote02573CreateInput!): E2eNote02573! updateE2eNote02573(id: ID!, data: E2eNote02573UpdateInput!, ifRevision: Int): E2eNote02573! deleteE2eNote02573(id: ID!): Boolean! publishE2eNote02573(id: ID!): E2eNote02573! unpublishE2eNote02573(id: ID!): E2eNote02573! createLandingPage(data: LandingPageCreateInput!): LandingPage! updateLandingPage(id: ID!, data: LandingPageUpdateInput!, ifRevision: Int): LandingPage! deleteLandingPage(id: ID!): Boolean! publishLandingPage(id: ID!): LandingPage! unpublishLandingPage(id: ID!): LandingPage! createLifecycleStatus(data: LifecycleStatusCreateInput!): LifecycleStatus! updateLifecycleStatus(id: ID!, data: LifecycleStatusUpdateInput!, ifRevision: Int): LifecycleStatus! deleteLifecycleStatus(id: ID!): Boolean! publishLifecycleStatus(id: ID!): LifecycleStatus! unpublishLifecycleStatus(id: ID!): LifecycleStatus! createProductCategory(data: ProductCategoryCreateInput!): ProductCategory! updateProductCategory(id: ID!, data: ProductCategoryUpdateInput!, ifRevision: Int): ProductCategory! deleteProductCategory(id: ID!): Boolean! publishProductCategory(id: ID!): ProductCategory! unpublishProductCategory(id: ID!): ProductCategory! createProductCharacteristic(data: ProductCharacteristicCreateInput!): ProductCharacteristic! updateProductCharacteristic(id: ID!, data: ProductCharacteristicUpdateInput!, ifRevision: Int): ProductCharacteristic! deleteProductCharacteristic(id: ID!): Boolean! publishProductCharacteristic(id: ID!): ProductCharacteristic! unpublishProductCharacteristic(id: ID!): ProductCharacteristic! createProductOffering(data: ProductOfferingCreateInput!): ProductOffering! updateProductOffering(id: ID!, data: ProductOfferingUpdateInput!, ifRevision: Int): ProductOffering! deleteProductOffering(id: ID!): Boolean! publishProductOffering(id: ID!): ProductOffering! unpublishProductOffering(id: ID!): ProductOffering! createProductSpecification(data: ProductSpecificationCreateInput!): ProductSpecification! updateProductSpecification(id: ID!, data: ProductSpecificationUpdateInput!, ifRevision: Int): ProductSpecification! deleteProductSpecification(id: ID!): Boolean! publishProductSpecification(id: ID!): ProductSpecification! unpublishProductSpecification(id: ID!): ProductSpecification! createProductVariant(data: ProductVariantCreateInput!): ProductVariant! updateProductVariant(id: ID!, data: ProductVariantUpdateInput!, ifRevision: Int): ProductVariant! deleteProductVariant(id: ID!): Boolean! publishProductVariant(id: ID!): ProductVariant! unpublishProductVariant(id: ID!): ProductVariant! createContentTag(data: ContentTagCreateInput!): ContentTag! updateContentTag(id: ID!, data: ContentTagUpdateInput!, ifRevision: Int): ContentTag! deleteContentTag(id: ID!): Boolean! publishContentTag(id: ID!): ContentTag! unpublishContentTag(id: ID!): ContentTag! } schema { query: Query mutation: Mutation }