shapes
type: ShapeGeneration
shape reference chain limit: 5
omitted shape reference count: 0

SuccessResponseShape
type: NodeShape
target class: SuccessResponse
property:
  path: request id
  name: request id
  datatype: string
  max count: 1
property:
  path: result
  name: result
  description: Literal `"OK"` on success.
  datatype: string
  max count: 1
  in: OK

ProviderShape
type: NodeShape
target class: Provider
property:
  path: id
  name: id
  description: ID of lead in external platform.
  datatype: string
  max count: 1
property:
  path: integration
  name: integration
  description: Details of the integration that originated the record.
  node: ProviderIntegrationShape
  class: ProviderIntegration
  node kind: BlankNodeOrIRI
  max count: 1

ProviderIntegrationShape
type: NodeShape
target class: ProviderIntegration
property:
  path: name
  name: name
  description: Human-readable integration name (e.g. "Stripe", "ClickFunnels").
  datatype: string
  max count: 1
property:
  path: type
  name: type
  description: Integration platform type (provider classification).
  datatype: string
  max count: 1
property:
  path: id
  name: id
  description: Account ID of the integration in the external platform.
  datatype: string
  max count: 1

PriceShape
type: NodeShape
target class: Price
property:
  path: currency
  name: currency
  datatype: string
  max count: 1
property:
  path: price
  name: price
  datatype: double
  max count: 1
property:
  path: discount
  name: discount
  datatype: double
  max count: 1
property:
  path: hardCost
  name: hard cost
  datatype: double
  max count: 1
property:
  path: refunded
  name: refunded
  datatype: double
  max count: 1

AdSourceShape
type: NodeShape
target class: AdSource
property:
  path: adSourceId
  name: ad source id
  datatype: string
  max count: 1
property:
  path: adAccountId
  name: ad account id
  datatype: string
  max count: 1
property:
  path: platform
  name: platform
  description: Source platform. `AdspendType` is the REST API's enum and includes `BING`, but Hyros's webhook spec omits `BING` from its `AdSource.platform` list — webhook payloads will never carry that value even though the type permits it. REST responses can. Live REST inventory also returns versioned Google platform values such as `GOOGLE_V2`.
  datatype: string
  max count: 1
  in: FACEBOOK
  in: GOOGLE
  in: TIKTOK
  in: SNAPCHAT
  in: LINKEDIN
  in: TWITTER
  in: PINTEREST
  in: BING
  in: GOOGLE_V2

AdListItemResponseShape
type: NodeShape
target class: AdListItemResponse
property:
  path: name
  name: name
  description: Ad or campaign display name returned by `/api/v1.0/ads`.
  datatype: string
  max count: 1
property:
  path: adSource
  name: ad source
  description: Raw nested ad source returned by `/api/v1.0/ads`.
  node: AdSourceShape
  class: AdSource
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: source
  name: source
  description: Raw nested Hyros source returned by `/api/v1.0/ads`.
  node: SourceShape
  class: Source
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: creationDate
  name: creation date
  description: Unix epoch milliseconds returned by `/api/v1.0/ads`.
  datatype: integer
  max count: 1

SourceShape
type: NodeShape
target class: Source
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: disregarded
  name: disregarded
  datatype: boolean
  max count: 1
property:
  path: organic
  name: organic
  datatype: boolean
  max count: 1
