schema_version: 0.1.0
kind: source
id: source.nexuscrm.campaign_s3_snapshot
name: nexuscrm Campaign S3 snapshot export
version: 0.1.0
owner:
  type: team
  name: data-platform
domain:
  name: crm
purpose: Source-faithful per-snapshot Parquet export of nexuscrm.Campaign from TiDB
  Cloud Essential to S3, consumed by the lakehouse load stage.
usage:
  intended:
  - Bulk load into the raw lakehouse layer
  - Audit and provenance of exported snapshots
  prohibited:
  - Direct analytical querying (load into a contracted product first).
  - Treating a single snapshot as an intra-day event stream.
source:
  kind: database
  system: tidbcloud
  description: TiDB Cloud Essential nexuscrm.Campaign
  identifiers:
    database: nexuscrm
    table: Campaign
    cluster_id: '10996361222721502359'
assets:
- id: campaign_s3_snapshot
  kind: file
  ref: s3://pingcap-datalake-nexuscrm-export-247906201378-us-west-2/tidb-essential/snapshots/source=nexuscrm/
  materialization: external
  produced_by:
    kind: python
    ref: ingestion.extract.tidbcloud.engine.export
schema:
  kind: relational
  columns:
  - name: id
    type: varchar(255)
    nullable: false
  - name: ownerid
    type: varchar(255)
    nullable: true
  - name: createdbyid
    type: varchar(255)
    nullable: true
  - name: lastmodifiedbyid
    type: varchar(255)
    nullable: true
  - name: createddate
    type: datetime
    nullable: false
  - name: lastmodifieddate
    type: datetime
    nullable: false
  - name: systemmodstamp
    type: datetime
    nullable: false
  - name: isdeleted
    type: tinyint(1)
    nullable: false
  - name: name
    type: varchar(255)
    nullable: false
  - name: type
    type: varchar(255)
    nullable: true
  - name: status
    type: varchar(255)
    nullable: true
  - name: startdate
    type: date
    nullable: true
  - name: enddate
    type: date
    nullable: true
  - name: isactive
    type: tinyint(1)
    nullable: false
  - name: budgetedcost
    type: decimal(65,30)
    nullable: true
  - name: actualcost
    type: decimal(65,30)
    nullable: true
  - name: amountallopportunities
    type: decimal(65,30)
    nullable: true
  - name: amountwonopportunities
    type: decimal(65,30)
    nullable: true
  - name: expectedrevenue
    type: decimal(65,30)
    nullable: true
  - name: numberofcontacts
    type: decimal(65,30)
    nullable: true
  - name: numberofconvertedleads
    type: decimal(65,30)
    nullable: true
  - name: numberofleads
    type: decimal(65,30)
    nullable: true
  - name: numberofopportunities
    type: decimal(65,30)
    nullable: true
  - name: numberofwonopportunities
    type: decimal(65,30)
    nullable: true
  - name: numbersent
    type: decimal(65,30)
    nullable: true
  - name: numberofresponses
    type: decimal(65,30)
    nullable: true
  - name: description
    type: text
    nullable: true
  - name: additional_notes__c
    type: text
    nullable: true
  - name: campaignmemberrecordtypeid
    type: varchar(255)
    nullable: true
  - name: currencyisocode
    type: varchar(255)
    nullable: true
  - name: exclude_from_attribution__c
    type: tinyint(1)
    nullable: true
  - name: funnel_stage__c
    type: varchar(255)
    nullable: true
  - name: parentid
    type: varchar(255)
    nullable: true
  - name: primary_campaign_source_1__c
    type: varchar(255)
    nullable: true
  - name: region__c
    type: varchar(255)
    nullable: true
  - name: zoom_app__zoom_webinar__c
    type: varchar(255)
    nullable: true
  - name: expectedresponse
    type: decimal(65,30)
    nullable: true
freshness:
  max_age: PT48H
  degrade_after: PT30H
tests:
- id: campaign_source_smoke
  type: sql
  severity: informational
  description: Placeholder informational smoke check for the source contract of campaign.
    Replace with concrete row-count, freshness, or key-uniqueness assertions.
  sql: select 1
governance:
  classifications:
  - customer_data
  - financial
  - restricted
  access:
    default: restricted
  retention:
    period: P7D
  audit:
    required: true
    events:
    - export
    - agent_action
agent_permissions:
  default: deny
compatibility:
  change_policy: semver
extensions:
  primary_key:
  - Id
  watermark_columns:
  - SystemModstamp
  - LastModifiedDate
  row_estimate: 1950
  known_blind_spots:
  - Intra-snapshot changes are collapsed.
  - Insert-then-delete between snapshots is invisible.
  - Schema drift requires review before promotion.
