Skip to content

Marketing Data BFF Content Intent Model

Purpose

This document captures the current live marketing-data BFF surface for articles, products, collections, and properties, and proposes how oves-sites should model these objects as content-management intents rather than local object copies.

This document is based on live introspection and smoke tests against the marketing GraphQL BFF on March 4, 2026.

Core Direction

  • do not create local shadow copies of live BFF-managed marketing objects unless there is a temporary migration reason
  • keep local files focused on intent, curation, metadata, and usage guidance
  • use BFF object ids/keys as references, not as duplication targets

Domain Layout

  • docs/articles/ for article and article-collection intent
  • docs/products/ for product, property, and product-collection intent
  • docs/sites/ for site/page adoption of those objects

Current Reality vs Target Direction

Current repo reality:

  • docs/articles/*.md still contains local article staging bodies and metadata
  • docs/articles/collections/*.yaml still contains collection-level staging metadata
  • site intents under docs/intents/sites/*.intent.yaml drive ISR scaffolding

Target direction:

  • article and product folders increasingly describe management intent for BFF-backed objects
  • BFF becomes the operational object system
  • cleaned article-domain artifacts should be persisted into CMS through the BFF

Live Endpoint Base

The current marketing GraphQL BFF accepts POST requests at both:

  • https://dirac-fed-dev.omnivoltaic.com/marketing
  • https://dirac-fed-dev.omnivoltaic.com/marketing/graphql

Verified Endpoint Families

Article

  • getArticle
  • getArticleById
  • getArticles
  • createArticle
  • updateArticle
  • deleteArticle

Article Collection

  • getArticleCollection
  • getArticleCollections
  • createArticleCollection
  • updateArticleCollection
  • deleteArticleCollection
  • addArticlesToCollection
  • removeArticlesFromCollection
  • replaceArticlesInCollection

Product

  • getProduct
  • getProductHeaders
  • getProductsByKeys
  • createProduct
  • updateProduct
  • deleteProduct

Product Collection

  • getProductCollection
  • getProductCollections
  • getProductCollectionHeaders
  • getProductCollectionsByKeys
  • createProductCollection
  • deleteProductCollection
  • setProductCollections

Observed risk:

  • updateProductCollection is present in schema but was previously observed failing live

Property

  • getProperty
  • getPropertiesByKeys
  • getPropertyHeaders
  • createProperty
  • updateProperty
  • deleteProperty

Important Shape Notes

Property Model

The live property model currently uses:

  • propertyKey
  • name
  • propertyBase
  • unitHint
  • sequence
  • description

It does not use:

  • unit
  • type

Article Collection Membership Type

The live article collection membership mutations use:

  • articleIds: [String!]!

Do not assume integer ids here.