property:
  path: adSource
  name: ad source
  node: AdSourceShape
  class: AdSource
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: trafficSource
  name: traffic source
  node: TrafficSourceShape
  class: TrafficSource
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: goal
  name: goal
  node: GoalShape
  class: Goal
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: category
  name: category
  node: CategoryShape
  class: Category
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: creationEpoch
  name: creation epoch
  description: Unix epoch seconds (per Hyros source spec — NOT ISO 8601 like `creationDate` on Lead/Sale/Call/Subscription). Wire field is `creationDate`; renamed to `creationEpoch` in TypeSpec so the RDF predicate (`hyros:creationEpoch`) is distinct from the string-typed `hyros:creationDate` used by other entities. This avoids a SHACL datatype contradiction (xsd:integer on Source vs xsd:string in the ontology's predicate range declaration).
  datatype: integer
  max count: 1

TrafficSourceShape
type: NodeShape
target class: TrafficSource
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1

GoalShape
type: NodeShape
target class: Goal
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1

CategoryShape
type: NodeShape
target class: Category
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1

AdInventoryShape
type: NodeShape
target class: AdInventory
property:
  path: name
  name: name
  description: Ad or campaign display name derived from `/api/v1.0/ads`.
  datatype: string
  max count: 1
property:
  path: adSourceId
  name: ad source id
  description: Ad source id flattened from `adSource.adSourceId`.
  datatype: string
  max count: 1
property:
  path: adAccountId
  name: ad account id
  description: Ad account id flattened from `adSource.adAccountId`.
  datatype: string
  max count: 1
property:
  path: platform
  name: platform
  description: Platform flattened from `adSource.platform`; live REST can return `GOOGLE_V2`.
  datatype: string
  max count: 1
  in: FACEBOOK
  in: GOOGLE
  in: TIKTOK
  in: SNAPCHAT
  in: LINKEDIN
  in: TWITTER
  in: PINTEREST
  in: BING
  in: GOOGLE_V2
property:
  path: creationDate
  name: creation date
  description: Unix epoch milliseconds from `/api/v1.0/ads`. This wire field remains `creationDate`, but its RDF predicate is mapped to `hyros:creationEpoch` to avoid conflicting with ISO/date-like `creationDate` fields on other Hyros entities.
  datatype: integer
  max count: 1

SourceLinkAdShape
type: NodeShape
target class: SourceLinkAd
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: adSourceId
  name: ad source id
  datatype: string
  max count: 1

AttributionShape
type: NodeShape
target class: Attribution
property:
  path: sourceLinkId
  name: source link id
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: disregarded
  name: disregarded
  datatype: boolean
  max count: 1
property:
  path: organic
  name: organic
  datatype: boolean
  max count: 1
property:
  path: clickDate
  name: click date
  datatype: dateTime
  max count: 1
property:
  path: clickId
  name: click id
  datatype: string
  max count: 1
property:
  path: adSource
  name: ad source
  node: AdSourceShape
  class: AdSource
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: sourceLinkAd
  name: source link ad
  node: SourceLinkAdShape
  class: SourceLinkAd
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: trafficSource
  name: traffic source
  node: TrafficSourceShape
  class: TrafficSource
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: goal
  name: goal
  node: GoalShape
  class: Goal
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: category
  name: category
  node: CategoryShape
  class: Category
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: gclId
  name: gcl id
  description: Only for Google.
  datatype: string
  max count: 1
property:
  path: gbraId
  name: gbra id
  description: Only for Google.
  datatype: string
  max count: 1
property:
  path: wbraId
  name: wbra id
  description: Only for Google.
  datatype: string
  max count: 1

AttributionReportShape
type: NodeShape
target class: AttributionReport
property:
  path: id
  name: id
  description: Runtime-stable report row id, usually the configured source/ad id.
  datatype: string
  max count: 1
property:
  path: campaignId
  name: campaign id
  description: Campaign/source id returned by `/api/v1.0/attribution` when grouped by campaign/source level.
  datatype: string
  max count: 1
property:
  path: attributionModel
  name: attribution model
  datatype: string
  max count: 1
property:
  path: date
  name: date
  description: Report period day from the dynamic Hyros row.
  datatype: string
  max count: 1
property:
  path: revenue
  name: revenue
  datatype: double
  max count: 1
property:
  path: sales
  name: sales
  datatype: double
  max count: 1
property:
  path: calls
  name: calls
  datatype: double
  max count: 1
property:
  path: cost
  name: cost
  datatype: double
  max count: 1
property:
  path: roas
  name: roas
  datatype: double
  max count: 1
property:
  path: aov
  name: aov
  datatype: double
  max count: 1
property:
  path: cac
  name: cac
  datatype: double
  max count: 1
property:
  path: costPerSale
  name: cost per sale
  datatype: double
  max count: 1
property:
  path: netProfit
  name: net profit
  datatype: double
  max count: 1
property:
  path: uniqueSales
  name: unique sales
  datatype: double
  max count: 1
property:
  path: uniqueCustomers
  name: unique customers
  datatype: double
  max count: 1
property:
  path: totalRevenue
  name: total revenue
  datatype: double
  max count: 1
property:
  path: recurringRevenue
  name: recurring revenue
  datatype: double
  max count: 1
property:
  path: newCustomersPercentage
  name: new customers percentage
  datatype: double
  max count: 1
property:
  path: recurringCustomers
  name: recurring customers
  datatype: double
  max count: 1
property:
  path: refund
  name: refund
  datatype: double
  max count: 1
property:
  path: refundCount
  name: refund count
  datatype: double
  max count: 1
property:
  path: refundSalesPercentage
  name: refund sales percentage
  datatype: double
  max count: 1

AdAccountReportShape
type: NodeShape
target class: AdAccountReport
property:
  path: id
  name: id
  description: Ad account id used for the `/api/v1.0/attribution/ad-account` request.
  datatype: string
  max count: 1
property:
  path: attributionModel
  name: attribution model
  datatype: string
  max count: 1
property:
  path: startDate
  name: start date
  description: Query window lower bound used for this aggregate row.
  datatype: string
  max count: 1
property:
  path: endDate
  name: end date
  description: Query window upper bound used for this aggregate row.
  datatype: string
  max count: 1
property:
  path: revenue
  name: revenue
  datatype: double
  max count: 1
property:
  path: sales
  name: sales
  datatype: double
  max count: 1
property:
  path: calls
  name: calls
  datatype: double
  max count: 1
property:
  path: cost
  name: cost
  datatype: double
  max count: 1
property:
  path: roas
  name: roas
  datatype: double
  max count: 1
property:
  path: aov
  name: aov
  datatype: double
  max count: 1
property:
  path: cac
  name: cac
  datatype: double
  max count: 1
property:
  path: costPerSale
  name: cost per sale
  datatype: double
  max count: 1
property:
  path: netProfit
  name: net profit
  datatype: double
  max count: 1
property:
  path: uniqueSales
  name: unique sales
  datatype: double
  max count: 1
property:
  path: uniqueCustomers
  name: unique customers
  datatype: double
  max count: 1
property:
  path: totalRevenue
  name: total revenue
  datatype: double
  max count: 1
property:
  path: recurringRevenue
  name: recurring revenue
  datatype: double
  max count: 1
property:
  path: newCustomersPercentage
  name: new customers percentage
  datatype: double
  max count: 1
property:
  path: recurringCustomers
  name: recurring customers
  datatype: double
  max count: 1
property:
  path: refund
  name: refund
  datatype: double
  max count: 1
property:
  path: refundCount
  name: refund count
  datatype: double
  max count: 1
property:
  path: refundSalesPercentage
  name: refund sales percentage
  datatype: double
  max count: 1

LeadShape
type: NodeShape
target class: Lead
property:
  path: email
  name: email
  datatype: string
  max count: 1
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: creationDate
  name: creation date
  datatype: dateTime
  max count: 1
property:
  path: tags
  name: tags
  datatype: string
property:
  path: ips
  name: ips
  datatype: string
property:
  path: phoneNumbers
  name: phone numbers
  datatype: string
property:
  path: firstName
  name: first name
  datatype: string
  max count: 1
property:
  path: lastName
  name: last name
  datatype: string
  max count: 1
property:
  path: provider
  name: provider
  node: ProviderShape
  class: Provider
  node kind: BlankNodeOrIRI
  max count: 1

LeadJourneyShape
type: NodeShape
target class: LeadJourney
property:
  path: lead
  name: lead
  node: LeadShape
  class: Lead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: sales
  name: sales
  node: SaleShape
  class: Sale
  node kind: BlankNodeOrIRI
property:
  path: calls
  name: calls
  node: CallShape
  class: Call
  node kind: BlankNodeOrIRI
property:
  path: carts
  name: carts
  node: LeadJourneyCartItemShape
  class: LeadJourneyCartItem
  node kind: BlankNodeOrIRI
property:
  path: linkedLeads
  name: linked leads
  node: LeadShape
  class: Lead
  node kind: BlankNodeOrIRI

SaleShape
type: NodeShape
target class: Sale
property:
  path: id
  name: id
  description: Hyros-assigned internal sale ID (prefixed `sle-...`).
  datatype: string
  max count: 1
property:
  path: orderId
  name: order id
  description: Client-supplied stable identifier from the upstream order system (typically a Stripe charge ID, payment processor reference, or e-commerce order number). Acts as a dedup key on `POST /orders`: resubmitting the same `orderId` updates the existing sale rather than creating a duplicate. Use this as the at-least-once retry handle when ingesting from a source system that issues stable IDs.
  datatype: string
  max count: 1
property:
  path: creationDate
  name: creation date
  datatype: dateTime
  max count: 1
property:
  path: qualified
  name: qualified
  datatype: boolean
  max count: 1
property:
  path: score
  name: score
  datatype: double
  max count: 1
property:
  path: recurring
  name: recurring
  datatype: boolean
  max count: 1
property:
  path: quantity
  name: quantity
  datatype: double
  max count: 1
property:
  path: lead
  name: lead
  node: LeadShape
  class: Lead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: firstSource
  name: first source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lastSource
  name: last source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: price
  name: price
  node: PriceShape
  class: Price
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: product
  name: product
  node: ProductShape
  class: Product
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: provider
  name: provider
  node: ProviderShape
  class: Provider
  node kind: BlankNodeOrIRI
  max count: 1

ProductShape
type: NodeShape
target class: Product
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: sku
  name: sku
  datatype: string
  max count: 1
property:
  path: category
  name: category
  node: CategoryShape
  class: Category
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: provider
  name: provider
  node: ProviderShape
  class: Provider
  node kind: BlankNodeOrIRI
  max count: 1

CallShape
type: NodeShape
target class: Call
property:
  path: id
  name: id
  description: Hyros-assigned internal call ID.
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: qualified
  name: qualified
  datatype: boolean
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: externalId
  name: external id
  description: Client-supplied stable identifier from the upstream calling system (e.g. Calendly event ID). Acts as a dedup key on `POST /calls`: resubmitting the same `externalId` updates the existing call rather than creating a duplicate. Use this as the at-least-once retry handle when ingesting from a source system that issues stable IDs.
  datatype: string
  max count: 1
property:
  path: score
  name: score
  datatype: double
  max count: 1
property:
  path: creationDate
  name: creation date
  datatype: dateTime
  max count: 1
property:
  path: state
  name: state
  datatype: string
  max count: 1
  in: QUALIFIED
  in: UNQUALIFIED
  in: CANCELLED
  in: NO_SHOW
property:
  path: qualification
  name: qualification
  node: CallQualificationShape
  class: CallQualification
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lead
  name: lead
  node: LeadShape
  class: Lead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: firstSource
  name: first source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lastSource
  name: last source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1

CallQualificationShape
type: NodeShape
target class: CallQualification
property:
  path: name
  name: name
  description: Current qualification stage name.
  datatype: string
  max count: 1
property:
  path: oldName
  name: old name
  description: Previous qualification stage name, if the stage was renamed.
  datatype: string
  max count: 1

LeadJourneyCartItemShape
type: NodeShape
target class: LeadJourneyCartItem
property:
  path: id
  name: id
  description: Cart identifier in Hyros.
  datatype: string
  max count: 1
property:
  path: orderId
  name: order id
  description: Order ID this cart resulted in. Only present if the cart was purchased.
  datatype: string
  max count: 1
property:
  path: creationDate
  name: creation date
  description: ISO 8601 cart creation timestamp.
  datatype: dateTime
  max count: 1
property:
  path: events
  name: events
  description: Number of cart events (add-to-cart, update) observed for this cart.
  datatype: integer
  max count: 1
property:
  path: provider
  name: provider
  description: Upstream provider that originated the cart record.
  node: ProviderShape
  class: Provider
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: products
  name: products
  description: Products in the cart at the time of the snapshot.
  node: ProductShape
  class: Product
  node kind: BlankNodeOrIRI
property:
  path: firstSource
  name: first source
  description: First attribution (first-touch) source for the cart's owning lead.
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lastSource
  name: last source
  description: Last attribution (last-touch) source for the cart's owning lead.
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1

CartItemShape
type: NodeShape
target class: CartItem
property:
  path: name
  name: name
  datatype: string
  min count: 1
  max count: 1
property:
  path: price
  name: price
  datatype: double
  min count: 1
  max count: 1
property:
  path: externalId
  name: external id
  datatype: string
  max count: 1
property:
  path: quantity
  name: quantity
  datatype: double
  max count: 1
property:
  path: sku
  name: sku
  description: Unique product reference code.
  datatype: string
  max count: 1

ItemShape
type: NodeShape
target class: Item
property:
  path: name
  name: name
  description: Name of the product.
  datatype: string
  min count: 1
  max count: 1
property:
  path: price
  name: price
  description: Product price per unit (costOfGoods included).
  datatype: double
  min count: 1
  max count: 1
property:
  path: externalId
  name: external id
  description: Unique identifier from the external integration.
  datatype: string
  max count: 1
property:
  path: quantity
  name: quantity
  description: Number of copies purchased. Defaults to 1.
  datatype: double
  max count: 1
property:
  path: costOfGoods
  name: cost of goods
  description: Cost per unit of manufacture. Must be included in the price. Defaults to 0.
  datatype: double
  max count: 1
property:
  path: taxes
  name: taxes
  description: Taxes applied to the item per unit. Defaults to 0.
  datatype: double
  max count: 1
property:
  path: itemDiscount
  name: item discount
  description: Discount applied to this specific line item.
  datatype: double
  max count: 1
property:
  path: packages
  name: packages
  description: Product packages this item belongs to (used for recurring sales attribution).
  datatype: string
property:
  path: tag
  name: tag
  description: Tag to create for the sale item.
  datatype: string
  max count: 1
property:
  path: categoryName
  name: category name
  description: Links the sale to a product category.
  datatype: string
  max count: 1

SubscriptionShape
type: NodeShape
target class: Subscription
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: subscriptionId
  name: subscription id
  datatype: string
  max count: 1
property:
  path: startDate
  name: start date
  datatype: dateTime
  max count: 1
property:
  path: endDate
  name: end date
  datatype: dateTime
  max count: 1
property:
  path: cancelAtDate
  name: cancel at date
  datatype: string
  max count: 1
property:
  path: trialStartDate
  name: trial start date
  datatype: string
  max count: 1
property:
  path: trialEndDate
  name: trial end date
  datatype: string
  max count: 1
property:
  path: price
  name: price
  description: Faithful to the source spec: scalar number on Subscription (unlike Sale.price which is a Price object). Hyros treats subscription pricing as a single recurring amount rather than a multi-field breakdown.
  datatype: decimal
  max count: 1
property:
  path: status
  name: status
  datatype: string
  max count: 1
  in: ACTIVE
  in: TRIALING
  in: CANCELED
  in: PAST_DUE
  in: INCOMPLETE
  in: INCOMPLETE_EXPIRED
  in: UNPAID
  in: COMPLETED
  in: PAUSED
property:
  path: periodicity
  name: periodicity
  datatype: string
  max count: 1
property:
  path: planId
  name: plan id
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: lead
  name: lead
  node: LeadShape
  class: Lead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: firstSource
  name: first source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lastSource
  name: last source
  or:
    node: AttributionShape
    class: Attribution
  or:
    node: WebhookAttributionShape
    class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: category
  name: category
  node: CategoryShape
  class: Category
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: provider
  name: provider
  node: ProviderShape
  class: Provider
  node kind: BlankNodeOrIRI
  max count: 1

WebhookLeadChildShape
type: NodeShape
target class: WebhookLeadChild
property:
  path: email
  name: email
  datatype: string
  max count: 1
property:
  path: joinDate
  name: join date
  description: Join date in the user's timezone.
  datatype: dateTime
  max count: 1
property:
  path: UTCJoinDate
  name: utcjoin date
  description: Join date in UTC.
  datatype: string
  max count: 1

WebhookLeadShape
type: NodeShape
target class: WebhookLead
property:
  path: ips
  name: ips
  datatype: string
property:
  path: tags
  name: tags
  datatype: string
property:
  path: phoneNumbers
  name: phone numbers
  datatype: string
property:
  path: firstName
  name: first name
  datatype: string
  max count: 1
property:
  path: lastName
  name: last name
  datatype: string
  max count: 1

WebhookProductShape
type: NodeShape
target class: WebhookProduct
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: quantity
  name: quantity
  datatype: double
  max count: 1
property:
  path: name
  name: name
  datatype: string
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: category
  name: category
  node: CategoryShape
  class: Category
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: price
  name: price
  description: Price in the outbound currency configured in Hyros.
  node: PriceShape
  class: Price
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: USDPrice
  name: usdprice
  description: Price in USD.
  node: PriceShape
  class: Price
  node kind: BlankNodeOrIRI
  max count: 1

WebhookAttributionShape
type: NodeShape
target class: WebhookAttribution
property:
  path: UTCClickDate
  name: utcclick date
  description: Click date in UTC. Only present on webhook payloads.
  datatype: string
  max count: 1

WebhookSaleEntityShape
type: NodeShape
target class: WebhookSaleEntity
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: type
  name: type
  datatype: string
  max count: 1
  in: SALE
property:
  path: date
  name: date
  description: Date of the sale in the user's timezone.
  datatype: dateTime
  max count: 1
property:
  path: UTCDate
  name: utcdate
  description: Date of the sale in UTC.
  datatype: string
  max count: 1
property:
  path: qualified
  name: qualified
  description: True if the sale score is 1.
  datatype: boolean
  max count: 1
property:
  path: score
  name: score
  datatype: double
  max count: 1
property:
  path: orderId
  name: order id
  datatype: string
  max count: 1
property:
  path: recurring
  name: recurring
  datatype: boolean
  max count: 1
property:
  path: attribution
  name: attribution
  node: WebhookAttributionShape
  class: WebhookAttribution
  node kind: BlankNodeOrIRI
property:
  path: lead
  name: lead
  node: WebhookLeadShape
  class: WebhookLead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: product
  name: product
  node: WebhookProductShape
  class: WebhookProduct
  node kind: BlankNodeOrIRI
  max count: 1

WebhookLeadOptInEntityShape
type: NodeShape
target class: WebhookLeadOptInEntity
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: firstOptin
  name: first optin
  description: Identifies whether this is the first opt-in for the lead.
  datatype: boolean
  max count: 1
property:
  path: date
  name: date
  description: Opt-in date in the user's timezone.
  datatype: dateTime
  max count: 1
property:
  path: UTCDate
  name: utcdate
  description: Opt-in date in UTC.
  datatype: string
  max count: 1
property:
  path: referrerUrl
  name: referrer url
  description: Referrer URL from which the lead opted in.
  datatype: string
  max count: 1
property:
  path: lead
  name: lead
  node: WebhookLeadShape
  class: WebhookLead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: attribution
  name: attribution
  description: All attributions the lead has.
  node: WebhookAttributionShape
  class: WebhookAttribution
  node kind: BlankNodeOrIRI
property:
  path: firstSource
  name: first source
  node: WebhookAttributionShape
  class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: lastSource
  name: last source
  node: WebhookAttributionShape
  class: WebhookAttribution
  node kind: BlankNodeOrIRI
  max count: 1

WebhookLeadOriginAssignedEntityShape
type: NodeShape
target class: WebhookLeadOriginAssignedEntity
property:
  path: mechanism
  name: mechanism
  datatype: string
  max count: 1
  in: SESSION_ID
  in: PHONE_NUMBER
  in: IP
  in: MANUAL
property:
  path: childLead
  name: child lead
  description: The lead assigned as child. Wire field is `lead`; renamed to `childLead` in TypeSpec to disambiguate from `originLead` and to make the predicate-name match for `hyros:childLead`.
  or:
    node: WebhookLeadShape
    class: WebhookLead
  or:
    node: WebhookLeadChildShape
    class: WebhookLeadChild
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: originLead
  name: origin lead
  description: The lead assigned as origin.
  node: WebhookLeadShape
  class: WebhookLead
  node kind: BlankNodeOrIRI
  max count: 1
property:
  path: date
  name: date
  description: Origin-assignment time in the user's timezone.
  datatype: dateTime
  max count: 1
property:
  path: UTCDate
  name: utcdate
  description: Origin-assignment time in UTC.
  datatype: string
  max count: 1
property:
  path: matchingValues
  name: matching values
  description: Values on which the two leads were matched.
  datatype: string

WebhookCallEntityShape
type: NodeShape
target class: WebhookCallEntity
property:
  path: id
  name: id
  datatype: string
  max count: 1
property:
  path: type
  name: type
  datatype: string
  max count: 1
  in: CALL
property:
  path: date
  name: date
  description: Call date in the user's timezone.
  datatype: dateTime
  max count: 1
property:
  path: UTCDate
  name: utcdate
  description: Call date in UTC.
  datatype: string
  max count: 1
property:
  path: qualified
  name: qualified
  datatype: boolean
  max count: 1
property:
  path: score
  name: score
  datatype: double
  max count: 1
property:
  path: tag
  name: tag
  datatype: string
  max count: 1
property:
  path: attribution
  name: attribution
  node: WebhookAttributionShape
  class: WebhookAttribution
  node kind: BlankNodeOrIRI
property:
  path: lead
  name: lead
  node: WebhookLeadShape
  class: WebhookLead
  node kind: BlankNodeOrIRI
  max count: 1

WebhookEventBaseShape
type: NodeShape
target class: WebhookEventBase
property:
  path: subscriptionId
  name: subscription id
  description: ID of the subscription that triggered delivery.
  datatype: string
  min count: 1
  max count: 1
property:
  path: eventId
  name: event id
  description: Unique event ID, suitable for consumer-side deduplication.
  datatype: string
  min count: 1
  max count: 1
property:
  path: type
  name: type
  description: Event type discriminator.
  datatype: string
  min count: 1
  max count: 1
property:
  path: timestamp
  name: timestamp
  description: ISO 8601 timestamp when the event was sent.
  datatype: dateTime
  min count: 1
  max count: 1

SaleAttributedEventShape
type: NodeShape
target class: SaleAttributedEvent
property:
  path: type
  name: type
  datatype: string
  min count: 1
  max count: 1
  has value: sale.attributed
property:
  path: body
  name: body
  node: WebhookSaleEntityShape
  class: WebhookSaleEntity
  node kind: BlankNodeOrIRI
  min count: 1
  max count: 1

LeadOptInEventShape
type: NodeShape
target class: LeadOptInEvent
property:
  path: type
  name: type
  datatype: string
  min count: 1
  max count: 1
  has value: lead.opted.in
property:
  path: body
  name: body
  node: WebhookLeadOptInEntityShape
  class: WebhookLeadOptInEntity
  node kind: BlankNodeOrIRI
  min count: 1
  max count: 1

LeadOriginAssignedEventShape
type: NodeShape
target class: LeadOriginAssignedEvent
property:
  path: type
  name: type
  datatype: string
  min count: 1
  max count: 1
  has value: lead.origin.assigned
property:
  path: body
  name: body
  node: WebhookLeadOriginAssignedEntityShape
  class: WebhookLeadOriginAssignedEntity
  node kind: BlankNodeOrIRI
  min count: 1
  max count: 1

CallAttributedEventShape
type: NodeShape
target class: CallAttributedEvent
property:
  path: type
  name: type
  datatype: string
  min count: 1
  max count: 1
  has value: call.attributed
property:
  path: body
  name: body
  node: WebhookCallEntityShape
  class: WebhookCallEntity
  node kind: BlankNodeOrIRI
  min count: 1
  max count: 1