<!-- Generated from airlock/docs/spec-library.source.json by airlock/docs/scripts/generate-spec-library.mjs. -->

# Airlock Spec Library

Search reusable Airlock spec patterns by category or direct source/target system, including Shopify, Etsy, TikTok Shop, TikTok Ads, Amazon Selling Partner, Amazon Ads, Bill.com, Stripe, Square, Toast, QuickBooks, NetSuite, Salesforce, HubSpot, Jira, Linear, ServiceNow, Google Ads, Google Analytics, Google Merchant Center, Google Search Console, Google Business Profile, financial institutions, treasury, website storefront, commerce reconciliation, CRM, marketing, project management, billing, finance, and operations.

Collections link specs together with source links, expectations, and workflow dependencies.

Public repos:

- [airlock-specs](https://github.com/reunionstudio/airlock-specs): Machine-readable Airlock specs and ready-made spec collections for builders and agents.
- [airlock-tools](https://github.com/reunionstudio/airlock-tools): Tools, examples, and agent-friendly docs for installing and working with Airlock specs.

## Items

### projects_catalog

- Type: spec
- Domains: operations, project management
- Version: 1.0.0
- Summary: Master project codes, project names, clients, and statuses. Used as the project anchor for time and invoice specs.

#### Needs
- None.

#### Useful for
- Project registries
- Project-code alignment
- PSA/PM-style project masters

#### Extend with
- Project phases
- Status enums
- Parent/child project hierarchy

#### create_spec calls

##### projects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Stable project key used across timesheets and invoices",
      "name": "project_code",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "project_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer / client label",
      "name": "client_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "active or inactive",
      "format": "allowed_values:[active,inactive]",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Project catalog (master list for cross-spec references)",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Projects catalog",
    "spec_name": "projects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": false,
    "guest_roles": [],
    "isolated_access_level": null,
    "isolated_directories_enabled": false,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### ops_issues

- Type: spec
- Domains: project management, operations
- Version: 1.0.0
- Summary: General issue and ticket register for concerns found by people or agents. Use it as the catch-all place to send work that needs attention before the process has a more specific spec.

#### Needs
- An in-app role for agents or operators. The sample call uses ops_agent.

#### Useful for
- Agent-created tickets
- Operational issue tracking
- Project follow-up
- Exception queues
- Early process discovery

#### Extend with
- Specialized issue specs for repeated patterns
- Source links from the specs that raise issues
- Workflow milestones for triage and resolution

#### Similar shape
- Ticket queues in project management tools
- Issue registers in operations and support workflows

#### create_spec calls

##### ops_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "issue id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "opened at",
      "name": "opened_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "opened by actor",
      "name": "opened_by_actor",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source process",
      "name": "source_process",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source spec name",
      "name": "source_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source path",
      "name": "source_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source filename",
      "name": "source_filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source record id",
      "name": "source_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related spec name",
      "name": "related_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related record id",
      "name": "related_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "issue type",
      "name": "issue_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "owner role",
      "name": "owner_role",
      "tests": [],
      "type": "string"
    },
    {
      "description": "assignee",
      "name": "assignee",
      "tests": [],
      "type": "string"
    },
    {
      "description": "concern summary",
      "name": "concern_summary",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolution summary",
      "name": "resolution_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolved at",
      "name": "resolved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue-specific categorization and structured details that may evolve over time.",
      "name": "issue_details",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Flexible evidence captured by the agent or reconciliation process.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "One or more proposed operational actions or targets.",
      "name": "suggested_actions",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Flexible operational issue register for concerns discovered during agent review or reconciliation. Rows soft-reference the source work and can later be standardized into specialized issue types.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Ops issues",
    "spec_name": "ops_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "file_type": "csv",
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "role_name": "ops_agent",
        "access_level": "full_access"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  },
  "rules": [
    {
      "type": "variant_shape",
      "field": "issue_details",
      "paths": [
        {
          "json_path": "$.category",
          "type": "string",
          "required": true
        },
        {
          "json_path": "$.problem_code",
          "type": "string",
          "required": true
        },
        {
          "json_path": "$.standardization_status",
          "type": "string",
          "required": false
        }
      ],
      "allowed_root_keys": [
        "category",
        "problem_code",
        "standardization_status"
      ]
    },
    {
      "type": "variant_shape",
      "field": "evidence",
      "paths": [
        {
          "json_path": "$.employee.username",
          "type": "string",
          "required": true
        },
        {
          "json_path": "$.bill_com.payee_external_id",
          "type": "string",
          "required": false
        },
        {
          "json_path": "$.review.review_id",
          "type": "string",
          "required": false
        }
      ],
      "allowed_root_keys": [
        "employee",
        "bill_com",
        "review"
      ]
    },
    {
      "type": "variant_shape",
      "field": "suggested_actions",
      "paths": [
        {
          "json_path": "$[0].action",
          "type": "string",
          "required": true
        },
        {
          "json_path": "$[0].target_spec",
          "type": "string",
          "required": true
        },
        {
          "json_path": "$[0].target_record_id",
          "type": "string",
          "required": false
        }
      ],
      "require_object": false
    }
  ]
}$$));
```

### agent_product_feedback

- Type: spec
- Domains: operations, project management
- Version: 1.0.0
- Summary: Feature requests, bug reports, docs gaps, and spec-library gaps reported by agents. Use it when the problem is about Airlock, docs, specs, generated SQL, integrations, or agent ergonomics rather than a customer operational issue.

#### Needs
- An in-app role for agents or maintainers. The sample call uses product_feedback_agent.

#### Useful for
- Agent-reported product bugs
- Feature requests discovered during real work
- Docs and spec-library gaps
- Integration modeling gaps
- Structured product triage

#### Extend with
- Links from recurring feedback into roadmap or issue-tracker specs
- Promotion of repeated feedback types into validation rules or product improvements
- Routing into Jira, Linear, GitHub, or other delivery systems

#### Similar shape
- Product feedback queues
- Bug report intake
- Feature request triage
- Developer experience issue trackers

#### create_spec calls

##### agent_product_feedback

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Feedback id",
      "name": "feedback_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the feedback was reported",
      "name": "reported_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Agent, tool, or workflow that reported the feedback",
      "name": "reported_by_agent",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Agent session or run id when available",
      "name": "agent_session_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workspace, tenant, or environment where the issue appeared",
      "name": "workspace_or_tenant",
      "tests": [],
      "type": "string"
    },
    {
      "description": "User task or automation that exposed the issue",
      "name": "source_task",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product area such as docs, spec_library, stored_procedure, website, permissions, ingestion, reconciliation, or integration",
      "name": "product_area",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bug, feature_request, docs_gap, spec_gap, usability, performance, security_review, or other type",
      "name": "feedback_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business or product severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Triage priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Open, triaged, accepted, declined, resolved, or other status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Short feedback title",
      "name": "title",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Plain-language summary",
      "name": "summary",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Expected behavior or desired capability",
      "name": "expected_behavior",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Actual behavior seen by the agent",
      "name": "actual_behavior",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compact reproduction steps when available",
      "name": "reproduction_steps",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related Airlock spec name when relevant",
      "name": "affected_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related stored procedure or API surface when relevant",
      "name": "affected_procedure",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related repo or docs file path when relevant",
      "name": "affected_file_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team responsible for triage",
      "name": "owner_role",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Triage outcome or routing decision",
      "name": "triage_decision",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resolution summary",
      "name": "resolution_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resolution timestamp",
      "name": "resolved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured runtime, browser, database, library, or integration context.",
      "name": "environment_details",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Logs, error payloads, screenshots, source references, or other evidence.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Suggested product, docs, spec, or code change.",
      "name": "suggested_fix",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Feature requests, bug reports, docs gaps, and spec-library gaps reported by agents while they work.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Agent product feedback",
    "spec_name": "agent_product_feedback"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "product_feedback_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### timesheet_weekly

- Type: spec
- Domains: operations
- Version: 1.3.0
- Summary: Weekly time lines with date, hours, billable flag, project/task/subtask, and notes. Optional guest folders and weekly Submitted expectation.

#### Needs
- timesheet_guest_role or timesheet_guest_roles when guest access is enabled.

#### Useful for
- Consultant time capture
- Agency timesheets
- Weekly cutoff reminders

#### Similar shape
- Harvest
- Toggl Track
- QuickBooks Time-style weekly rows

#### create_spec calls

##### timesheet_lines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Work date",
      "format": "%Y-%m-%d",
      "name": "work_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "Decimal hours",
      "format": "min_value:0.01,max_value:24,precision:8,scale:2",
      "name": "hours",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "Billable line",
      "format": "true_values:[true,yes,Y,1,t],false_values:[false,no,N,0,f]",
      "name": "billable",
      "tests": [
        "not_null"
      ],
      "type": "boolean"
    },
    {
      "description": "Project reference",
      "name": "project_code",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Optional task",
      "name": "task",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Optional subtask / activity",
      "name": "subtask",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Notes",
      "name": "notes",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Weekly timesheet line items",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Timesheet lines",
    "spec_name": "timesheet_lines",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": true,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for payroll",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved / locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "file_type": "excel",
      "worksheet_name": "Time Entries",
      "worksheet_selection": "by_name"
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "employee"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

#### Expectation descriptors

```json
[
  {
    "expectation_name": "demo_weekly_timesheet_delivery",
    "spec_name": "timesheet_lines",
    "description": "Weekly delivery expectation for timesheet lines: files should reach the Submitted milestone by the rolling weekly cutoff (schedule operator due_weekly). Advisory by default.",
    "status": "active",
    "enforcement_mode": "advisory",
    "target_milestone": "Submitted",
    "logic": "all",
    "clauses": [
      {
        "type": "schedule",
        "label": "weekly_timesheet_cutoff",
        "operator": "due_weekly",
        "weekday": "friday",
        "time": "17:00",
        "timezone": "America/New_York"
      }
    ],
    "applies_to": {}
  }
]
```

### invoice_lines

- Type: spec
- Domains: billing
- Version: 1.0.0
- Summary: Invoice line items for billing and AR export handoff, usually tied to projects and customers.

#### Needs
- None.

#### Useful for
- Structured invoice lines
- Billing events
- Revenue-recognition handoff

#### Extend with
- Tax
- Discounts
- Multi-currency fields

#### create_spec calls

##### invoice_lines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Invoice document id",
      "name": "invoice_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Line number",
      "name": "line_no",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "Invoice date",
      "format": "%Y-%m-%d",
      "name": "invoice_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "Project reference",
      "name": "project_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Line amount",
      "name": "amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "Tax portion",
      "name": "tax_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Billable to customer",
      "format": "true_values:[true,yes,Y,1],false_values:[false,no,N,0]",
      "name": "billable",
      "tests": [
        "not_null"
      ],
      "type": "boolean"
    },
    {
      "description": "Line memo",
      "name": "memo",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Invoice lines for billing / AR handoff",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Invoice lines",
    "spec_name": "invoice_lines",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft invoice lines",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for posting",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Posted / locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": false,
    "guest_roles": [],
    "isolated_access_level": null,
    "isolated_directories_enabled": false,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### budget_role_scoped

- Type: spec
- Domains: finance
- Version: 1.3.0
- Summary: FY-style budget requests with workflow milestones and role-scoped filename/account-prefix rules.

#### Needs
- budget_finance_role, budget_hr_role, and budget_marketing_role; all distinct.

#### Useful for
- Departmental budget submissions
- Finance/HR/marketing planning cycles

#### Similar shape
- Workday
- Adaptive
- Anaplan-style planning roles

#### create_spec calls

##### budget_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Fiscal year",
      "format": "allowed_values:2026",
      "name": "fiscal_year",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Department (must align with role map)",
      "name": "department_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Account code",
      "name": "account",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Request amount",
      "name": "request",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "Narrative",
      "name": "narrative",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Budget requests \u2014 role-scoped accounts (reference_map) + department filename prefix",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_multi_role": true,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Budget requests (role-scoped)",
    "spec_name": "budget_requests",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft budget lines",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": true,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted request",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Finance / planning recommendation",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Recommended",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Final approval \u2014 locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Recommended",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "file_type": "excel",
      "worksheet_name": "Budget Request",
      "worksheet_selection": "by_name"
    },
    "filename_rules": {
      "enforce_filename_pattern": true,
      "filename_pattern": "^{reference_map:role_department}_.*$",
      "sample_filenames": "finance_budget_submission_2026, human_resources_budget_submission_2026, marketing_budget_submission_2026"
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "finance"
      },
      {
        "access_level": "full_access",
        "role_name": "hr"
      },
      {
        "access_level": "full_access",
        "role_name": "marketing"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "reference_maps": [
    {
      "mapping": {
        "finance": "finance",
        "hr": "human_resources",
        "marketing": "marketing"
      },
      "name": "role_department"
    },
    {
      "mapping": {
        "finance": "133",
        "hr": "220",
        "marketing": "310"
      },
      "name": "role_department_code"
    }
  ],
  "rules": [
    {
      "field": "account",
      "match_type": "prefix",
      "reference_map": "role_department_code",
      "type": "reference_map"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### business_operations_suite

- Type: collection
- Domains: operations, billing, finance
- Version: 1.5.0
- Summary: Spec collection that links projects_catalog, timesheet_weekly, invoice_lines, and budget_role_scoped.

#### Needs
- Timesheet guest roles when guest access is on.
- The three budget role slots.

#### Useful for
- Small-business operations: projects, time, invoices, and annual budget submissions

#### Includes
- projects_catalog
- timesheet_weekly
- invoice_lines
- budget_role_scoped

#### Links
- timesheet_weekly -> projects_catalog (source_link): Timesheet lines use project codes from the project catalog.
- invoice_lines -> projects_catalog (source_link): Invoice lines use project codes from the project catalog.
- timesheet_weekly -> weekly_submitted_expectation (expectation): Weekly timesheet delivery expectation when enabled.

#### create_spec calls

##### projects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Stable project key used across timesheets and invoices",
      "name": "project_code",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "project_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer / client label",
      "name": "client_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "active or inactive",
      "format": "allowed_values:[active,inactive]",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Project catalog (master list for cross-spec references)",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Projects catalog",
    "spec_name": "projects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": false,
    "guest_roles": [],
    "isolated_access_level": null,
    "isolated_directories_enabled": false,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### timesheet_lines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Work date",
      "format": "%Y-%m-%d",
      "name": "work_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "Decimal hours",
      "format": "min_value:0.01,max_value:24,precision:8,scale:2",
      "name": "hours",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "Billable line",
      "format": "true_values:[true,yes,Y,1,t],false_values:[false,no,N,0,f]",
      "name": "billable",
      "tests": [
        "not_null"
      ],
      "type": "boolean"
    },
    {
      "description": "Project reference",
      "name": "project_code",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Optional task",
      "name": "task",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Optional subtask / activity",
      "name": "subtask",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Notes",
      "name": "notes",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Weekly timesheet line items",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Timesheet lines",
    "spec_name": "timesheet_lines",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": true,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for payroll",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved / locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "file_type": "excel",
      "worksheet_name": "Time Entries",
      "worksheet_selection": "by_name"
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "employee"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### invoice_lines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Invoice document id",
      "name": "invoice_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Line number",
      "name": "line_no",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "Invoice date",
      "format": "%Y-%m-%d",
      "name": "invoice_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "Project reference",
      "name": "project_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Line amount",
      "name": "amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "Tax portion",
      "name": "tax_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Billable to customer",
      "format": "true_values:[true,yes,Y,1],false_values:[false,no,N,0]",
      "name": "billable",
      "tests": [
        "not_null"
      ],
      "type": "boolean"
    },
    {
      "description": "Line memo",
      "name": "memo",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Invoice lines for billing / AR handoff",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Invoice lines",
    "spec_name": "invoice_lines",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft invoice lines",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for posting",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Posted / locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": false,
    "guest_roles": [],
    "isolated_access_level": null,
    "isolated_directories_enabled": false,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### budget_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Fiscal year",
      "format": "allowed_values:2026",
      "name": "fiscal_year",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Department (must align with role map)",
      "name": "department_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Account code",
      "name": "account",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Request amount",
      "name": "request",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "Narrative",
      "name": "narrative",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "append",
    "description": "Budget requests \u2014 role-scoped accounts (reference_map) + department filename prefix",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_multi_role": true,
    "is_published": false,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Budget requests (role-scoped)",
    "spec_name": "budget_requests",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": true,
        "description": "Draft budget lines",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": true,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted request",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Finance / planning recommendation",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Recommended",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Final approval \u2014 locked",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Recommended",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "file_type": "excel",
      "worksheet_name": "Budget Request",
      "worksheet_selection": "by_name"
    },
    "filename_rules": {
      "enforce_filename_pattern": true,
      "filename_pattern": "^{reference_map:role_department}_.*$",
      "sample_filenames": "finance_budget_submission_2026, human_resources_budget_submission_2026, marketing_budget_submission_2026"
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "finance"
      },
      {
        "access_level": "full_access",
        "role_name": "hr"
      },
      {
        "access_level": "full_access",
        "role_name": "marketing"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "reference_maps": [
    {
      "mapping": {
        "finance": "finance",
        "hr": "human_resources",
        "marketing": "marketing"
      },
      "name": "role_department"
    },
    {
      "mapping": {
        "finance": "133",
        "hr": "220",
        "marketing": "310"
      },
      "name": "role_department_code"
    }
  ],
  "rules": [
    {
      "field": "account",
      "match_type": "prefix",
      "reference_map": "role_department_code",
      "type": "reference_map"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

#### Source link descriptors

```json
[
  {
    "downstream_spec_name": "timesheet_lines",
    "source_spec_name": "projects",
    "link_options": null
  },
  {
    "downstream_spec_name": "invoice_lines",
    "source_spec_name": "projects",
    "link_options": null
  }
]
```

#### Expectation descriptors

```json
[
  {
    "expectation_name": "demo_weekly_timesheet_delivery",
    "spec_name": "timesheet_lines",
    "description": "Weekly delivery expectation for timesheet lines: files should reach the Submitted milestone by the rolling weekly cutoff (schedule operator due_weekly). Advisory by default.",
    "status": "active",
    "enforcement_mode": "advisory",
    "target_milestone": "Submitted",
    "logic": "all",
    "clauses": [
      {
        "type": "schedule",
        "label": "weekly_timesheet_cutoff",
        "operator": "due_weekly",
        "weekday": "friday",
        "time": "17:00",
        "timezone": "America/New_York"
      }
    ],
    "applies_to": {}
  }
]
```

### commerce_operations_intelligence_suite

- Type: collection
- Domains: commerce, finance
- Related systems: Shopify, Flexport, Bill.com, Ad platforms, Subscription platforms, Commerce reconciliation
- Version: 1.3.1
- Summary: Mixed commerce operations collection: Shopify and other system observations, commerce reconciliation findings, governed Shopify change proposals, and Bill.com reimbursement operations.
- Coverage notes: This is a mixed operations collection. Shopify-labeled specs inside it are direct Shopify API observations or outbound Shopify commitments; reconciliation and generic helper specs are labeled as commerce reconciliation or internal specs.

#### Needs
- commerce_agent_role.
- Default role names are finance, operations, warehouse, and marketing.

#### Useful for
- AI-assisted ecommerce operations across product catalog, orders, costs, inventory, marketing, subscriptions, reimbursements, and payment confirmations

#### Seeds
- Demo CSVs under scopes such as shopify_api, shopify_agent_api, bill_com_api, employee_directory, and reconciliation.

#### Includes
- department_account_map
- shopify_api_products
- shopify_api_orders
- flexport_landed_costs
- inventory_levels
- ad_spend
- subscription_events
- sku_catalog_reconciliation
- shipping_margin_reconciliation
- bundle_profitability_reconciliation
- shopify_agent_api_price_changes
- shopify_agent_api_catalog_updates
- bill_com_employee_reimbursements

#### Links
- shopify_agent_api_price_changes -> sku_catalog_reconciliation (source_link): Price-change proposals cite upstream reconciliation findings.
- shopify_agent_api_catalog_updates -> shopify_api_products (source_link): Catalog-update proposals cite observed Shopify product data.
- bill_com_employee_reimbursements -> commerce_operations_intelligence_suite (child_collection): Employee reimbursements are included as the finance operations collection.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| department_account_map | Internal | Reference / access lens | Role-filtered department/account map for caller-scoped reference reads. |
| shopify_api_products | Shopify | Observation | Product and variant catalog observations. |
| shopify_api_orders | Shopify | Observation | Order observations with line-item, shipping, discount, fulfillment, region, and date fields. |
| flexport_landed_costs | Flexport | Observation | SKU-level freight, customs, landed cost, carrier, destination, and shipment state. |
| inventory_levels | Internal | Observation | Inventory quantities by SKU/location. |
| ad_spend | Ad platforms | Observation | Campaign spend, channel, CAC, attributed revenue, and region. |
| subscription_events | Subscription platforms | Observation | Subscription lifecycle events and churn/payment signals. |
| sku_catalog_reconciliation | Commerce reconciliation | Reconciliation | Catalog drift findings. |
| shipping_margin_reconciliation | Commerce reconciliation | Reconciliation | Shipping and margin findings. |
| bundle_profitability_reconciliation | Commerce reconciliation | Reconciliation | Bundle profitability findings. |
| shopify_agent_api_price_changes | Shopify | Commitment workflow | Agent-proposed variant price changes before outbound Shopify API sync. |
| shopify_agent_api_catalog_updates | Shopify | Commitment workflow | Agent-proposed product or variant catalog updates before outbound Shopify API sync. |
| bill_com_employee_reimbursements | Bill.com | Child collection | Employee reimbursements, Bill.com commitments, confirmations, and reconciliation. |

#### create_spec calls

##### employee_info

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "employee name",
      "name": "employee_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "work email",
      "name": "work_email",
      "tests": [],
      "type": "string"
    },
    {
      "description": "manager username",
      "name": "manager_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "department",
      "name": "department",
      "tests": [],
      "type": "string"
    },
    {
      "description": "default reimbursement category",
      "name": "default_reimbursement_category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "airlock status",
      "name": "airlock_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Canonical employee roster used by reimbursement agents when joining Airlock employee identity to Bill.com payee setup.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee info",
    "spec_name": "employee_info"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_employee_payees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "display name",
      "name": "display_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "email",
      "name": "email",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "default payment method",
      "name": "default_payment_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "remittance address",
      "name": "remittance_address",
      "tests": [],
      "type": "string"
    },
    {
      "description": "last pulled at",
      "name": "last_pulled_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "raw record hash",
      "name": "raw_record_hash",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payee, vendor, or user setup observations pulled from Bill.com by an agent through the Bill.com API.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API employee payees",
    "spec_name": "bill_com_api_employee_payees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursements

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "attachment_policy": {
    "allow_custom_attachment_tags": true,
    "allowed_extensions": [
      ".pdf",
      ".png",
      ".jpg",
      ".jpeg"
    ],
    "attachment_required": true,
    "attachments_enabled": true,
    "default_attachment_tag_limit": 1,
    "max_attachment_count": 5
  },
  "column_config": [
    {
      "description": "reimbursement id",
      "name": "reimbursement_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "manager username",
      "name": "manager_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "receipt date",
      "format": "%Y-%m-%d",
      "name": "receipt_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "merchant",
      "name": "merchant",
      "tests": [],
      "type": "string"
    },
    {
      "description": "amount",
      "name": "amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "policy flag",
      "name": "policy_flag",
      "tests": [],
      "type": "string"
    },
    {
      "description": "extracted summary",
      "name": "extracted_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Flexible JSON context for agent/source details, receipt extraction, and policy signals",
      "name": "processing_context",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "approval status",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Employee reimbursement submissions with required receipt attachments and Draft -> Submitted -> Reviewed -> Approved workflow. An agent records a review separately before approval.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursements",
    "spec_name": "employee_reimbursements",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Reviewed",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Reviewed",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Reviewed",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "submission",
        "receipt",
        "policy"
      ],
      "field": "processing_context",
      "paths": [
        {
          "json_path": "$.submission.channel",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.receipt.total",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.policy.requires_manager_review",
          "required": true,
          "type": "boolean"
        },
        {
          "json_path": "$.policy.reason",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursement_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "review id",
      "name": "review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "reviewed at",
      "name": "reviewed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reviewed by agent",
      "name": "reviewed_by_agent",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reimbursement spec name",
      "name": "reimbursement_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement path",
      "name": "reimbursement_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement filename",
      "name": "reimbursement_filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement id",
      "name": "reimbursement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "review status",
      "name": "review_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "receipt check result",
      "name": "receipt_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "policy check result",
      "name": "policy_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "duplicate check result",
      "name": "duplicate_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee setup check result",
      "name": "employee_setup_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com setup check result",
      "name": "bill_com_setup_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "recommended manager action",
      "name": "recommended_manager_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "review summary",
      "name": "review_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com update ids",
      "name": "bill_com_update_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured check outcomes recorded by the review agent.",
      "name": "check_results",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Flexible review evidence such as extracted receipt, policy, duplicate, and setup context.",
      "name": "review_evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Timestamped agent review records for submitted reimbursements. These records soft-reference the reimbursement file path and reimbursement id without creating a hard source link, so the submitted file can be deleted later without breaking review history.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursement reviews",
    "spec_name": "employee_reimbursement_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "checks",
        "recommended_update_ids"
      ],
      "field": "check_results",
      "paths": [
        {
          "json_path": "$.checks",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.recommended_update_ids",
          "required": false,
          "type": "array"
        }
      ],
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "employee",
        "receipt",
        "duplicate_candidates",
        "policy_context",
        "bill_com"
      ],
      "field": "review_evidence",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.receipt.amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.duplicate_candidates",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.policy_context.manager_context_required",
          "required": true,
          "type": "boolean"
        },
        {
          "json_path": "$.bill_com.payee_external_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### ops_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "issue id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "opened at",
      "name": "opened_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "opened by actor",
      "name": "opened_by_actor",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source process",
      "name": "source_process",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source spec name",
      "name": "source_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source path",
      "name": "source_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source filename",
      "name": "source_filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source record id",
      "name": "source_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related spec name",
      "name": "related_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related record id",
      "name": "related_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "issue type",
      "name": "issue_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "owner role",
      "name": "owner_role",
      "tests": [],
      "type": "string"
    },
    {
      "description": "assignee",
      "name": "assignee",
      "tests": [],
      "type": "string"
    },
    {
      "description": "concern summary",
      "name": "concern_summary",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolution summary",
      "name": "resolution_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolved at",
      "name": "resolved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue-specific categorization and structured details that may evolve over time.",
      "name": "issue_details",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Flexible evidence captured by the agent or reconciliation process.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "One or more proposed operational actions or targets.",
      "name": "suggested_actions",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Flexible operational issue register for concerns discovered during agent review or reconciliation. Rows soft-reference the source work and can later be standardized into specialized issue types.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Ops issues",
    "spec_name": "ops_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "category",
        "problem_code",
        "standardization_status"
      ],
      "field": "issue_details",
      "paths": [
        {
          "json_path": "$.category",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.problem_code",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.standardization_status",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "employee",
        "bill_com",
        "review"
      ],
      "field": "evidence",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.bill_com.payee_external_id",
          "required": false,
          "type": "string"
        },
        {
          "json_path": "$.review.review_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    },
    {
      "field": "suggested_actions",
      "paths": [
        {
          "json_path": "$[0].action",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].target_spec",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].target_record_id",
          "required": false,
          "type": "string"
        }
      ],
      "require_object": false,
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "update id",
      "name": "update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "detected at",
      "name": "detected_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "update type",
      "name": "update_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "airlock value",
      "name": "airlock_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com value",
      "name": "bill_com_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "proposed value",
      "name": "proposed_value",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reconciliation problem",
      "name": "reconciliation_problem",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source employee info id",
      "name": "source_employee_info_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source bill com record id",
      "name": "source_bill_com_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured reconciliation context behind the proposed Bill.com setup update.",
      "name": "update_details",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Agent-proposed Bill.com setup edits from reconciliation between employee_info and Bill.com API payee observations.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com updates",
    "spec_name": "bill_com_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "employee",
        "field",
        "current_airlock_value",
        "current_bill_com_value",
        "proposed_bill_com_value",
        "source_review_id"
      ],
      "field": "update_details",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.field",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.proposed_bill_com_value",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.source_review_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursement_commitment

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "prepared at",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "prepared by",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement ids",
      "name": "reimbursement_ids",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "employee usernames",
      "name": "employee_usernames",
      "tests": [],
      "type": "string"
    },
    {
      "description": "payee external ids",
      "name": "payee_external_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee count",
      "name": "employee_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "total amount",
      "name": "total_amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "api operation",
      "name": "api_operation",
      "tests": [],
      "type": "string"
    },
    {
      "description": "process date",
      "name": "process_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "funding account type",
      "name": "funding_account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "funding account id",
      "name": "funding_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill ids",
      "name": "bill_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "payment amounts by bill",
      "name": "payment_amounts_by_bill",
      "tests": [],
      "type": "string"
    },
    {
      "description": "api payload hash",
      "name": "api_payload_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "commitment status",
      "name": "commitment_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Structured list of approved reimbursements gathered into this commitment.",
      "name": "selected_reimbursements",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Bill.com API payload prepared by the agent for the outbound payment commitment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "One row per gathered outbound payment packet (not per reimbursement line). Rows are built from Approved employee_reimbursements files (governed by spec_source_links), then enriched with employee-directory fields: employee_usernames mirror Airlock/Snowflake identities from the requests; payee_external_ids hold provider-side ids (e.g. BILL userUuid or vendorId) resolved by joining to an employee roster\u2014often different from the Snowflake username. Bill line / payment metadata (billIds, amounts, processDate, fundingAccount) aligns with BILL POST /v3/payments*; real calls still require MFA-trusted sessions and ids from the vendor system.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursement commitment",
    "spec_name": "employee_reimbursement_commitment",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Prepared",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Prepared",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Prepared",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "field": "selected_reimbursements",
      "paths": [
        {
          "json_path": "$[0].reimbursement_id",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].employee_username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$[0].currency",
          "required": true,
          "type": "string"
        }
      ],
      "require_object": false,
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "operation",
        "processDate",
        "fundingAccount",
        "payments"
      ],
      "field": "api_payload",
      "paths": [
        {
          "json_path": "$.operation",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.fundingAccount.id",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.payments",
          "required": true,
          "type": "array"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_payment_confirmations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "confirmation id",
      "name": "confirmation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "bill com payment id",
      "name": "bill_com_payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "confirmed at",
      "name": "confirmed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "raw event id",
      "name": "raw_event_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Raw or normalized Bill.com webhook/polling response retained for audit.",
      "name": "provider_response",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment confirmation observations received from Bill.com webhook or polling after reimbursement commitments are sent.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API payment confirmations",
    "spec_name": "bill_com_api_payment_confirmations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "eventId",
        "paymentId",
        "status",
        "amount",
        "currency",
        "batchId"
      ],
      "field": "provider_response",
      "paths": [
        {
          "json_path": "$.eventId",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.paymentId",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.status",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.currency",
          "required": true,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### reimbursement_payment_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "reconciliation id",
      "name": "reconciliation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "confirmation id",
      "name": "confirmation_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "expected amount",
      "name": "expected_amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "confirmed amount",
      "name": "confirmed_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "difference",
      "name": "difference",
      "tests": [],
      "type": "number"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "finding",
      "name": "finding",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured matching details and comparison metadata.",
      "name": "reconciliation_details",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Reconciliation between employee reimbursement commitments sent to Bill.com and Bill.com payment confirmations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Reimbursement payment reconciliation",
    "spec_name": "reimbursement_payment_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "matched_commitment_ids",
        "matched_confirmation_ids",
        "comparison"
      ],
      "field": "reconciliation_details",
      "paths": [
        {
          "json_path": "$.matched_commitment_ids",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.matched_confirmation_ids",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.comparison.amount_delta",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.comparison.currency_match",
          "required": true,
          "type": "boolean"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### department_account_map

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "department",
      "name": "department",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "account code",
      "name": "account_code",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "account name",
      "name": "account_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "spend category",
      "name": "spend_category",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Role-scoped department/account reference data for commerce operating decisions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Department account map",
    "spec_name": "department_account_map"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "read_policy": {
    "row_filters_by_role": {
      "finance": [
        {
          "column": "department",
          "op": "=",
          "value": "finance"
        }
      ],
      "marketing": [
        {
          "column": "department",
          "op": "=",
          "value": "marketing"
        }
      ],
      "operations": [
        {
          "column": "department",
          "op": "=",
          "value": "operations"
        }
      ],
      "warehouse": [
        {
          "column": "department",
          "op": "=",
          "value": "warehouse"
        }
      ]
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "product id",
      "name": "product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "title",
      "name": "title",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "variant title",
      "name": "variant_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "weight",
      "name": "weight",
      "tests": [],
      "type": "number"
    },
    {
      "description": "weight unit",
      "name": "weight_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "price",
      "name": "price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "compare at price",
      "name": "compare_at_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "inventory item id",
      "name": "inventory_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "barcode",
      "name": "barcode",
      "tests": [],
      "type": "string"
    },
    {
      "description": "requires shipping",
      "name": "requires_shipping",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "taxable",
      "name": "taxable",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "vendor",
      "name": "vendor",
      "tests": [],
      "type": "string"
    },
    {
      "description": "product type",
      "name": "product_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "tags",
      "name": "tags",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product and variant catalog observations pulled from the Shopify API.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API products",
    "spec_name": "shopify_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "order date",
      "format": "%Y-%m-%d",
      "name": "order_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "quantity",
      "name": "quantity",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "subtotal price",
      "name": "subtotal_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "total shipping price",
      "name": "total_shipping_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "total discounts",
      "name": "total_discounts",
      "tests": [],
      "type": "number"
    },
    {
      "description": "fulfillment status",
      "name": "fulfillment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ship region",
      "name": "ship_region",
      "tests": [],
      "type": "string"
    },
    {
      "description": "tags",
      "name": "tags",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order-line observations pulled from the Shopify API for margin, shipping, fulfillment, and regional profitability analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API orders",
    "spec_name": "shopify_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### flexport_landed_costs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "shipment id",
      "name": "shipment_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "freight cost",
      "name": "freight_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "customs cost",
      "name": "customs_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "landed cost",
      "name": "landed_cost",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "shipment weight",
      "name": "shipment_weight",
      "tests": [],
      "type": "number"
    },
    {
      "description": "warehouse destination",
      "name": "warehouse_destination",
      "tests": [],
      "type": "string"
    },
    {
      "description": "carrier",
      "name": "carrier",
      "tests": [],
      "type": "string"
    },
    {
      "description": "shipment status",
      "name": "shipment_status",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "SKU-level logistics, freight, tariff, landed-cost, and warehouse destination observations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Flexport landed costs",
    "spec_name": "flexport_landed_costs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### inventory_levels

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "available quantity",
      "name": "available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "reserved quantity",
      "name": "reserved_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "inbound quantity",
      "name": "inbound_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "damaged quantity",
      "name": "damaged_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "last counted at",
      "format": "%Y-%m-%d",
      "name": "last_counted_at",
      "tests": [],
      "type": "date"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory observations across source systems such as Shopify, warehouse, 3PL, Flexport, and manual counts.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Inventory levels",
    "spec_name": "inventory_levels"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### ad_spend

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "spend date",
      "format": "%Y-%m-%d",
      "name": "spend_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "platform",
      "name": "platform",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "spend",
      "name": "spend",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "attributed revenue",
      "name": "attributed_revenue",
      "tests": [],
      "type": "number"
    },
    {
      "description": "attributed orders",
      "name": "attributed_orders",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "region",
      "name": "region",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing spend and attributed revenue observations for margin-aware pricing and campaign analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Ad spend",
    "spec_name": "ad_spend"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### subscription_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "event date",
      "format": "%Y-%m-%d",
      "name": "event_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "event type",
      "name": "event_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "subscription status",
      "name": "subscription_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "mrr",
      "name": "mrr",
      "tests": [],
      "type": "number"
    },
    {
      "description": "churn reason",
      "name": "churn_reason",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subscription renewals, failed payments, cancellation, churn, and retention observations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Subscription events",
    "spec_name": "subscription_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### sku_catalog_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "issue id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "detected at",
      "format": "%Y-%m-%d",
      "name": "detected_at",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "source system",
      "name": "source_system",
      "tests": [],
      "type": "string"
    },
    {
      "description": "issue type",
      "name": "issue_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "severity",
      "name": "severity",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "observation",
      "name": "observation",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Findings for SKU, catalog, marketplace, dimensional, and status drift across commerce systems.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "SKU catalog reconciliation",
    "spec_name": "sku_catalog_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shipping_margin_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "finding id",
      "name": "finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "detected at",
      "format": "%Y-%m-%d",
      "name": "detected_at",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "region",
      "name": "region",
      "tests": [],
      "type": "string"
    },
    {
      "description": "price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "landed cost",
      "name": "landed_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "avg shipping cost",
      "name": "avg_shipping_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "shipping charged",
      "name": "shipping_charged",
      "tests": [],
      "type": "number"
    },
    {
      "description": "margin after shipping",
      "name": "margin_after_shipping",
      "tests": [],
      "type": "number"
    },
    {
      "description": "finding",
      "name": "finding",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Continuous comparison of price, landed cost, shipping cost, shipping charged, and residual margin.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shipping margin reconciliation",
    "spec_name": "shipping_margin_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bundle_profitability_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "bundle id",
      "name": "bundle_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "bundle sku",
      "name": "bundle_sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "component skus",
      "name": "component_skus",
      "tests": [],
      "type": "string"
    },
    {
      "description": "price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "component landed cost",
      "name": "component_landed_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "avg shipping cost",
      "name": "avg_shipping_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "margin",
      "name": "margin",
      "tests": [],
      "type": "number"
    },
    {
      "description": "recommendation",
      "name": "recommendation",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bundle composition, fulfillment, landed-cost, promotion, and shipping profitability findings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bundle profitability reconciliation",
    "spec_name": "bundle_profitability_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_price_changes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "change id",
      "name": "change_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "current price",
      "name": "current_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "proposed price",
      "name": "proposed_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "reason",
      "name": "reason",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "expected margin lift",
      "name": "expected_margin_lift",
      "tests": [],
      "type": "number"
    },
    {
      "description": "source finding id",
      "name": "source_finding_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Draft Shopify variant price changes proposed by an agent and approved by a human before outbound Shopify API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API price changes",
    "spec_name": "shopify_agent_api_price_changes",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_catalog_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "update id",
      "name": "update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "update type",
      "name": "update_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "proposed value",
      "name": "proposed_value",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reason",
      "name": "reason",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "source issue id",
      "name": "source_issue_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Draft Shopify product or variant catalog updates proposed by an agent and approved by a human before outbound Shopify API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API catalog updates",
    "spec_name": "shopify_agent_api_catalog_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

#### Source link descriptors

```json
[
  {
    "downstream_spec_name": "bill_com_updates",
    "source_spec_name": "employee_info",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Compare canonical employee_info against Bill.com API payee setup before approving Bill.com update proposals."
      }
    }
  },
  {
    "downstream_spec_name": "bill_com_updates",
    "source_spec_name": "bill_com_api_employee_payees",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Ground proposed Bill.com setup edits in the latest Bill.com API pull."
      }
    }
  },
  {
    "downstream_spec_name": "employee_reimbursement_commitment",
    "source_spec_name": "employee_reimbursements",
    "link_options": {
      "required_workflow_status": "Approved",
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Gather Approved reimbursement files into an employee_reimbursement_commitment row; join employee_info and Bill.com API payees for provider ids before outbound payment APIs."
      }
    }
  },
  {
    "downstream_spec_name": "employee_reimbursement_commitment",
    "source_spec_name": "employee_info",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Resolve employee usernames from approved reimbursements to canonical employee records and Bill.com payee ids."
      }
    }
  },
  {
    "downstream_spec_name": "reimbursement_payment_reconciliation",
    "source_spec_name": "employee_reimbursement_commitment",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Compare approved/sent reimbursement commitments with Bill.com confirmations."
      }
    }
  },
  {
    "downstream_spec_name": "reimbursement_payment_reconciliation",
    "source_spec_name": "bill_com_api_payment_confirmations",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Use Bill.com payment confirmations as the external-system observation side of reimbursement payment reconciliation."
      }
    }
  }
]
```

### bill_com_employee_reimbursements

- Type: collection
- Domains: finance
- Related systems: Bill.com
- Version: 1.1.0
- Summary: Mixed Bill.com-related workflow for employee submissions, receipt attachments, agent reviews, approvals, Bill.com commitments, confirmations, and reconciliation.
- Source docs: [BILL API Platform](https://developer.bill.com/docs)

#### Needs
- bill_com_agent_role.

#### Useful for
- Receipt workflows
- Manager approval
- Payment batch preparation
- Bill.com setup checks
- Payment matching

#### Includes
- employee_info
- bill_com_api_employee_payees
- employee_reimbursements
- employee_reimbursement_reviews
- ops_issues
- bill_com_updates
- employee_reimbursement_commitment
- bill_com_api_payment_confirmations
- reimbursement_payment_reconciliation

#### Links
- employee_reimbursements -> employee_reimbursement_commitment (source_link): Approved reimbursements feed outbound payment commitments.
- employee_reimbursement_commitment -> bill_com_api_payment_confirmations (source_link): Sent commitments are matched to Bill.com payment confirmations.
- bill_com_api_payment_confirmations -> reimbursement_payment_reconciliation (source_link): Confirmations feed payment reconciliation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| employee_info | Internal | Reference | Employee roster with managers, departments, and Bill.com payee ids. |
| bill_com_api_employee_payees | Bill.com | Observation | Bill.com payee setup pulled by an agent. |
| employee_reimbursements | Internal | Employee workflow | Employee-submitted reimbursements with required receipt attachments. |
| employee_reimbursement_reviews | Internal | Agent review | Timestamped reviews with check outcomes and evidence. |
| ops_issues | Internal | Issue register | Review findings, exceptions, setup mismatches, policy questions, and reconciliation problems. |
| bill_com_updates | Bill.com | Setup commitment | Agent-proposed Bill.com setup edits. |
| employee_reimbursement_commitment | Bill.com | Payment commitment | Outbound payment packet built from approved reimbursements and employee/payee setup. |
| bill_com_api_payment_confirmations | Bill.com | Observation | Bill.com payment confirmations from webhook or polling. |
| reimbursement_payment_reconciliation | Bill.com | Reconciliation | Matches sent reimbursement commitments to Bill.com payment confirmations. |

#### create_spec calls

##### employee_info

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "employee name",
      "name": "employee_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "work email",
      "name": "work_email",
      "tests": [],
      "type": "string"
    },
    {
      "description": "manager username",
      "name": "manager_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "department",
      "name": "department",
      "tests": [],
      "type": "string"
    },
    {
      "description": "default reimbursement category",
      "name": "default_reimbursement_category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "airlock status",
      "name": "airlock_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Canonical employee roster used by reimbursement agents when joining Airlock employee identity to Bill.com payee setup.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee info",
    "spec_name": "employee_info"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_employee_payees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "display name",
      "name": "display_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "email",
      "name": "email",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "default payment method",
      "name": "default_payment_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "remittance address",
      "name": "remittance_address",
      "tests": [],
      "type": "string"
    },
    {
      "description": "last pulled at",
      "name": "last_pulled_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "raw record hash",
      "name": "raw_record_hash",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payee, vendor, or user setup observations pulled from Bill.com by an agent through the Bill.com API.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API employee payees",
    "spec_name": "bill_com_api_employee_payees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursements

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "attachment_policy": {
    "allow_custom_attachment_tags": true,
    "allowed_extensions": [
      ".pdf",
      ".png",
      ".jpg",
      ".jpeg"
    ],
    "attachment_required": true,
    "attachments_enabled": true,
    "default_attachment_tag_limit": 1,
    "max_attachment_count": 5
  },
  "column_config": [
    {
      "description": "reimbursement id",
      "name": "reimbursement_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "manager username",
      "name": "manager_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "receipt date",
      "format": "%Y-%m-%d",
      "name": "receipt_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "merchant",
      "name": "merchant",
      "tests": [],
      "type": "string"
    },
    {
      "description": "amount",
      "name": "amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "policy flag",
      "name": "policy_flag",
      "tests": [],
      "type": "string"
    },
    {
      "description": "extracted summary",
      "name": "extracted_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Flexible JSON context for agent/source details, receipt extraction, and policy signals",
      "name": "processing_context",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "approval status",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Employee reimbursement submissions with required receipt attachments and Draft -> Submitted -> Reviewed -> Approved workflow. An agent records a review separately before approval.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursements",
    "spec_name": "employee_reimbursements",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Reviewed",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Reviewed",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Reviewed",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "submission",
        "receipt",
        "policy"
      ],
      "field": "processing_context",
      "paths": [
        {
          "json_path": "$.submission.channel",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.receipt.total",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.policy.requires_manager_review",
          "required": true,
          "type": "boolean"
        },
        {
          "json_path": "$.policy.reason",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursement_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "review id",
      "name": "review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "reviewed at",
      "name": "reviewed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reviewed by agent",
      "name": "reviewed_by_agent",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reimbursement spec name",
      "name": "reimbursement_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement path",
      "name": "reimbursement_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement filename",
      "name": "reimbursement_filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement id",
      "name": "reimbursement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "review status",
      "name": "review_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "receipt check result",
      "name": "receipt_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "policy check result",
      "name": "policy_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "duplicate check result",
      "name": "duplicate_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee setup check result",
      "name": "employee_setup_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com setup check result",
      "name": "bill_com_setup_check_result",
      "tests": [],
      "type": "string"
    },
    {
      "description": "recommended manager action",
      "name": "recommended_manager_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "review summary",
      "name": "review_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com update ids",
      "name": "bill_com_update_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured check outcomes recorded by the review agent.",
      "name": "check_results",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Flexible review evidence such as extracted receipt, policy, duplicate, and setup context.",
      "name": "review_evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Timestamped agent review records for submitted reimbursements. These records soft-reference the reimbursement file path and reimbursement id without creating a hard source link, so the submitted file can be deleted later without breaking review history.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursement reviews",
    "spec_name": "employee_reimbursement_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "checks",
        "recommended_update_ids"
      ],
      "field": "check_results",
      "paths": [
        {
          "json_path": "$.checks",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.recommended_update_ids",
          "required": false,
          "type": "array"
        }
      ],
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "employee",
        "receipt",
        "duplicate_candidates",
        "policy_context",
        "bill_com"
      ],
      "field": "review_evidence",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.receipt.amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.duplicate_candidates",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.policy_context.manager_context_required",
          "required": true,
          "type": "boolean"
        },
        {
          "json_path": "$.bill_com.payee_external_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### ops_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "issue id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "opened at",
      "name": "opened_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "opened by actor",
      "name": "opened_by_actor",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source process",
      "name": "source_process",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source spec name",
      "name": "source_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source path",
      "name": "source_path",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source filename",
      "name": "source_filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source record id",
      "name": "source_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related spec name",
      "name": "related_spec_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "related record id",
      "name": "related_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "issue type",
      "name": "issue_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "owner role",
      "name": "owner_role",
      "tests": [],
      "type": "string"
    },
    {
      "description": "assignee",
      "name": "assignee",
      "tests": [],
      "type": "string"
    },
    {
      "description": "concern summary",
      "name": "concern_summary",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolution summary",
      "name": "resolution_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "resolved at",
      "name": "resolved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue-specific categorization and structured details that may evolve over time.",
      "name": "issue_details",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Flexible evidence captured by the agent or reconciliation process.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "One or more proposed operational actions or targets.",
      "name": "suggested_actions",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Flexible operational issue register for concerns discovered during agent review or reconciliation. Rows soft-reference the source work and can later be standardized into specialized issue types.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Ops issues",
    "spec_name": "ops_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "category",
        "problem_code",
        "standardization_status"
      ],
      "field": "issue_details",
      "paths": [
        {
          "json_path": "$.category",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.problem_code",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.standardization_status",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "employee",
        "bill_com",
        "review"
      ],
      "field": "evidence",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.bill_com.payee_external_id",
          "required": false,
          "type": "string"
        },
        {
          "json_path": "$.review.review_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    },
    {
      "field": "suggested_actions",
      "paths": [
        {
          "json_path": "$[0].action",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].target_spec",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].target_record_id",
          "required": false,
          "type": "string"
        }
      ],
      "require_object": false,
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "update id",
      "name": "update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "detected at",
      "name": "detected_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "employee username",
      "name": "employee_username",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com payee external id",
      "name": "bill_com_payee_external_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "update type",
      "name": "update_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "airlock value",
      "name": "airlock_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill com value",
      "name": "bill_com_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "proposed value",
      "name": "proposed_value",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reconciliation problem",
      "name": "reconciliation_problem",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "recommended action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source employee info id",
      "name": "source_employee_info_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "source bill com record id",
      "name": "source_bill_com_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured reconciliation context behind the proposed Bill.com setup update.",
      "name": "update_details",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Agent-proposed Bill.com setup edits from reconciliation between employee_info and Bill.com API payee observations.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com updates",
    "spec_name": "bill_com_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Approved",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Approved",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "employee",
        "field",
        "current_airlock_value",
        "current_bill_com_value",
        "proposed_bill_com_value",
        "source_review_id"
      ],
      "field": "update_details",
      "paths": [
        {
          "json_path": "$.employee.username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.field",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.proposed_bill_com_value",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.source_review_id",
          "required": false,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### employee_reimbursement_commitment

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "prepared at",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "prepared by",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "reimbursement ids",
      "name": "reimbursement_ids",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "employee usernames",
      "name": "employee_usernames",
      "tests": [],
      "type": "string"
    },
    {
      "description": "payee external ids",
      "name": "payee_external_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "employee count",
      "name": "employee_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "total amount",
      "name": "total_amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "api operation",
      "name": "api_operation",
      "tests": [],
      "type": "string"
    },
    {
      "description": "process date",
      "name": "process_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "funding account type",
      "name": "funding_account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "funding account id",
      "name": "funding_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "bill ids",
      "name": "bill_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "payment amounts by bill",
      "name": "payment_amounts_by_bill",
      "tests": [],
      "type": "string"
    },
    {
      "description": "api payload hash",
      "name": "api_payload_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "commitment status",
      "name": "commitment_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Structured list of approved reimbursements gathered into this commitment.",
      "name": "selected_reimbursements",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Bill.com API payload prepared by the agent for the outbound payment commitment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "One row per gathered outbound payment packet (not per reimbursement line). Rows are built from Approved employee_reimbursements files (governed by spec_source_links), then enriched with employee-directory fields: employee_usernames mirror Airlock/Snowflake identities from the requests; payee_external_ids hold provider-side ids (e.g. BILL userUuid or vendorId) resolved by joining to an employee roster\u2014often different from the Snowflake username. Bill line / payment metadata (billIds, amounts, processDate, fundingAccount) aligns with BILL POST /v3/payments*; real calls still require MFA-trusted sessions and ids from the vendor system.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Employee reimbursement commitment",
    "spec_name": "employee_reimbursement_commitment",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Prepared",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Prepared",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Prepared",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "field": "selected_reimbursements",
      "paths": [
        {
          "json_path": "$[0].reimbursement_id",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].employee_username",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$[0].amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$[0].currency",
          "required": true,
          "type": "string"
        }
      ],
      "require_object": false,
      "type": "variant_shape"
    },
    {
      "allowed_root_keys": [
        "operation",
        "processDate",
        "fundingAccount",
        "payments"
      ],
      "field": "api_payload",
      "paths": [
        {
          "json_path": "$.operation",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.fundingAccount.id",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.payments",
          "required": true,
          "type": "array"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_payment_confirmations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "confirmation id",
      "name": "confirmation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "bill com payment id",
      "name": "bill_com_payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "confirmed at",
      "name": "confirmed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "raw event id",
      "name": "raw_event_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Raw or normalized Bill.com webhook/polling response retained for audit.",
      "name": "provider_response",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment confirmation observations received from Bill.com webhook or polling after reimbursement commitments are sent.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API payment confirmations",
    "spec_name": "bill_com_api_payment_confirmations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "eventId",
        "paymentId",
        "status",
        "amount",
        "currency",
        "batchId"
      ],
      "field": "provider_response",
      "paths": [
        {
          "json_path": "$.eventId",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.paymentId",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.status",
          "required": true,
          "type": "string"
        },
        {
          "json_path": "$.amount",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.currency",
          "required": true,
          "type": "string"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### reimbursement_payment_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "reconciliation id",
      "name": "reconciliation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "batch id",
      "name": "batch_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "confirmation id",
      "name": "confirmation_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "expected amount",
      "name": "expected_amount",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "confirmed amount",
      "name": "confirmed_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "difference",
      "name": "difference",
      "tests": [],
      "type": "number"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "finding",
      "name": "finding",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Structured matching details and comparison metadata.",
      "name": "reconciliation_details",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Reconciliation between employee reimbursement commitments sent to Bill.com and Bill.com payment confirmations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Reimbursement payment reconciliation",
    "spec_name": "reimbursement_payment_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "rules": [
    {
      "allowed_root_keys": [
        "matched_commitment_ids",
        "matched_confirmation_ids",
        "comparison"
      ],
      "field": "reconciliation_details",
      "paths": [
        {
          "json_path": "$.matched_commitment_ids",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.matched_confirmation_ids",
          "required": true,
          "type": "array"
        },
        {
          "json_path": "$.comparison.amount_delta",
          "required": true,
          "type": "number"
        },
        {
          "json_path": "$.comparison.currency_match",
          "required": true,
          "type": "boolean"
        }
      ],
      "type": "variant_shape"
    }
  ],
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

#### Source link descriptors

```json
[
  {
    "downstream_spec_name": "bill_com_updates",
    "source_spec_name": "employee_info",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Compare canonical employee_info against Bill.com API payee setup before approving Bill.com update proposals."
      }
    }
  },
  {
    "downstream_spec_name": "bill_com_updates",
    "source_spec_name": "bill_com_api_employee_payees",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Ground proposed Bill.com setup edits in the latest Bill.com API pull."
      }
    }
  },
  {
    "downstream_spec_name": "employee_reimbursement_commitment",
    "source_spec_name": "employee_reimbursements",
    "link_options": {
      "required_workflow_status": "Approved",
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Gather Approved reimbursement files into an employee_reimbursement_commitment row; join employee_info and Bill.com API payees for provider ids before outbound payment APIs."
      }
    }
  },
  {
    "downstream_spec_name": "employee_reimbursement_commitment",
    "source_spec_name": "employee_info",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Resolve employee usernames from approved reimbursements to canonical employee records and Bill.com payee ids."
      }
    }
  },
  {
    "downstream_spec_name": "reimbursement_payment_reconciliation",
    "source_spec_name": "employee_reimbursement_commitment",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Compare approved/sent reimbursement commitments with Bill.com confirmations."
      }
    }
  },
  {
    "downstream_spec_name": "reimbursement_payment_reconciliation",
    "source_spec_name": "bill_com_api_payment_confirmations",
    "link_options": {
      "reference_mode": "immutable_accept",
      "min_count": 1,
      "max_count": null,
      "allow_upload_instead": false,
      "allow_upload_in_addition": false,
      "details": {
        "intent": "Use Bill.com payment confirmations as the external-system observation side of reimbursement payment reconciliation."
      }
    }
  }
]
```

### shopify_operations_library

- Type: collection
- Domains: commerce
- Direct systems: Shopify
- Coverage: Extended
- Version: 1.0.0
- Summary: Direct Shopify Admin API observation and commitment specs for products, orders, customers, inventory, fulfillment, refunds, discounts, payouts, and governed store changes.
- Coverage notes: Direct Shopify specs only: observations mirror Shopify Admin API or Shopify Payments resources, and commitments prepare approved outbound Shopify Admin API changes. Cross-system findings and gap-fillers live in reconciliation or commerce collections.
- Source docs: [Shopify Admin GraphQL API](https://shopify.dev/docs/api/admin-graphql), [Product object](https://shopify.dev/docs/api/admin-graphql/latest/objects/product), [Order object](https://shopify.dev/docs/api/admin-graphql/latest/objects/order), [Customer object](https://shopify.dev/docs/api/admin-graphql/latest/objects/customer), [InventoryLevel object](https://shopify.dev/docs/api/admin-graphql/latest/objects/inventorylevel), [Fulfillment object](https://shopify.dev/docs/api/admin-graphql/latest/objects/fulfillment), [Refund object](https://shopify.dev/docs/api/admin-graphql/latest/objects/refund), [Location object](https://shopify.dev/docs/api/admin-graphql/latest/objects/location), [DraftOrder object](https://shopify.dev/docs/api/admin-graphql/latest/objects/draftorder), [Return object](https://shopify.dev/docs/api/admin-graphql/latest/objects/return), [Collection object](https://shopify.dev/docs/api/admin-graphql/latest/objects/collection), [Shopify Payments payout resource](https://shopify.dev/docs/api/admin-rest/latest/resources/shopify_payments_payout)

#### Next objects
- fulfillment_orders
- markets
- metaobjects
- metafields
- customer_segments
- webhook_events

#### Omitted objects
- generic reconciliation findings
- non-Shopify gap fillers
- analytics reports
- app billing
- themes and online-store assets

#### Needs
- A Shopify agent/operator role. The generated calls use shopify_agent.

#### Useful for
- Catalog memory
- Order and fulfillment review
- Inventory reconciliation
- Refund review
- Governed price/catalog/inventory changes

#### Extend with
- Additional reconciliation specs for margin, catalog drift, or fulfillment exceptions
- Links from accepted findings into outbound commitments

#### Links
- shopify_agent_api_price_changes -> shopify_api_products (source_link): Price-change proposals cite observed product or variant data.
- shopify_agent_api_refund_proposals -> shopify_api_orders (source_link): Refund proposals cite the order observation they intend to modify.
- shopify_agent_api_inventory_adjustments -> shopify_api_inventory_levels (source_link): Inventory adjustments cite the latest inventory-level observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| shopify_api_products | Shopify | Observation | Product and variant catalog memory. |
| shopify_api_orders | Shopify | Observation | Order, fulfillment, and commerce-event memory. |
| shopify_api_customers | Shopify | Observation | Customer identity and lifecycle observations. |
| shopify_api_inventory_levels | Shopify | Observation | Inventory quantities by item and location. |
| shopify_api_fulfillments | Shopify | Observation | Shipment and fulfillment status observations. |
| shopify_api_refunds | Shopify | Observation | Refund and restock observations. |
| shopify_api_discounts | Shopify | Observation | Discount and promotion observations. |
| shopify_api_payouts | Shopify | Observation | Settlement and payout observations. |
| shopify_agent_api_price_changes | Shopify | Commitment workflow | Governed variant price changes. |
| shopify_agent_api_catalog_updates | Shopify | Commitment workflow | Governed catalog updates. |
| shopify_agent_api_inventory_adjustments | Shopify | Commitment workflow | Governed inventory adjustments. |
| shopify_agent_api_refund_proposals | Shopify | Commitment workflow | Governed refund proposals. |
| shopify_api_shop | Shopify | Observation | Shop settings and business identity observations. |
| shopify_api_locations | Shopify | Observation | Location and fulfillment routing observations. |
| shopify_api_order_transactions | Shopify | Observation | Payment/refund transaction observations. |
| shopify_api_returns | Shopify | Observation | Return and reverse-logistics observations. |
| shopify_api_draft_orders | Shopify | Observation | Draft order and quote observations. |
| shopify_api_abandoned_checkouts | Shopify | Observation | Abandoned checkout observations. |
| shopify_api_collections | Shopify | Observation | Collection and merchandising observations. |

#### create_spec calls

##### shopify_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "product id",
      "name": "product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "title",
      "name": "title",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "variant title",
      "name": "variant_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "weight",
      "name": "weight",
      "tests": [],
      "type": "number"
    },
    {
      "description": "weight unit",
      "name": "weight_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "price",
      "name": "price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "compare at price",
      "name": "compare_at_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "inventory item id",
      "name": "inventory_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "barcode",
      "name": "barcode",
      "tests": [],
      "type": "string"
    },
    {
      "description": "requires shipping",
      "name": "requires_shipping",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "taxable",
      "name": "taxable",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "vendor",
      "name": "vendor",
      "tests": [],
      "type": "string"
    },
    {
      "description": "product type",
      "name": "product_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "tags",
      "name": "tags",
      "tests": [],
      "type": "string"
    },
    {
      "description": "status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product and variant catalog observations pulled from the Shopify API.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API products",
    "spec_name": "shopify_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "order date",
      "format": "%Y-%m-%d",
      "name": "order_date",
      "tests": [
        "not_null"
      ],
      "type": "date"
    },
    {
      "description": "customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "quantity",
      "name": "quantity",
      "tests": [
        "not_null"
      ],
      "type": "integer"
    },
    {
      "description": "subtotal price",
      "name": "subtotal_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "total shipping price",
      "name": "total_shipping_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "total discounts",
      "name": "total_discounts",
      "tests": [],
      "type": "number"
    },
    {
      "description": "fulfillment status",
      "name": "fulfillment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ship region",
      "name": "ship_region",
      "tests": [],
      "type": "string"
    },
    {
      "description": "tags",
      "name": "tags",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order-line observations pulled from the Shopify API for margin, shipping, fulfillment, and regional profitability analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API orders",
    "spec_name": "shopify_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop domain",
      "name": "shop_domain",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order count",
      "name": "orders_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Total spent",
      "name": "total_spent",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for identity, segmentation, and service follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API customers",
    "spec_name": "shopify_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_inventory_levels

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "inventory_level_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inventory item id",
      "name": "inventory_item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Available quantity",
      "name": "available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory quantity observations by inventory item and location.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API inventory levels",
    "spec_name": "shopify_api_inventory_levels"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_fulfillments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "fulfillment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Tracking company",
      "name": "tracking_company",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tracking number",
      "name": "tracking_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shipment status",
      "name": "shipment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Fulfillment observations for shipment, carrier, tracking, and delivery status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API fulfillments",
    "spec_name": "shopify_api_fulfillments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_refunds

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "refund_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Refund creation timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "total_refunded",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restock action summary",
      "name": "restock_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Refund observations including refunded line items, transactions, and restock intent.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API refunds",
    "spec_name": "shopify_api_refunds"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_discounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "discount_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Discount title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Discount code",
      "name": "discount_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start timestamp",
      "name": "starts_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End timestamp",
      "name": "ends_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Usage count",
      "name": "usage_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Discount and promotion observations for margin and campaign analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API discounts",
    "spec_name": "shopify_api_discounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_payouts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payout_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Paid timestamp",
      "name": "paid_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payout observations for settlement, cash, and reconciliation workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API payouts",
    "spec_name": "shopify_api_payouts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_price_changes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "change id",
      "name": "change_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "current price",
      "name": "current_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "proposed price",
      "name": "proposed_price",
      "tests": [
        "not_null"
      ],
      "type": "number"
    },
    {
      "description": "reason",
      "name": "reason",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "expected margin lift",
      "name": "expected_margin_lift",
      "tests": [],
      "type": "number"
    },
    {
      "description": "source finding id",
      "name": "source_finding_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Draft Shopify variant price changes proposed by an agent and approved by a human before outbound Shopify API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API price changes",
    "spec_name": "shopify_agent_api_price_changes",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_catalog_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "update id",
      "name": "update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "variant id",
      "name": "variant_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "sku",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "update type",
      "name": "update_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "proposed value",
      "name": "proposed_value",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "reason",
      "name": "reason",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "source issue id",
      "name": "source_issue_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "decision status",
      "name": "decision_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "approved by",
      "name": "approved_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "approved at",
      "name": "approved_at",
      "tests": [],
      "type": "string"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Draft Shopify product or variant catalog updates proposed by an agent and approved by a human before outbound Shopify API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API catalog updates",
    "spec_name": "shopify_agent_api_catalog_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Draft",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_inventory_adjustments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_adjustment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "inventory_item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current quantity",
      "name": "current_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed quantity",
      "name": "proposed_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed inventory adjustments before outbound Shopify sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API inventory adjustments",
    "spec_name": "shopify_agent_api_inventory_adjustments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_agent_api_refund_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "refund_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Proposed refund amount",
      "name": "refund_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Whether to notify the customer",
      "name": "notify_customer",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed refund proposals before outbound Shopify refund creation.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify agent API refund proposals",
    "spec_name": "shopify_agent_api_refund_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_shop

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shop_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop domain",
      "name": "shop_domain",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop name",
      "name": "name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary locale",
      "name": "primary_locale",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop time zone",
      "name": "timezone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shop-level configuration and business identity observations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API shop",
    "spec_name": "shopify_api_shop"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_locations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "location_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop domain",
      "name": "shop_domain",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location name",
      "name": "location_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active location flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Whether this location fulfills online orders",
      "name": "fulfills_online_orders",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Location observations for inventory, fulfillment, and operational routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API locations",
    "spec_name": "shopify_api_locations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_order_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Transaction kind",
      "name": "kind",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment gateway",
      "name": "gateway",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment/refund transaction observations tied to Shopify orders.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API order transactions",
    "spec_name": "shopify_api_order_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_returns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "return_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Return status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return line count",
      "name": "return_line_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Return request timestamp",
      "name": "requested_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Return observations for reverse logistics and refund readiness.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API returns",
    "spec_name": "shopify_api_returns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_draft_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "draft_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Draft order status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Draft order total",
      "name": "total_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Draft-order observations for quotes, manual orders, and B2B/phone-sales workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API draft orders",
    "spec_name": "shopify_api_draft_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_abandoned_checkouts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "checkout_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Checkout creation timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Abandonment timestamp",
      "name": "abandoned_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Checkout total",
      "name": "total_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Abandoned checkout observations for recovery, funnel analysis, and agent follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API abandoned checkouts",
    "spec_name": "shopify_api_abandoned_checkouts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### shopify_api_collections

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "collection_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Collection title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Collection handle",
      "name": "handle",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Collection type",
      "name": "collection_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Published scope",
      "name": "published_scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Collection observations for merchandising and catalog organization.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Shopify API collections",
    "spec_name": "shopify_api_collections"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "shopify_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### etsy_marketplace_library

- Type: collection
- Domains: commerce
- Direct systems: Etsy
- Coverage: Core
- Version: 1.0.0
- Summary: Etsy observation and commitment specs for listings, listing inventory, receipts, transactions, payment ledger entries, and governed listing/inventory updates.
- Coverage notes: Covers shop, listing, receipt, transaction, inventory, ledger, shipping, review, and governed listing updates. Deeper seller operations can be layered in later.
- Source docs: [Etsy Open API reference](https://developer.etsy.com/documentation/reference/)

#### Next objects
- taxonomy_nodes
- seller_taxonomy_nodes
- listing_images
- listing_variation_images
- production_partners
- shop_holidays

#### Omitted objects
- OAuth/token management
- buyer private data beyond safe references

#### Needs
- An Etsy agent/operator role. The generated calls use etsy_agent.

#### Useful for
- Marketplace listing review
- Receipt and transaction memory
- Shop payment ledger reporting
- Governed listing and inventory edits

#### Extend with
- Listing-quality reviews
- Fee and tax reconciliation
- Cross-marketplace catalog matching

#### Links
- etsy_agent_api_listing_updates -> etsy_api_listings (source_link): Listing update proposals cite the latest listing observation.
- etsy_agent_api_inventory_updates -> etsy_api_listing_inventory (source_link): Inventory update proposals cite listing inventory observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| etsy_api_listings | Etsy | Observation | Shop listing memory. |
| etsy_api_listing_inventory | Etsy | Observation | Listing inventory and offering memory. |
| etsy_api_receipts | Etsy | Observation | Sales receipt observations. |
| etsy_api_transactions | Etsy | Observation | Line-level transaction observations. |
| etsy_api_payment_ledger_entries | Etsy | Observation | Shop payment ledger observations. |
| etsy_agent_api_listing_updates | Etsy | Commitment workflow | Governed listing updates. |
| etsy_agent_api_inventory_updates | Etsy | Commitment workflow | Governed listing inventory updates. |
| etsy_api_shops | Etsy | Observation | Shop configuration observations. |
| etsy_api_shop_sections | Etsy | Observation | Shop section observations. |
| etsy_api_shipping_profiles | Etsy | Observation | Shipping profile observations. |
| etsy_api_reviews | Etsy | Observation | Shop and listing review observations. |

#### create_spec calls

##### etsy_api_listings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "listing_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Listing title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Listing state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Listing price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Available quantity",
      "name": "quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Listing observations for shop catalog, listing state, tags, and pricing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API listings",
    "spec_name": "etsy_api_listings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_listing_inventory

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "listing_inventory_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Listing id",
      "name": "listing_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Number of offerings",
      "name": "offering_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Quantity available",
      "name": "quantity_available",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Listing inventory observations for SKUs, offerings, quantities, and prices.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API listing inventory",
    "spec_name": "etsy_api_listing_inventory"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_receipts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "receipt_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Buyer user id",
      "name": "buyer_user_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Receipt creation timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Receipt status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Receipt total",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sales receipt observations for orders, fulfillment, buyer-facing totals, and shipping.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API receipts",
    "spec_name": "etsy_api_receipts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Receipt id",
      "name": "receipt_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Listing id",
      "name": "listing_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Line price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Line-level sales observations for receipts, listings, SKUs, quantity, and price.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API transactions",
    "spec_name": "etsy_api_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_payment_ledger_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ledger_entry_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ledger id",
      "name": "ledger_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entry date",
      "name": "entry_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entry amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Running balance",
      "name": "running_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Read-only payment account ledger observations for fees, taxes, payments, and balance movement.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API payment ledger entries",
    "spec_name": "etsy_api_payment_ledger_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_agent_api_listing_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "listing_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "listing_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Listing field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed listing update proposals before outbound Etsy listing edits.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy agent API listing updates",
    "spec_name": "etsy_agent_api_listing_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_agent_api_inventory_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "listing_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current quantity",
      "name": "current_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed quantity",
      "name": "proposed_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed price",
      "name": "proposed_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed inventory update proposals before outbound Etsy inventory edits.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy agent API inventory updates",
    "spec_name": "etsy_agent_api_inventory_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_shops

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shop_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop name",
      "name": "shop_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop currency",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active listing count",
      "name": "listing_active_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Digital listing count",
      "name": "digital_listing_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shop configuration observations for seller identity, currency, and listing counts.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API shops",
    "spec_name": "etsy_api_shops"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_shop_sections

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shop_section_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Section title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display rank",
      "name": "rank",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shop section observations for marketplace merchandising and navigation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API shop sections",
    "spec_name": "etsy_api_shop_sections"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_shipping_profiles

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shipping_profile_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Origin country",
      "name": "origin_country_iso",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Minimum processing days",
      "name": "min_processing_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Maximum processing days",
      "name": "max_processing_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shipping profile observations for fulfillment cost and listing readiness checks.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API shipping profiles",
    "spec_name": "etsy_api_shipping_profiles"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### etsy_api_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Listing id",
      "name": "listing_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Review rating",
      "name": "rating",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Review creation timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Review observations for quality, service, and marketplace reputation follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Etsy API reviews",
    "spec_name": "etsy_api_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "etsy_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### bill_com_finance_library

- Type: collection
- Domains: finance
- Direct systems: Bill.com
- Coverage: Extended
- Version: 1.0.0
- Summary: Bill.com finance specs for vendors, bills, payments, customers, invoices, and governed AP setup/payment actions.
- Coverage notes: Covers AP, AR, organization/user setup, funding accounts, vendor credits, webhook events, and Spend & Expense card/budget/transaction objects.
- Source docs: [BILL API Platform](https://developer.bill.com/docs)

#### Next objects
- chart_of_accounts
- classes
- departments
- attachments
- approvals
- purchase_orders

#### Omitted objects
- bank account secrets
- raw user emails
- MFA/session handling

#### Needs
- A Bill.com agent/operator role. The generated calls use bill_com_agent.

#### Useful for
- AP memory
- AR invoice visibility
- Vendor setup review
- Payment approval packets
- Cash and payment reconciliation

#### Extend with
- Approval source links from invoice intake specs
- Payment confirmation observations
- Vendor onboarding issue specs

#### Links
- bill_com_agent_api_bill_payments -> bill_com_api_bills (source_link): Payment commitments cite the bill observation they intend to pay.
- bill_com_agent_api_vendor_updates -> bill_com_api_vendors (source_link): Vendor update proposals cite the latest vendor setup observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| bill_com_api_vendors | Bill.com | Observation | Vendor setup observations. |
| bill_com_api_bills | Bill.com | Observation | AP bill observations. |
| bill_com_api_payments | Bill.com | Observation | Payment lifecycle observations. |
| bill_com_api_customers | Bill.com | Observation | AR customer observations. |
| bill_com_api_invoices | Bill.com | Observation | AR invoice observations. |
| bill_com_agent_api_bill_payments | Bill.com | Commitment workflow | Governed AP payment packets. |
| bill_com_agent_api_vendor_updates | Bill.com | Commitment workflow | Governed vendor setup updates. |
| bill_com_api_organizations | Bill.com | Observation | Organization setup observations. |
| bill_com_api_users | Bill.com | Observation | User and permission observations. |
| bill_com_api_funding_accounts | Bill.com | Observation | Funding account observations. |
| bill_com_api_vendor_credits | Bill.com | Observation | Vendor credit observations. |
| bill_com_api_webhook_events | Bill.com | Observation | Webhook event observations. |
| bill_com_spend_expense_budgets | Bill.com | Observation | Spend budget observations. |
| bill_com_spend_expense_cards | Bill.com | Observation | Spend card observations. |
| bill_com_spend_expense_transactions | Bill.com | Observation | Spend transaction observations. |

#### create_spec calls

##### bill_com_api_vendors

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor name",
      "name": "vendor_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment method",
      "name": "payment_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account status",
      "name": "bank_account_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor setup observations for AP readiness and payment risk checks.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API vendors",
    "spec_name": "bill_com_api_vendors"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_bills

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bill_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Invoice number",
      "name": "invoice_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount due",
      "name": "amount_due",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bill observations for AP review, due dates, approval, and payment planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API bills",
    "spec_name": "bill_com_api_bills"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bill id",
      "name": "bill_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Process date",
      "name": "process_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment observations for sent, cleared, failed, or voided vendor payments.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API payments",
    "spec_name": "bill_com_api_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer name",
      "name": "customer_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for AR workflows and invoice delivery.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API customers",
    "spec_name": "bill_com_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Invoice number",
      "name": "invoice_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Open balance",
      "name": "balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "AR invoice observations for collection and cash forecasting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API invoices",
    "spec_name": "bill_com_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_agent_api_bill_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "bill_payment_commitment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bill_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "payment_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Process date",
      "name": "process_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed bill payment packets before outbound Bill.com payment creation.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com agent API bill payments",
    "spec_name": "bill_com_agent_api_bill_payments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_agent_api_vendor_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "vendor_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "vendor_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Vendor field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed vendor setup updates before outbound Bill.com edits.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com agent API vendor updates",
    "spec_name": "bill_com_agent_api_vendor_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_organizations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "organization_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Organization name",
      "name": "organization_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Organization status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Default currency",
      "name": "default_currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Organization observations for legal identity, settings, and payment readiness.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API organizations",
    "spec_name": "bill_com_api_organizations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_users

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "user_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role name",
      "name": "role_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "User status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "User observations for permissions, approvers, and payment authority review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API users",
    "spec_name": "bill_com_api_users"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_funding_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "funding_account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Funding account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Funding account status",
      "name": "account_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Funding account observations for outbound payment readiness.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API funding accounts",
    "spec_name": "bill_com_api_funding_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_vendor_credits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_credit_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Credit number",
      "name": "credit_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Credit amount",
      "name": "credit_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Remaining amount",
      "name": "remaining_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor credit observations for AP netting, open-credit review, and payment planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API vendor credits",
    "spec_name": "bill_com_api_vendor_credits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event timestamp",
      "name": "event_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook event observations for payment, bill, vendor, and sync state changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com API webhook events",
    "spec_name": "bill_com_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_spend_expense_budgets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "budget_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget name",
      "name": "budget_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget owner user id",
      "name": "owner_user_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget limit",
      "name": "limit_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Spend & Expense budget observations for card policy and team spend controls.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com Spend & Expense budgets",
    "spec_name": "bill_com_spend_expense_budgets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_spend_expense_cards

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "card_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assigned user id",
      "name": "user_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Card status",
      "name": "card_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Last four digits",
      "name": "last_four",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Spend & Expense card observations for issued cards, controls, and vendor cards.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com Spend & Expense cards",
    "spec_name": "bill_com_spend_expense_cards"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bill_com_spend_expense_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Card id",
      "name": "card_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant name",
      "name": "merchant_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Spend & Expense transaction observations for card spend, receipts, and policy review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bill.com Spend & Expense transactions",
    "spec_name": "bill_com_spend_expense_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "bill_com_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### stripe_payments_library

- Type: collection
- Domains: billing, finance
- Direct systems: Stripe
- Coverage: Extended
- Version: 1.0.0
- Summary: Stripe billing and payments specs for customers, products/prices, subscriptions, invoices, payment intents, refunds, payouts, disputes, and governed billing actions.
- Coverage notes: Covers billing, payments, checkout, discounts, payment methods, settlement, disputes, events, and governed refund/subscription changes.
- Source docs: [Stripe API reference](https://docs.stripe.com/api)

#### Next objects
- accounts
- transfers
- application_fees
- payment_links
- quotes
- tax_rates
- entitlements

#### Omitted objects
- raw card data
- Connect onboarding flows
- fraud/radar rule management

#### Needs
- A Stripe agent/operator role. The generated calls use stripe_agent.

#### Useful for
- Subscription billing memory
- Payment lifecycle review
- Refund governance
- Payout reconciliation
- Dispute follow-up

#### Extend with
- Webhook event observations
- Entitlement or feature specs for SaaS products
- Dunning and collections issue specs

#### Links
- stripe_agent_api_refund_proposals -> stripe_api_payment_intents (source_link): Refund proposals cite the payment observation they intend to refund.
- stripe_agent_api_subscription_changes -> stripe_api_subscriptions (source_link): Subscription change proposals cite the current subscription observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| stripe_api_customers | Stripe | Observation | Billing customer observations. |
| stripe_api_products_prices | Stripe | Observation | Product and price catalog observations. |
| stripe_api_subscriptions | Stripe | Observation | Subscription lifecycle observations. |
| stripe_api_invoices | Stripe | Observation | Invoice lifecycle observations. |
| stripe_api_payment_intents | Stripe | Observation | PaymentIntent lifecycle observations. |
| stripe_api_refunds | Stripe | Observation | Refund observations. |
| stripe_api_payouts | Stripe | Observation | Payout observations. |
| stripe_api_disputes | Stripe | Observation | Dispute observations. |
| stripe_agent_api_refund_proposals | Stripe | Commitment workflow | Governed refund proposals. |
| stripe_agent_api_subscription_changes | Stripe | Commitment workflow | Governed subscription changes. |
| stripe_api_checkout_sessions | Stripe | Observation | Checkout Session lifecycle observations. |
| stripe_api_charges | Stripe | Observation | Charge observations. |
| stripe_api_balance_transactions | Stripe | Observation | Balance transaction observations. |
| stripe_api_credit_notes | Stripe | Observation | Credit note observations. |
| stripe_api_coupons_promotion_codes | Stripe | Observation | Coupon and promotion-code observations. |
| stripe_api_payment_methods | Stripe | Observation | Payment method observations. |
| stripe_api_events | Stripe | Observation | Webhook/event observations. |

#### create_spec calls

##### stripe_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Delinquency flag",
      "name": "delinquent",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for billing identity and payment relationships.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API customers",
    "spec_name": "stripe_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_products_prices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "price_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product name",
      "name": "product_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Unit amount",
      "name": "unit_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Recurring interval",
      "name": "billing_interval",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product and price observations for recurring and one-time billing catalogs.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API products and prices",
    "spec_name": "stripe_api_products_prices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_subscriptions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "subscription_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Subscription status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current period end",
      "name": "current_period_end",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cancel at period end",
      "name": "cancel_at_period_end",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subscription observations for lifecycle, plan, renewal, and cancellation workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API subscriptions",
    "spec_name": "stripe_api_subscriptions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription id",
      "name": "subscription_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount due",
      "name": "amount_due",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Amount paid",
      "name": "amount_paid",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice observations for billing status, collection, and payment follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API invoices",
    "spec_name": "stripe_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_payment_intents

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_intent_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Amount received",
      "name": "amount_received",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "PaymentIntent status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "PaymentIntent observations for payment attempts and authentication/payment lifecycle.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API payment intents",
    "spec_name": "stripe_api_payment_intents"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_refunds

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "refund_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "PaymentIntent id",
      "name": "payment_intent_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Charge id",
      "name": "charge_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Refund observations for customer credits and settlement reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API refunds",
    "spec_name": "stripe_api_refunds"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_payouts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payout_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Arrival date",
      "name": "arrival_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payout observations for settlement timing and cash reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API payouts",
    "spec_name": "stripe_api_payouts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_disputes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dispute_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "PaymentIntent id",
      "name": "payment_intent_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Charge id",
      "name": "charge_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dispute reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dispute amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Dispute observations for evidence gathering and finance/legal follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API disputes",
    "spec_name": "stripe_api_disputes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_agent_api_refund_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "refund_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "payment_intent_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "refund_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed refund proposals before outbound Stripe refund creation.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe agent API refund proposals",
    "spec_name": "stripe_agent_api_refund_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_agent_api_subscription_changes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "subscription_change_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "subscription_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current subscription status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed subscription status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Effective date",
      "name": "effective_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed subscription change proposals before outbound Stripe edits.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe agent API subscription changes",
    "spec_name": "stripe_agent_api_subscription_changes",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_checkout_sessions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "checkout_session_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "PaymentIntent id",
      "name": "payment_intent_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription id",
      "name": "subscription_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Checkout mode",
      "name": "mode",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment status",
      "name": "payment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "amount_total",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Checkout Session observations for hosted checkout lifecycle and conversion analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API checkout sessions",
    "spec_name": "stripe_api_checkout_sessions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_charges

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "charge_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "PaymentIntent id",
      "name": "payment_intent_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Charge amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Captured amount",
      "name": "amount_captured",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Paid flag",
      "name": "paid",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Charge observations for payment capture, disputes, refunds, and receipt workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API charges",
    "spec_name": "stripe_api_charges"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_balance_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "balance_transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source object id",
      "name": "source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Balance transaction type",
      "name": "type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Gross amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Fee amount",
      "name": "fee",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Net amount",
      "name": "net",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Balance transaction observations for fees, net settlement, and financial reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API balance transactions",
    "spec_name": "stripe_api_balance_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_credit_notes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "credit_note_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Credit note status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Credit note total",
      "name": "total",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Credit note observations for invoice adjustments and customer credits.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API credit notes",
    "spec_name": "stripe_api_credit_notes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_coupons_promotion_codes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "discount_artifact_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "coupon or promotion_code",
      "name": "artifact_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion code",
      "name": "code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Percent off",
      "name": "percent_off",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Amount off",
      "name": "amount_off",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Coupon and promotion-code observations for discount governance and attribution.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API coupons and promotion codes",
    "spec_name": "stripe_api_coupons_promotion_codes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_payment_methods

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_method_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment method type",
      "name": "payment_method_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Card brand",
      "name": "card_brand",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Card last four",
      "name": "card_last4",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment method observations for customer billing readiness and failure diagnostics.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API payment methods",
    "spec_name": "stripe_api_payment_methods"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### stripe_api_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event creation timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Data object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Data object id",
      "name": "object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Stripe event observations for webhook-driven sync, audit, and replay workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Stripe API events",
    "spec_name": "stripe_api_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "stripe_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### square_pos_library

- Type: collection
- Domains: commerce, billing
- Direct systems: Square
- Coverage: Extended
- Version: 1.0.0
- Summary: Square POS and commerce specs for catalog objects, orders, payments, refunds, customers, inventory counts, and governed catalog/refund actions.
- Coverage notes: Covers POS commerce, locations, catalog, inventory, payments, refunds, invoices, subscriptions, disputes, payouts, gift cards, team, and bookings.
- Source docs: [Square API reference](https://developer.squareup.com/reference/square)

#### Next objects
- loyalty_accounts
- cash_drawers
- shifts
- wage_settings
- terminal_checkouts
- bank_accounts

#### Omitted objects
- card-on-file secrets
- device management details
- OAuth app lifecycle

#### Needs
- A Square agent/operator role. The generated calls use square_agent.

#### Useful for
- POS sales memory
- Catalog and inventory review
- Payment reconciliation
- Refund approval
- Customer/order lookup

#### Extend with
- Location-specific inventory expectations
- Tender reconciliation specs
- In-person vs online order comparisons

#### Links
- square_agent_api_catalog_updates -> square_api_catalog_objects (source_link): Catalog update proposals cite the latest catalog object observation.
- square_agent_api_refund_proposals -> square_api_payments (source_link): Refund proposals cite the payment observation they intend to refund.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| square_api_catalog_objects | Square | Observation | Catalog object observations. |
| square_api_orders | Square | Observation | Order lifecycle observations. |
| square_api_payments | Square | Observation | Payment observations. |
| square_api_refunds | Square | Observation | Refund observations. |
| square_api_customers | Square | Observation | Customer profile observations. |
| square_api_inventory_counts | Square | Observation | Inventory count observations. |
| square_agent_api_catalog_updates | Square | Commitment workflow | Governed catalog updates. |
| square_agent_api_refund_proposals | Square | Commitment workflow | Governed refund proposals. |
| square_api_locations | Square | Observation | Location observations. |
| square_api_invoices | Square | Observation | Invoice observations. |
| square_api_subscriptions | Square | Observation | Subscription observations. |
| square_api_disputes | Square | Observation | Dispute observations. |
| square_api_payouts | Square | Observation | Payout observations. |
| square_api_gift_cards | Square | Observation | Gift card observations. |
| square_api_team_members | Square | Observation | Team member observations. |
| square_api_bookings | Square | Observation | Booking observations. |

#### create_spec calls

##### square_api_catalog_objects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "catalog_object_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog object version",
      "name": "version",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Catalog object name",
      "name": "name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deletion flag",
      "name": "is_deleted",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog observations for items, variations, modifiers, discounts, taxes, and categories.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API catalog objects",
    "spec_name": "square_api_catalog_objects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order total",
      "name": "total_money_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order observations for POS and online sales, fulfillment, totals, and customer references.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API orders",
    "spec_name": "square_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "amount_money",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment observations for Square seller payment lifecycle and reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API payments",
    "spec_name": "square_api_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_refunds

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "refund_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment id",
      "name": "payment_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Refund status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "amount_money",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Refund observations for payments, status, and balance impact.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API refunds",
    "spec_name": "square_api_refunds"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed given-name reference",
      "name": "given_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for profiles, references, and order/payment lookup.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API customers",
    "spec_name": "square_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_inventory_counts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "inventory_count_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog object id",
      "name": "catalog_object_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory count observations by catalog variation and location.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API inventory counts",
    "spec_name": "square_api_inventory_counts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_agent_api_catalog_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "catalog_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "catalog_object_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Catalog field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed catalog update proposals before outbound Square catalog edits.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square agent API catalog updates",
    "spec_name": "square_agent_api_catalog_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_agent_api_refund_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "refund_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "payment_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "refund_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed refund proposals before outbound Square refund creation.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square agent API refund proposals",
    "spec_name": "square_agent_api_refund_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_locations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "location_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location name",
      "name": "location_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location time zone",
      "name": "timezone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Location observations for POS, inventory, payments, and staff operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API locations",
    "spec_name": "square_api_locations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount due",
      "name": "amount_due",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice observations for order-linked customer billing and payment schedules.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API invoices",
    "spec_name": "square_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_subscriptions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "subscription_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plan variation id",
      "name": "plan_variation_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subscription observations for recurring revenue lifecycle and plan changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API subscriptions",
    "spec_name": "square_api_subscriptions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_disputes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dispute_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment id",
      "name": "payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dispute reason",
      "name": "reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dispute state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dispute amount",
      "name": "amount_money",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Dispute observations for chargeback evidence and resolution follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API disputes",
    "spec_name": "square_api_disputes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_payouts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payout_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Arrival date",
      "name": "arrival_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout amount",
      "name": "amount_money",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payout observations for deposits, withdrawals, and seller cash reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API payouts",
    "spec_name": "square_api_payouts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_gift_cards

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "gift_card_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Gift account number source",
      "name": "gan_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Gift card state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Gift card balance",
      "name": "balance_money",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Gift card observations for balance, activation, redemption, and liability tracking.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API gift cards",
    "spec_name": "square_api_gift_cards"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_team_members

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "team_member_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location ids",
      "name": "location_ids",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team member status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Team member observations for staff identity, status, and labor operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API team members",
    "spec_name": "square_api_team_members"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### square_api_bookings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "booking_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Appointment segment count",
      "name": "appointment_segment_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Booking start timestamp",
      "name": "start_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Booking status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Booking observations for appointment scheduling and service operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Square API bookings",
    "spec_name": "square_api_bookings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "square_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### toast_restaurant_library

- Type: collection
- Domains: operations, billing
- Direct systems: Toast
- Coverage: Core
- Version: 1.0.0
- Summary: Toast restaurant operations specs for restaurants, menus, orders, payments, employees, time entries, and governed order/tip updates where supported.
- Coverage notes: Covers restaurant setup, menus, orders, payments, employees, labor/time entries, discounts, dining/service areas, jobs, and cash movement.
- Source docs: [Toast API reference](https://doc.toasttab.com/openapi/)

#### Next objects
- menu_availability
- prep_stations
- gift_cards
- loyalty
- house_accounts
- kitchen_timings

#### Omitted objects
- unsupported outbound edits
- raw guest PII
- device-level POS state

#### Needs
- A Toast agent/operator role. The generated calls use toast_agent.

#### Useful for
- Restaurant menu memory
- Order and payment review
- Labor and time-entry analysis
- Tip adjustment review
- Restaurant operations follow-up

#### Extend with
- Kitchen/service issue specs
- Menu availability expectations
- Payroll export specs

#### Links
- toast_agent_api_order_updates -> toast_api_orders (source_link): Order update proposals cite the current order observation.
- toast_agent_api_tip_adjustments -> toast_api_payments (source_link): Tip adjustment proposals cite the current payment observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| toast_api_restaurants | Toast | Observation | Restaurant setup observations. |
| toast_api_menus | Toast | Observation | Menu hierarchy observations. |
| toast_api_orders | Toast | Observation | Guest order observations. |
| toast_api_payments | Toast | Observation | Order payment observations. |
| toast_api_employees | Toast | Observation | Employee observations. |
| toast_api_time_entries | Toast | Observation | Labor time-entry observations. |
| toast_agent_api_order_updates | Toast | Commitment workflow | Governed order updates where supported. |
| toast_agent_api_tip_adjustments | Toast | Commitment workflow | Governed tip adjustments where supported. |
| toast_api_discounts | Toast | Observation | Discount observations. |
| toast_api_dining_options | Toast | Observation | Dining option observations. |
| toast_api_service_areas | Toast | Observation | Service area observations. |
| toast_api_jobs | Toast | Observation | Labor job observations. |
| toast_api_cash_entries | Toast | Observation | Cash entry observations. |
| toast_api_cash_deposits | Toast | Observation | Cash deposit observations. |

#### create_spec calls

##### toast_api_restaurants

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "restaurant_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant name",
      "name": "restaurant_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Management group guid",
      "name": "management_group_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant time zone",
      "name": "time_zone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Restaurant configuration observations for locations and operational setup.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API restaurants",
    "spec_name": "toast_api_restaurants"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_menus

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "menu_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Menu count",
      "name": "menu_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Menu item count",
      "name": "menu_item_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Modifier count",
      "name": "modifier_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Menu hierarchy observations for menus, groups, menu items, modifier groups, and modifiers.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API menus",
    "spec_name": "toast_api_menus"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business date",
      "name": "business_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opened timestamp",
      "name": "opened_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order status",
      "name": "order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order total",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Guest order observations including checks, selected items, prices, discounts, payments, and customer data.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API orders",
    "spec_name": "toast_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order guid",
      "name": "order_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Check guid",
      "name": "check_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment status",
      "name": "payment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Tip amount",
      "name": "tip_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment observations from Toast orders and checks for reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API payments",
    "spec_name": "toast_api_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_employees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "employee_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee number",
      "name": "employee_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Employee observations for labor, roles, jobs, and restaurant operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API employees",
    "spec_name": "toast_api_employees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_time_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "time_entry_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee guid",
      "name": "employee_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Clock-in timestamp",
      "name": "in_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Clock-out timestamp",
      "name": "out_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Job guid",
      "name": "job_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Labor time-entry observations for shifts, clock-in/out, breaks, declared tips, and sales summaries.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API time entries",
    "spec_name": "toast_api_time_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_agent_api_order_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "order_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "order_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Check guid",
      "name": "check_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed order update proposals before outbound Toast order edits where supported.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast agent API order updates",
    "spec_name": "toast_agent_api_order_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_agent_api_tip_adjustments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "tip_adjustment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "payment_guid",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current tip amount",
      "name": "current_tip_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed tip amount",
      "name": "proposed_tip_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed tip adjustment proposals before outbound Toast payment tip updates where supported.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast agent API tip adjustments",
    "spec_name": "toast_agent_api_tip_adjustments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_discounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "discount_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Discount name",
      "name": "discount_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Discount type",
      "name": "discount_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Discount observations for menu/order promotion analysis and margin review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API discounts",
    "spec_name": "toast_api_discounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_dining_options

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dining_option_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dining option name",
      "name": "name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dining option behavior",
      "name": "behavior",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Dining option observations for service-mode routing and order analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API dining options",
    "spec_name": "toast_api_dining_options"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_service_areas

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "service_area_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Service area name",
      "name": "name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Table count",
      "name": "table_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Service area observations for restaurant floor/service operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API service areas",
    "spec_name": "toast_api_service_areas"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_jobs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "job_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Job title",
      "name": "job_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Wage type",
      "name": "wage_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Job observations for labor role, wage, and shift reporting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API jobs",
    "spec_name": "toast_api_jobs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_cash_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "cash_entry_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Business date",
      "name": "business_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cash entry type",
      "name": "entry_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entry amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Cash entry observations for paid-in, paid-out, cash drawer, and non-standard cash movement review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API cash entries",
    "spec_name": "toast_api_cash_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### toast_api_cash_deposits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "cash_deposit_guid",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restaurant guid",
      "name": "restaurant_guid",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Business date",
      "name": "business_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit status",
      "name": "deposit_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Cash deposit observations for cash removed from restaurants and deposited externally.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Toast API cash deposits",
    "spec_name": "toast_api_cash_deposits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "toast_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### quickbooks_accounting_library

- Type: collection
- Domains: finance, billing
- Direct systems: QuickBooks
- Coverage: Extended
- Version: 1.0.0
- Summary: QuickBooks Online accounting specs for company setup, chart of accounts, customers, vendors, items, AR/AP transactions, purchases, deposits, journal entries, attachments, change events, and governed accounting updates.
- Coverage notes: Covers the core QuickBooks Online accounting API entities used for SMB finance operations. It does not mirror every report, payroll object, or bank-feed review surface.
- Source docs: [QuickBooks Online API Explorer](https://developer.intuit.com/app/developer/qbo/docs/get-started/get-started-with-the-api-explorer), [Explore the QuickBooks Online API](https://developer.intuit.com/app/developer/qbo/docs/learn/explore-the-quickbooks-online-api)

#### Next objects
- estimates
- statements
- budgets
- reports
- recurring_transactions
- payment_methods
- terms
- exchange_rates

#### Omitted objects
- payroll details
- raw bank-feed review items
- OAuth/token management
- full financial reports

#### Needs
- A QuickBooks agent/operator role. The generated calls use quickbooks_agent.

#### Useful for
- Accounting system memory
- AR/AP reconciliation
- Commerce-to-accounting handoff
- Journal entry review
- Customer/vendor master-data governance

#### Extend with
- Links from Shopify/Stripe/Square deposits into QuickBooks deposits or journal entries
- Bill.com payment confirmations into QuickBooks bill payments
- Budget and class/department planning specs

#### Links
- quickbooks_agent_api_invoice_updates -> quickbooks_api_invoices (source_link): Invoice update proposals cite the current QuickBooks invoice observation.
- quickbooks_agent_api_bill_updates -> quickbooks_api_bills (source_link): Bill update proposals cite the current QuickBooks bill observation.
- quickbooks_agent_api_journal_entry_proposals -> quickbooks_api_journal_entries (source_link): Journal-entry proposals cite existing journal entries or related accounting observations.
- quickbooks_agent_api_customer_vendor_updates -> quickbooks_api_customers (source_link): Customer master-data updates cite current customer observations.
- quickbooks_agent_api_customer_vendor_updates -> quickbooks_api_vendors (source_link): Vendor master-data updates cite current vendor observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| quickbooks_api_company_info | QuickBooks | Observation | Company setup observations. |
| quickbooks_api_preferences | QuickBooks | Observation | Company preference observations. |
| quickbooks_api_accounts | QuickBooks | Observation | Chart of accounts observations. |
| quickbooks_api_customers | QuickBooks | Observation | Customer master-data observations. |
| quickbooks_api_vendors | QuickBooks | Observation | Vendor master-data observations. |
| quickbooks_api_employees | QuickBooks | Observation | Employee reference observations. |
| quickbooks_api_items | QuickBooks | Observation | Product and service item observations. |
| quickbooks_api_tax_codes | QuickBooks | Observation | Tax code observations. |
| quickbooks_api_classes_departments | QuickBooks | Observation | Class and department observations. |
| quickbooks_api_invoices | QuickBooks | Observation | AR invoice observations. |
| quickbooks_api_payments | QuickBooks | Observation | Customer payment observations. |
| quickbooks_api_sales_receipts | QuickBooks | Observation | Sales receipt observations. |
| quickbooks_api_credit_memos | QuickBooks | Observation | Customer credit memo observations. |
| quickbooks_api_refund_receipts | QuickBooks | Observation | Customer refund receipt observations. |
| quickbooks_api_bills | QuickBooks | Observation | AP bill observations. |
| quickbooks_api_bill_payments | QuickBooks | Observation | Bill payment observations. |
| quickbooks_api_vendor_credits | QuickBooks | Observation | Vendor credit observations. |
| quickbooks_api_purchases | QuickBooks | Observation | Purchase and expense observations. |
| quickbooks_api_purchase_orders | QuickBooks | Observation | Purchase order observations. |
| quickbooks_api_deposits | QuickBooks | Observation | Deposit observations. |
| quickbooks_api_transfers | QuickBooks | Observation | Transfer observations. |
| quickbooks_api_journal_entries | QuickBooks | Observation | Journal entry observations. |
| quickbooks_api_time_activities | QuickBooks | Observation | Time activity observations. |
| quickbooks_api_attachments | QuickBooks | Observation | Attachment observations. |
| quickbooks_api_change_events | QuickBooks | Observation | Change Data Capture observations. |
| quickbooks_agent_api_invoice_updates | QuickBooks | Commitment workflow | Governed invoice updates. |
| quickbooks_agent_api_bill_updates | QuickBooks | Commitment workflow | Governed bill updates. |
| quickbooks_agent_api_journal_entry_proposals | QuickBooks | Commitment workflow | Governed journal entry proposals. |
| quickbooks_agent_api_customer_vendor_updates | QuickBooks | Commitment workflow | Governed customer/vendor updates. |

#### create_spec calls

##### quickbooks_api_company_info

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "company_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Legal name",
      "name": "legal_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country",
      "name": "country",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Home currency",
      "name": "home_currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fiscal year start month",
      "name": "fiscal_year_start_month",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Company setup observations for accounting identity, currency, and fiscal settings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API company info",
    "spec_name": "quickbooks_api_company_info"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_preferences

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "preferences_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company id",
      "name": "company_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Accounting method",
      "name": "accounting_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tax enabled flag",
      "name": "tax_enabled",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Multicurrency enabled flag",
      "name": "multicurrency_enabled",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Company preferences observations for accounting, sales forms, tax, and feature settings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API preferences",
    "spec_name": "quickbooks_api_preferences"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account classification",
      "name": "classification",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Current balance",
      "name": "current_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Chart of accounts observations for general ledger classification and posting review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API accounts",
    "spec_name": "quickbooks_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Open customer balance",
      "name": "balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for AR, invoicing, payments, and project/job references.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API customers",
    "spec_name": "quickbooks_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_vendors

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Open vendor balance",
      "name": "balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor observations for AP, bills, purchases, and vendor credits.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API vendors",
    "spec_name": "quickbooks_api_vendors"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_employees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "employee_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee number",
      "name": "employee_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Employee observations for payroll-adjacent accounting, time activity, and reimbursement references.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API employees",
    "spec_name": "quickbooks_api_employees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item name",
      "name": "item_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item type",
      "name": "item_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product and service item observations for sales forms, purchases, inventory, and account mappings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API items",
    "spec_name": "quickbooks_api_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_tax_codes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "tax_code_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tax code name",
      "name": "tax_code_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Taxable flag",
      "name": "taxable",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Tax code observations for invoice, bill, purchase, and sales receipt tax handling.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API tax codes",
    "spec_name": "quickbooks_api_tax_codes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_classes_departments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dimension_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "class or department",
      "name": "dimension_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Dimension name",
      "name": "dimension_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent dimension id",
      "name": "parent_dimension_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Class and department observations for dimensional accounting and management reporting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API classes and departments",
    "spec_name": "quickbooks_api_classes_departments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Document number",
      "name": "doc_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Open balance",
      "name": "balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice observations for AR, revenue, customer balances, and collection workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API invoices",
    "spec_name": "quickbooks_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit account id",
      "name": "deposit_to_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer payment observations for AR application, deposits, and reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API payments",
    "spec_name": "quickbooks_api_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_sales_receipts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sales_receipt_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit account id",
      "name": "deposit_to_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sales receipt observations for immediate-payment sales and commerce imports.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API sales receipts",
    "spec_name": "quickbooks_api_sales_receipts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_credit_memos

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "credit_memo_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Remaining credit",
      "name": "remaining_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Credit memo observations for customer credits and AR adjustments.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API credit memos",
    "spec_name": "quickbooks_api_credit_memos"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_refund_receipts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "refund_receipt_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment method id",
      "name": "payment_method_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Refund receipt observations for customer refunds and cash impact.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API refund receipts",
    "spec_name": "quickbooks_api_refund_receipts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_bills

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bill_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Document number",
      "name": "doc_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Open balance",
      "name": "balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bill observations for AP, vendor balances, due dates, and approval/payment planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API bills",
    "spec_name": "quickbooks_api_bills"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_bill_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bill_payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bill payment observations for AP settlement and bank reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API bill payments",
    "spec_name": "quickbooks_api_bill_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_vendor_credits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_credit_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Remaining credit",
      "name": "remaining_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor credit observations for AP netting and open-credit review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API vendor credits",
    "spec_name": "quickbooks_api_vendor_credits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_purchases

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "purchase_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expense or asset account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment type",
      "name": "payment_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Purchase amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Purchase/expense observations for card, cash, check, and bank purchases.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API purchases",
    "spec_name": "quickbooks_api_purchases"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_purchase_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "purchase_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Document number",
      "name": "doc_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Purchase order status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Purchase order observations for AP intake and receiving workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API purchase orders",
    "spec_name": "quickbooks_api_purchase_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_deposits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "deposit_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Deposit observations for bank deposits, payment grouping, and reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API deposits",
    "spec_name": "quickbooks_api_deposits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_transfers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "transfer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source account id",
      "name": "from_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Destination account id",
      "name": "to_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transfer amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Transfer observations for movement between bank or asset accounts.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API transfers",
    "spec_name": "quickbooks_api_transfers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_journal_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "journal_entry_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Document number",
      "name": "doc_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total debit amount",
      "name": "total_debit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total credit amount",
      "name": "total_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Journal entry observations for manual accounting adjustments and imports.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API journal entries",
    "spec_name": "quickbooks_api_journal_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_time_activities

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "time_activity_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee id",
      "name": "employee_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Service item id",
      "name": "item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Activity date",
      "name": "activity_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hours",
      "name": "hours",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Billable status",
      "name": "billable_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Time activity observations for billable time and service work.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API time activities",
    "spec_name": "quickbooks_api_time_activities"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_attachments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "attachment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Linked entity type",
      "name": "linked_entity_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Linked entity id",
      "name": "linked_entity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "File name",
      "name": "file_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content type",
      "name": "content_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Attachable observations for source documents linked to transactions or list entities.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API attachments",
    "spec_name": "quickbooks_api_attachments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_api_change_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "change_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entity name",
      "name": "entity_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Entity id",
      "name": "entity_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Create, update, or delete operation",
      "name": "operation",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Last updated timestamp",
      "name": "last_updated_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Change Data Capture observations for changed accounting entities and sync replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks API change events",
    "spec_name": "quickbooks_api_change_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_agent_api_invoice_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "invoice_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "invoice_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current balance",
      "name": "current_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed total amount",
      "name": "proposed_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed invoice creation/update proposals before outbound QuickBooks sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks agent API invoice updates",
    "spec_name": "quickbooks_agent_api_invoice_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_agent_api_bill_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "bill_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bill_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current balance",
      "name": "current_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed total amount",
      "name": "proposed_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed bill creation/update proposals before outbound QuickBooks sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks agent API bill updates",
    "spec_name": "quickbooks_agent_api_bill_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_agent_api_journal_entry_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "journal_entry_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "journal_entry_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total debit amount",
      "name": "total_debit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total credit amount",
      "name": "total_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed journal entry proposals before outbound QuickBooks sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks agent API journal entry proposals",
    "spec_name": "quickbooks_agent_api_journal_entry_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### quickbooks_agent_api_customer_vendor_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "counterparty_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "counterparty_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "customer or vendor",
      "name": "counterparty_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed customer or vendor master-data update proposals before outbound QuickBooks sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "QuickBooks agent API customer/vendor updates",
    "spec_name": "quickbooks_agent_api_customer_vendor_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "quickbooks_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### netsuite_erp_library

- Type: collection
- Domains: finance, operations
- Direct systems: NetSuite
- Coverage: Extended
- Version: 1.0.0
- Summary: NetSuite ERP specs for subsidiaries, accounting dimensions, customers, vendors, items, AR/AP transactions, inventory movement, journal entries, custom records, and governed ERP updates.
- Coverage notes: Covers the core ERP records agents usually need for accounting, procurement, inventory, order-to-cash, and master-data review. It does not mirror every NetSuite record type, sublist, or tenant custom field.
- Source docs: [NetSuite REST Web Services](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_1540391670.html), [NetSuite REST API Browser](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_157373386674.html)

#### Next objects
- cash_sales
- customer_deposits
- work_orders
- assembly_builds
- opportunities
- estimates
- support_cases
- file_cabinet_documents

#### Omitted objects
- tenant-specific custom record schemas
- SuiteScript deployment metadata
- raw employee personal data
- OAuth/token management

#### Needs
- A NetSuite agent/operator role. The generated calls use netsuite_agent.

#### Useful for
- ERP system memory
- Order-to-cash and procure-to-pay review
- Inventory movement review
- Close and journal-entry governance
- Customer/vendor/item master-data governance

#### Extend with
- Links from Shopify, Stripe, Square, or Toast observations into NetSuite transactions
- Three-way match reconciliation between purchase orders, item receipts, and vendor bills
- Tenant-specific custom-record variants after discovery

#### Links
- netsuite_agent_api_sales_order_updates -> netsuite_api_sales_orders (source_link): Sales-order update proposals cite the current NetSuite sales order observation.
- netsuite_agent_api_vendor_bill_updates -> netsuite_api_vendor_bills (source_link): Vendor-bill update proposals cite the current vendor bill observation.
- netsuite_agent_api_journal_entry_proposals -> netsuite_api_journal_entries (source_link): Journal-entry proposals cite existing journal entries or related accounting observations.
- netsuite_agent_api_item_updates -> netsuite_api_items (source_link): Item master-data updates cite current item observations.
- netsuite_agent_api_customer_vendor_updates -> netsuite_api_customers (source_link): Customer master-data updates cite current customer observations.
- netsuite_agent_api_customer_vendor_updates -> netsuite_api_vendors (source_link): Vendor master-data updates cite current vendor observations.
- netsuite_agent_api_inventory_adjustment_proposals -> netsuite_api_inventory_items (source_link): Inventory adjustment proposals cite current inventory-item observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| netsuite_api_subsidiaries | NetSuite | Observation | Subsidiary and entity-scope observations. |
| netsuite_api_accounts | NetSuite | Observation | Chart of accounts observations. |
| netsuite_api_departments | NetSuite | Observation | Department dimension observations. |
| netsuite_api_classes | NetSuite | Observation | Class dimension observations. |
| netsuite_api_locations | NetSuite | Observation | Location dimension observations. |
| netsuite_api_customers | NetSuite | Observation | Customer master-data observations. |
| netsuite_api_vendors | NetSuite | Observation | Vendor master-data observations. |
| netsuite_api_employees | NetSuite | Observation | Employee reference observations. |
| netsuite_api_items | NetSuite | Observation | Item master-data observations. |
| netsuite_api_inventory_items | NetSuite | Observation | Inventory quantity observations. |
| netsuite_api_sales_orders | NetSuite | Observation | Sales order observations. |
| netsuite_api_invoices | NetSuite | Observation | AR invoice observations. |
| netsuite_api_customer_payments | NetSuite | Observation | Customer payment observations. |
| netsuite_api_credit_memos | NetSuite | Observation | Customer credit memo observations. |
| netsuite_api_return_authorizations | NetSuite | Observation | Return authorization observations. |
| netsuite_api_vendor_bills | NetSuite | Observation | AP vendor bill observations. |
| netsuite_api_vendor_payments | NetSuite | Observation | Vendor payment observations. |
| netsuite_api_vendor_credits | NetSuite | Observation | Vendor credit observations. |
| netsuite_api_purchase_orders | NetSuite | Observation | Purchase order observations. |
| netsuite_api_item_receipts | NetSuite | Observation | Receiving observations. |
| netsuite_api_item_fulfillments | NetSuite | Observation | Fulfillment observations. |
| netsuite_api_inventory_adjustments | NetSuite | Observation | Inventory adjustment observations. |
| netsuite_api_transfer_orders | NetSuite | Observation | Transfer order observations. |
| netsuite_api_deposits | NetSuite | Observation | Deposit observations. |
| netsuite_api_expense_reports | NetSuite | Observation | Expense report observations. |
| netsuite_api_journal_entries | NetSuite | Observation | Journal entry observations. |
| netsuite_api_custom_records | NetSuite | Observation | Tenant custom-record observations. |
| netsuite_agent_api_sales_order_updates | NetSuite | Commitment workflow | Governed sales order updates. |
| netsuite_agent_api_vendor_bill_updates | NetSuite | Commitment workflow | Governed vendor bill updates. |
| netsuite_agent_api_journal_entry_proposals | NetSuite | Commitment workflow | Governed journal entry proposals. |
| netsuite_agent_api_item_updates | NetSuite | Commitment workflow | Governed item master-data updates. |
| netsuite_agent_api_customer_vendor_updates | NetSuite | Commitment workflow | Governed customer/vendor updates. |
| netsuite_agent_api_inventory_adjustment_proposals | NetSuite | Commitment workflow | Governed inventory adjustment proposals. |

#### create_spec calls

##### netsuite_api_subsidiaries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "subsidiary_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary name",
      "name": "subsidiary_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent subsidiary id",
      "name": "parent_subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country",
      "name": "country",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Base currency",
      "name": "base_currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subsidiary observations for OneWorld entity scoping, consolidation, and accounting ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API subsidiaries",
    "spec_name": "netsuite_api_subsidiaries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account number",
      "name": "account_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent account id",
      "name": "parent_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Chart of accounts observations for GL classification, posting, and reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API accounts",
    "spec_name": "netsuite_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_departments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "department_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Department name",
      "name": "department_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent department id",
      "name": "parent_department_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Department dimension observations for management reporting and transaction coding.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API departments",
    "spec_name": "netsuite_api_departments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_classes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "class_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Class name",
      "name": "class_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent class id",
      "name": "parent_class_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Class dimension observations for revenue, cost, and planning analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API classes",
    "spec_name": "netsuite_api_classes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_locations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "location_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location name",
      "name": "location_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Location dimension observations for inventory, fulfillment, and accounting transactions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API locations",
    "spec_name": "netsuite_api_locations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer entity id",
      "name": "entity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for order-to-cash, billing, credit, and collections workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API customers",
    "spec_name": "netsuite_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_vendors

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor entity id",
      "name": "entity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor observations for procure-to-pay, approvals, and payment workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API vendors",
    "spec_name": "netsuite_api_vendors"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_employees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "employee_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee entity id",
      "name": "entity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Department id",
      "name": "department_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inactive flag",
      "name": "is_inactive",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Employee observations for approvals, expense reports, and operational ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API employees",
    "spec_name": "netsuite_api_employees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item external id",
      "name": "item_id_external",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item name",
      "name": "item_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item type",
      "name": "item_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Income account id",
      "name": "income_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expense account id",
      "name": "expense_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Item master observations for sales, purchasing, inventory, and revenue/cost mapping.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API items",
    "spec_name": "netsuite_api_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_inventory_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "inventory_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item id",
      "name": "item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity on hand",
      "name": "quantity_on_hand",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Quantity available",
      "name": "quantity_available",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory item observations for stocking, costing, fulfillment, and purchasing workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API inventory items",
    "spec_name": "netsuite_api_inventory_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_sales_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sales_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sales order status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sales order observations for order-to-cash, fulfillment, and revenue operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API sales orders",
    "spec_name": "netsuite_api_sales_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount remaining",
      "name": "amount_remaining",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice observations for AR, revenue, and collections workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API invoices",
    "spec_name": "netsuite_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_customer_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "payment_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer payment observations for AR application and cash reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API customer payments",
    "spec_name": "netsuite_api_customer_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_credit_memos

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "credit_memo_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Remaining credit amount",
      "name": "amount_remaining",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Credit memo observations for AR credits and customer balance adjustments.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API credit memos",
    "spec_name": "netsuite_api_credit_memos"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_return_authorizations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "return_authorization_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sales order id",
      "name": "sales_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Return authorization observations for reverse logistics and customer credits.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API return authorizations",
    "spec_name": "netsuite_api_return_authorizations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_vendor_bills

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_bill_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor bill status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amount remaining",
      "name": "amount_remaining",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor bill observations for AP, approvals, due dates, and payment planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API vendor bills",
    "spec_name": "netsuite_api_vendor_bills"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_vendor_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "payment_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor payment observations for AP settlement and cash reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API vendor payments",
    "spec_name": "netsuite_api_vendor_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_vendor_credits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "vendor_credit_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Remaining credit amount",
      "name": "amount_remaining",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Vendor credit observations for AP netting and open-credit review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API vendor credits",
    "spec_name": "netsuite_api_vendor_credits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_purchase_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "purchase_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Purchase order status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Purchase order observations for procurement, receiving, and AP intake.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API purchase orders",
    "spec_name": "netsuite_api_purchase_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_item_receipts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "item_receipt_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Purchase order id",
      "name": "purchase_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item receipt status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Item receipt observations for receiving, inventory, and three-way match workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API item receipts",
    "spec_name": "netsuite_api_item_receipts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_item_fulfillments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "item_fulfillment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sales order id",
      "name": "sales_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Item fulfillment observations for outbound logistics and sales order fulfillment.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API item fulfillments",
    "spec_name": "netsuite_api_item_fulfillments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_inventory_adjustments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "inventory_adjustment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Adjustment account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Estimated total value",
      "name": "estimated_total_value",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory adjustment observations for quantity, costing, shrinkage, and audit review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API inventory adjustments",
    "spec_name": "netsuite_api_inventory_adjustments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_transfer_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "transfer_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source location id",
      "name": "source_location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Destination location id",
      "name": "destination_location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transfer order status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Transfer order observations for movement between locations or subsidiaries.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API transfer orders",
    "spec_name": "netsuite_api_transfer_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_deposits

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "deposit_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Deposit observations for bank deposits, cash application, and reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API deposits",
    "spec_name": "netsuite_api_deposits"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_expense_reports

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "expense_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Employee id",
      "name": "employee_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expense report status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Expense report observations for employee spend and approval workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API expense reports",
    "spec_name": "netsuite_api_expense_reports"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_journal_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "journal_entry_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction id",
      "name": "tran_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total debit",
      "name": "total_debit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total credit",
      "name": "total_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Journal entry observations for GL adjustments, integrations, and close workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API journal entries",
    "spec_name": "netsuite_api_journal_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_api_custom_records

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "custom_record_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Custom record type id",
      "name": "record_type_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Record name",
      "name": "record_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Custom record observations for tenant-specific operational records exposed through NetSuite.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite API custom records",
    "spec_name": "netsuite_api_custom_records"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_sales_order_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "sales_order_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "sales_order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed total amount",
      "name": "proposed_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed sales order update proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API sales order updates",
    "spec_name": "netsuite_agent_api_sales_order_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_vendor_bill_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "vendor_bill_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "vendor_bill_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Vendor id",
      "name": "vendor_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current amount remaining",
      "name": "current_amount_remaining",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed total amount",
      "name": "proposed_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed vendor bill update proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API vendor bill updates",
    "spec_name": "netsuite_agent_api_vendor_bill_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_journal_entry_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "journal_entry_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "journal_entry_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Subsidiary id",
      "name": "subsidiary_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction date",
      "name": "transaction_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total debit",
      "name": "total_debit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total credit",
      "name": "total_credit",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed journal entry proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API journal entry proposals",
    "spec_name": "netsuite_agent_api_journal_entry_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_item_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "item_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed item master-data update proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API item updates",
    "spec_name": "netsuite_agent_api_item_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_customer_vendor_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "counterparty_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "counterparty_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "customer or vendor",
      "name": "counterparty_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed customer or vendor master-data update proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API customer/vendor updates",
    "spec_name": "netsuite_agent_api_customer_vendor_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### netsuite_agent_api_inventory_adjustment_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_adjustment_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "inventory_adjustment_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Item id",
      "name": "item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current quantity",
      "name": "current_quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed quantity",
      "name": "proposed_quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed inventory adjustment proposals before outbound NetSuite sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "NetSuite agent API inventory adjustment proposals",
    "spec_name": "netsuite_agent_api_inventory_adjustment_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "netsuite_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### salesforce_crm_library

- Type: collection
- Domains: crm, operations
- Direct systems: Salesforce
- Coverage: Extended
- Version: 1.0.0
- Summary: Salesforce CRM specs for accounts, contacts, leads, opportunities, cases, campaigns, activities, products, quotes, orders, contracts, assets, custom objects, change events, and governed CRM updates.
- Coverage notes: Covers the core Sales Cloud and Service Cloud objects agents usually need for CRM memory and governed record changes. It does not mirror every Salesforce sObject, field-level customization, or managed-package object.
- Source docs: [Salesforce REST API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm), [Salesforce Object Reference](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/), [Accessing Object Data with Salesforce Platform APIs](https://developer.salesforce.com/blogs/2024/04/accessing-object-data-with-salesforce-platform-apis)

#### Next objects
- files_content_documents
- knowledge_articles
- queues_groups
- territories
- forecasts
- opportunity_splits
- custom_metadata
- managed_package_objects

#### Omitted objects
- full field-level security metadata
- setup/audit metadata
- raw personal contact details
- OAuth/token management
- complete managed-package schemas

#### Needs
- A Salesforce agent/operator role. The generated calls use salesforce_agent.

#### Useful for
- CRM account memory
- Pipeline and forecast review
- Support case follow-up
- Marketing campaign response review
- Governed account/contact/opportunity/case changes

#### Extend with
- Links from Shopify/Stripe/NetSuite/QuickBooks customer records into Salesforce accounts
- Case-to-issue relationships with ops_issues or project management specs
- Tenant-specific custom-object specs after discovery

#### Links
- salesforce_agent_api_account_updates -> salesforce_api_accounts (source_link): Account update proposals cite the current account observation.
- salesforce_agent_api_contact_lead_updates -> salesforce_api_contacts (source_link): Contact update proposals cite the current contact observation.
- salesforce_agent_api_contact_lead_updates -> salesforce_api_leads (source_link): Lead update proposals cite the current lead observation.
- salesforce_agent_api_opportunity_updates -> salesforce_api_opportunities (source_link): Opportunity update proposals cite the current opportunity observation.
- salesforce_agent_api_case_updates -> salesforce_api_cases (source_link): Case update proposals cite the current case observation.
- salesforce_agent_api_campaign_member_updates -> salesforce_api_campaign_members (source_link): Campaign member update proposals cite the current campaign member observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| salesforce_api_accounts | Salesforce | Observation | Account and company observations. |
| salesforce_api_contacts | Salesforce | Observation | Contact observations. |
| salesforce_api_leads | Salesforce | Observation | Lead qualification observations. |
| salesforce_api_opportunities | Salesforce | Observation | Pipeline opportunity observations. |
| salesforce_api_opportunity_contact_roles | Salesforce | Observation | Buying committee role observations. |
| salesforce_api_cases | Salesforce | Observation | Support case observations. |
| salesforce_api_campaigns | Salesforce | Observation | Marketing campaign observations. |
| salesforce_api_campaign_members | Salesforce | Observation | Campaign response observations. |
| salesforce_api_tasks | Salesforce | Observation | Sales and service task observations. |
| salesforce_api_events | Salesforce | Observation | Meeting and calendar activity observations. |
| salesforce_api_products | Salesforce | Observation | Product catalog observations. |
| salesforce_api_pricebook_entries | Salesforce | Observation | Pricebook pricing observations. |
| salesforce_api_quotes | Salesforce | Observation | Quote observations. |
| salesforce_api_quote_line_items | Salesforce | Observation | Quote line item observations. |
| salesforce_api_orders | Salesforce | Observation | Sales order observations. |
| salesforce_api_order_items | Salesforce | Observation | Order item observations. |
| salesforce_api_contracts | Salesforce | Observation | Contract observations. |
| salesforce_api_assets | Salesforce | Observation | Installed asset observations. |
| salesforce_api_entitlements | Salesforce | Observation | Support entitlement observations. |
| salesforce_api_users | Salesforce | Observation | User and owner-routing observations. |
| salesforce_api_custom_objects | Salesforce | Observation | Tenant custom-object observations. |
| salesforce_api_change_events | Salesforce | Observation | CRM change event observations. |
| salesforce_agent_api_account_updates | Salesforce | Commitment workflow | Governed account updates. |
| salesforce_agent_api_contact_lead_updates | Salesforce | Commitment workflow | Governed contact/lead updates. |
| salesforce_agent_api_opportunity_updates | Salesforce | Commitment workflow | Governed opportunity updates. |
| salesforce_agent_api_case_updates | Salesforce | Commitment workflow | Governed case updates. |
| salesforce_agent_api_campaign_member_updates | Salesforce | Commitment workflow | Governed campaign member updates. |

#### create_spec calls

##### salesforce_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Industry",
      "name": "industry",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent account id",
      "name": "parent_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Annual revenue",
      "name": "annual_revenue",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Account observations for companies, customers, partners, ownership, and territory review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API accounts",
    "spec_name": "salesforce_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_contacts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "contact_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Job title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead source",
      "name": "lead_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Contact observations for people associated with accounts, sales activity, and service follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API contacts",
    "spec_name": "salesforce_api_contacts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_leads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "lead_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead status",
      "name": "lead_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead source",
      "name": "lead_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Converted account id",
      "name": "converted_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Lead observations for unconverted prospects, qualification state, source, and routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API leads",
    "spec_name": "salesforce_api_leads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_opportunities

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "opportunity_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opportunity name",
      "name": "opportunity_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Stage name",
      "name": "stage_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Close date",
      "name": "close_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opportunity amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Probability percent",
      "name": "probability",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Opportunity observations for pipeline, forecast, stage, close date, and account-level revenue work.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API opportunities",
    "spec_name": "salesforce_api_opportunities"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_opportunity_contact_roles

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "opportunity_contact_role_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opportunity id",
      "name": "opportunity_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Contact role",
      "name": "role",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary contact flag",
      "name": "is_primary",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Opportunity contact role observations linking contacts to opportunities and buying committee roles.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API opportunity contact roles",
    "spec_name": "salesforce_api_opportunity_contact_roles"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_cases

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "case_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Case number",
      "name": "case_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user or queue id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Case status",
      "name": "case_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Case priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Case origin",
      "name": "origin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Case observations for customer issues, support queues, status, priority, and service ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API cases",
    "spec_name": "salesforce_api_cases"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign type",
      "name": "campaign_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent campaign id",
      "name": "parent_campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budgeted cost",
      "name": "budgeted_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Actual cost",
      "name": "actual_cost",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign observations for marketing programs, campaign hierarchy, budget, status, and results.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API campaigns",
    "spec_name": "salesforce_api_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_campaign_members

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_member_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Lead id",
      "name": "lead_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Member status",
      "name": "member_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Response flag",
      "name": "has_responded",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign member observations linking leads or contacts to campaigns and response status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API campaign members",
    "spec_name": "salesforce_api_campaign_members"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_tasks

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "task_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead or contact id",
      "name": "who_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related account, opportunity, case, or custom object id",
      "name": "what_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "activity_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task status",
      "name": "task_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Task observations for sales and service activity, due dates, completion, and related records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API tasks",
    "spec_name": "salesforce_api_tasks"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead or contact id",
      "name": "who_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related record id",
      "name": "what_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start datetime",
      "name": "start_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End datetime",
      "name": "end_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event subject",
      "name": "event_subject",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Event observations for meetings and calendar activity linked to accounts, contacts, and opportunities.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API events",
    "spec_name": "salesforce_api_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product name",
      "name": "product_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product code",
      "name": "product_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product family",
      "name": "family",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "is_active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product observations for product catalog, quoting, ordering, and revenue workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API products",
    "spec_name": "salesforce_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_pricebook_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "pricebook_entry_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pricebook id",
      "name": "pricebook_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "is_active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Pricebook entry observations for product pricing by pricebook and currency.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API pricebook entries",
    "spec_name": "salesforce_api_pricebook_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_quotes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "quote_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opportunity id",
      "name": "opportunity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote number",
      "name": "quote_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote status",
      "name": "quote_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expiration date",
      "name": "expiration_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total price",
      "name": "total_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Quote observations for sales proposals, quote status, totals, and opportunity linkage.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API quotes",
    "spec_name": "salesforce_api_quotes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_quote_line_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "quote_line_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote id",
      "name": "quote_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Discount percent",
      "name": "discount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Quote line item observations for products, quantities, pricing, and discount review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API quote line items",
    "spec_name": "salesforce_api_quote_line_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contract id",
      "name": "contract_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order number",
      "name": "order_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Effective date",
      "name": "effective_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order status",
      "name": "order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order observations for accepted sales work, account linkage, effective date, and status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API orders",
    "spec_name": "salesforce_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_order_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Total price",
      "name": "total_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order item observations for product-level order quantities and prices.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API order items",
    "spec_name": "salesforce_api_order_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_contracts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "contract_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contract number",
      "name": "contract_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contract status",
      "name": "contract_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start date",
      "name": "start_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End date",
      "name": "end_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contract term",
      "name": "contract_term",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Contract observations for agreement status, term, account linkage, and renewal workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API contracts",
    "spec_name": "salesforce_api_contracts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_assets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "asset_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized serial number",
      "name": "serial_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Install date",
      "name": "install_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset status",
      "name": "asset_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Asset observations for installed products, customer ownership, and renewal/service context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API assets",
    "spec_name": "salesforce_api_assets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_entitlements

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "entitlement_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset id",
      "name": "asset_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entitlement name",
      "name": "entitlement_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start date",
      "name": "start_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End date",
      "name": "end_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entitlement status",
      "name": "entitlement_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Entitlement observations for support coverage, service terms, and account-level support rules.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API entitlements",
    "spec_name": "salesforce_api_entitlements"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_users

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "user_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized username",
      "name": "username_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "User role id",
      "name": "user_role_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "is_active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "User observations for ownership, assignment, queues, and workflow routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API users",
    "spec_name": "salesforce_api_users"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_custom_objects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "custom_object_record_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Custom object API name",
      "name": "object_api_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Record name",
      "name": "record_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Related account id",
      "name": "account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Custom object observations for tenant-specific CRM records exposed through Salesforce.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API custom objects",
    "spec_name": "salesforce_api_custom_objects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_api_change_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "change_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Entity API name",
      "name": "entity_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Changed record id",
      "name": "record_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Create, update, delete, or undelete",
      "name": "change_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Commit timestamp",
      "name": "commit_timestamp",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Change event observations for replay, sync status, and changed CRM records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce API change events",
    "spec_name": "salesforce_api_change_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_agent_api_account_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "account_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed account update proposals before outbound Salesforce sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce agent API account updates",
    "spec_name": "salesforce_agent_api_account_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_agent_api_contact_lead_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "person_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "person_record_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "contact or lead",
      "name": "person_record_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed contact or lead update proposals before outbound Salesforce sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce agent API contact/lead updates",
    "spec_name": "salesforce_agent_api_contact_lead_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_agent_api_opportunity_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "opportunity_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "opportunity_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current stage",
      "name": "current_stage_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed stage",
      "name": "proposed_stage_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current amount",
      "name": "current_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed amount",
      "name": "proposed_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed close date",
      "name": "proposed_close_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed opportunity update proposals before outbound Salesforce sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce agent API opportunity updates",
    "spec_name": "salesforce_agent_api_opportunity_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_agent_api_case_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "case_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "case_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current owner id",
      "name": "current_owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed owner id",
      "name": "proposed_owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed priority",
      "name": "proposed_priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed case update proposals before outbound Salesforce sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce agent API case updates",
    "spec_name": "salesforce_agent_api_case_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### salesforce_agent_api_campaign_member_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_member_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_member_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current member status",
      "name": "current_member_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed member status",
      "name": "proposed_member_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed campaign member update proposals before outbound Salesforce sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Salesforce agent API campaign member updates",
    "spec_name": "salesforce_agent_api_campaign_member_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "salesforce_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### hubspot_crm_library

- Type: collection
- Domains: crm, operations
- Direct systems: HubSpot
- Coverage: Extended
- Version: 1.0.0
- Summary: HubSpot CRM specs for contacts, companies, deals, tickets, leads, products, line items, quotes, pipelines, owners, associations, lists, forms, activities, custom objects, properties, webhook events, and governed CRM updates.
- Coverage notes: Covers the core HubSpot CRM objects and activity records agents usually need for go-to-market memory. It does not mirror every marketing asset, CMS object, report, or account-specific property.
- Source docs: [HubSpot CRM object APIs](https://developers.hubspot.com/docs/api-reference/latest/crm/using-object-apis), [HubSpot CRM concepts](https://developers.hubspot.com/docs/api/crm/understanding-the-crm), [HubSpot custom objects API](https://developers.hubspot.com/docs/guides/api/crm/objects/custom-objects)

#### Next objects
- deals_splits
- orders
- invoices
- payments
- feedback_submissions
- conversations
- playbooks
- workflows
- marketing_email_assets

#### Omitted objects
- raw contact personal details
- OAuth/token management
- CMS pages and themes
- full reporting exports
- all account-specific properties

#### Needs
- A HubSpot agent/operator role. The generated calls use hubspot_agent.

#### Useful for
- SMB CRM memory
- Deal pipeline review
- Support ticket follow-up
- Marketing conversion review
- Governed contact/company/deal/ticket changes

#### Extend with
- Links from Shopify/Stripe/Square customer records into HubSpot contacts or companies
- Deal-to-accounting handoff relationships with QuickBooks or NetSuite
- Ticket-to-issue relationships with ops_issues or project management specs

#### Links
- hubspot_agent_api_company_updates -> hubspot_api_companies (source_link): Company update proposals cite the current company observation.
- hubspot_agent_api_contact_updates -> hubspot_api_contacts (source_link): Contact update proposals cite the current contact observation.
- hubspot_agent_api_deal_updates -> hubspot_api_deals (source_link): Deal update proposals cite the current deal observation.
- hubspot_agent_api_ticket_updates -> hubspot_api_tickets (source_link): Ticket update proposals cite the current ticket observation.
- hubspot_agent_api_association_updates -> hubspot_api_associations (source_link): Association update proposals cite the current association observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| hubspot_api_contacts | HubSpot | Observation | Contact observations. |
| hubspot_api_companies | HubSpot | Observation | Company observations. |
| hubspot_api_deals | HubSpot | Observation | Deal pipeline observations. |
| hubspot_api_tickets | HubSpot | Observation | Support ticket observations. |
| hubspot_api_leads | HubSpot | Observation | Lead observations. |
| hubspot_api_products | HubSpot | Observation | Product catalog observations. |
| hubspot_api_line_items | HubSpot | Observation | Line item observations. |
| hubspot_api_quotes | HubSpot | Observation | Quote observations. |
| hubspot_api_pipelines | HubSpot | Observation | Pipeline and stage observations. |
| hubspot_api_owners | HubSpot | Observation | Owner and assignment observations. |
| hubspot_api_associations | HubSpot | Observation | CRM association observations. |
| hubspot_api_lists | HubSpot | Observation | List membership observations. |
| hubspot_api_marketing_events | HubSpot | Observation | Marketing event observations. |
| hubspot_api_forms | HubSpot | Observation | Form definition observations. |
| hubspot_api_form_submissions | HubSpot | Observation | Form submission observations. |
| hubspot_api_calls | HubSpot | Observation | Call engagement observations. |
| hubspot_api_emails | HubSpot | Observation | Email engagement observations. |
| hubspot_api_meetings | HubSpot | Observation | Meeting engagement observations. |
| hubspot_api_notes | HubSpot | Observation | Note engagement observations. |
| hubspot_api_tasks | HubSpot | Observation | Task engagement observations. |
| hubspot_api_custom_objects | HubSpot | Observation | Tenant custom-object observations. |
| hubspot_api_property_definitions | HubSpot | Observation | Property schema observations. |
| hubspot_api_webhook_events | HubSpot | Observation | Webhook event observations. |
| hubspot_agent_api_company_updates | HubSpot | Commitment workflow | Governed company updates. |
| hubspot_agent_api_contact_updates | HubSpot | Commitment workflow | Governed contact updates. |
| hubspot_agent_api_deal_updates | HubSpot | Commitment workflow | Governed deal updates. |
| hubspot_agent_api_ticket_updates | HubSpot | Commitment workflow | Governed ticket updates. |
| hubspot_agent_api_association_updates | HubSpot | Commitment workflow | Governed association updates. |

#### create_spec calls

##### hubspot_api_contacts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "contact_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary company id",
      "name": "company_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lifecycle stage",
      "name": "lifecycle_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead status",
      "name": "lead_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Contact observations for people, lifecycle stage, ownership, and go-to-market follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API contacts",
    "spec_name": "hubspot_api_contacts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_companies

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "company_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized domain reference",
      "name": "domain_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Industry",
      "name": "industry",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lifecycle stage",
      "name": "lifecycle_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Company observations for accounts, domains, ownership, lifecycle stage, and firmographic review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API companies",
    "spec_name": "hubspot_api_companies"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_deals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "deal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal name",
      "name": "deal_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pipeline id",
      "name": "pipeline_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal stage",
      "name": "deal_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Close date",
      "name": "close_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Deal observations for pipeline, stage, amount, close date, and associated revenue workflows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API deals",
    "spec_name": "hubspot_api_deals"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_tickets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ticket_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ticket subject",
      "name": "subject",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pipeline id",
      "name": "pipeline_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ticket stage",
      "name": "ticket_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ticket observations for support issues, pipeline stage, priority, and owner routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API tickets",
    "spec_name": "hubspot_api_tickets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_leads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "lead_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead name",
      "name": "lead_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated contact id",
      "name": "associated_contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated company id",
      "name": "associated_company_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lead status",
      "name": "lead_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Lead observations for prospect qualification, associated contacts, and associated companies.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API leads",
    "spec_name": "hubspot_api_leads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product name",
      "name": "product_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Folder id",
      "name": "folder_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product observations for HubSpot product catalog and line-item creation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API products",
    "spec_name": "hubspot_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_line_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "line_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote id",
      "name": "quote_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Unit price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Line amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Line item observations for products, quantities, prices, and deal or quote totals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API line items",
    "spec_name": "hubspot_api_line_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_quotes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "quote_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote title",
      "name": "quote_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quote status",
      "name": "quote_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expiration date",
      "name": "expiration_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Quote observations for deal-linked sales proposals, status, expiration, and totals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API quotes",
    "spec_name": "hubspot_api_quotes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_pipelines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "pipeline_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type such as deals or tickets",
      "name": "object_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Pipeline id",
      "name": "pipeline_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pipeline label",
      "name": "pipeline_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Stage count",
      "name": "stage_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Archived flag",
      "name": "archived",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Pipeline observations for deal and ticket stages, display order, and lifecycle structure.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API pipelines",
    "spec_name": "hubspot_api_pipelines"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_owners

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "owner_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot user id",
      "name": "user_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Archived flag",
      "name": "archived",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Owner observations for assignment, routing, and team ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API owners",
    "spec_name": "hubspot_api_owners"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_associations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "association_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "From object type",
      "name": "from_object_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "From object id",
      "name": "from_object_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "To object type",
      "name": "to_object_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "To object id",
      "name": "to_object_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Association label",
      "name": "association_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Association observations linking contacts, companies, deals, tickets, activities, and custom objects.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API associations",
    "spec_name": "hubspot_api_associations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_lists

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "list_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "List name",
      "name": "list_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Processing type",
      "name": "processing_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Member count",
      "name": "member_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "List observations for segmented contacts or companies used in marketing, sales, and operations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API lists",
    "spec_name": "hubspot_api_lists"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_marketing_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "marketing_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event name",
      "name": "event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start datetime",
      "name": "start_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End datetime",
      "name": "end_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Registrant count",
      "name": "registrant_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Attendee count",
      "name": "attendee_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing event observations for webinars, trade shows, attendance, and campaign follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API marketing events",
    "spec_name": "hubspot_api_marketing_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_forms

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "form_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Form name",
      "name": "form_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Form type",
      "name": "form_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Submission count",
      "name": "submission_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Form observations for lead capture, conversion paths, and field/schema review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API forms",
    "spec_name": "hubspot_api_forms"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_form_submissions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "form_submission_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Form id",
      "name": "form_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Submitted timestamp",
      "name": "submitted_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized page URL",
      "name": "page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Form submission observations for lead capture, source evidence, and conversion review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API form submissions",
    "spec_name": "hubspot_api_form_submissions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_calls

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "call_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Call status",
      "name": "call_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Call outcome",
      "name": "call_outcome",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Activity date",
      "name": "activity_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated record id",
      "name": "associated_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Call engagement observations for sales and support activity, outcomes, and associations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API calls",
    "spec_name": "hubspot_api_calls"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_emails

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "email_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inbound or outbound",
      "name": "email_direction",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Email status",
      "name": "email_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Activity date",
      "name": "activity_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated record id",
      "name": "associated_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Email engagement observations for customer communication history and follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API emails",
    "spec_name": "hubspot_api_emails"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_meetings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "meeting_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Meeting title",
      "name": "meeting_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start datetime",
      "name": "start_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End datetime",
      "name": "end_datetime",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Meeting outcome",
      "name": "outcome",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Meeting engagement observations for scheduled or logged meetings and associations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API meetings",
    "spec_name": "hubspot_api_meetings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_notes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "note_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Activity date",
      "name": "activity_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated record id",
      "name": "associated_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short note summary",
      "name": "note_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Note engagement observations for CRM context, handoff notes, and agent review evidence.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API notes",
    "spec_name": "hubspot_api_notes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_tasks

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "task_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task subject",
      "name": "task_subject",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task status",
      "name": "task_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Associated record id",
      "name": "associated_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Task engagement observations for follow-up work, completion, priority, and owner routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API tasks",
    "spec_name": "hubspot_api_tasks"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_custom_objects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "custom_object_record_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type id",
      "name": "object_type_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Record name",
      "name": "record_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary associated object id",
      "name": "primary_association_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Custom object observations for account-specific HubSpot records and modeled business entities.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API custom objects",
    "spec_name": "hubspot_api_custom_objects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_property_definitions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "property_definition_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Property name",
      "name": "property_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field type",
      "name": "field_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property type",
      "name": "property_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Calculated property flag",
      "name": "is_calculated",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Property definition observations for object schema discovery and field promotion decisions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API property definitions",
    "spec_name": "hubspot_api_property_definitions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription type",
      "name": "subscription_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object id",
      "name": "object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook event observations for CRM sync replay, dedupe, and downstream refresh decisions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot API webhook events",
    "spec_name": "hubspot_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_agent_api_company_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "company_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "company_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed company update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot agent API company updates",
    "spec_name": "hubspot_agent_api_company_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_agent_api_contact_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "contact_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "contact_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed contact update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot agent API contact updates",
    "spec_name": "hubspot_agent_api_contact_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_agent_api_deal_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "deal_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "deal_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current deal stage",
      "name": "current_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed deal stage",
      "name": "proposed_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current amount",
      "name": "current_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed amount",
      "name": "proposed_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed close date",
      "name": "proposed_close_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed deal update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot agent API deal updates",
    "spec_name": "hubspot_agent_api_deal_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_agent_api_ticket_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "ticket_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "ticket_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current ticket stage",
      "name": "current_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed ticket stage",
      "name": "proposed_stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current owner id",
      "name": "current_owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed owner id",
      "name": "proposed_owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed priority",
      "name": "proposed_priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed ticket update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot agent API ticket updates",
    "spec_name": "hubspot_agent_api_ticket_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_agent_api_association_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "association_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "association_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "From object type",
      "name": "from_object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "From object id",
      "name": "from_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "To object type",
      "name": "to_object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "To object id",
      "name": "to_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed association label",
      "name": "proposed_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed association create/update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot agent API association updates",
    "spec_name": "hubspot_agent_api_association_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### jira_project_management_library

- Type: collection
- Domains: project management, operations
- Direct systems: Jira
- Coverage: Core
- Version: 1.0.0
- Summary: Jira project management specs for projects, issues, fields, issue types, statuses, workflows, comments, attachments, worklogs, links, versions, components, users, boards, sprints, epics, webhook events, and governed issue updates.
- Coverage notes: Covers common Jira Cloud and Jira Software records for issue tracking and agile planning. It does not mirror every Jira admin object, permission scheme, screen scheme, automation rule, or Marketplace app extension.
- Source docs: [Jira Cloud platform REST API](https://developer.atlassian.com/cloud/jira/platform/rest/), [Jira Cloud issues API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/), [Jira Software Cloud REST API](https://developer.atlassian.com/cloud/jira/software/rest/)

#### Next objects
- filters
- dashboards
- permission_schemes
- screens
- automation_rules
- service_management_requests
- assets
- deployments
- development_information

#### Omitted objects
- OAuth/token management
- raw user emails
- complete admin permission metadata
- Marketplace app-specific fields
- legacy Server/Data Center-only endpoints

#### Needs
- A Jira agent/operator role. The generated calls use jira_agent.

#### Useful for
- Issue tracking memory
- Agent-raised work items
- Project delivery reporting
- Sprint and release planning
- Governed issue creation, transition, and comment updates

#### Extend with
- Links from ops_issues into Jira issue creation proposals
- Links from Salesforce/HubSpot tickets into Jira issues
- Links from commits/deployments into issue observations when development data is available

#### Links
- jira_agent_api_issue_create_proposals -> jira_api_projects (source_link): Issue creation proposals cite the target project observation.
- jira_agent_api_issue_updates -> jira_api_issues (source_link): Issue update proposals cite the current issue observation.
- jira_agent_api_issue_transitions -> jira_api_issues (source_link): Issue transition proposals cite the current issue observation.
- jira_agent_api_issue_transitions -> jira_api_workflows (source_link): Issue transition proposals can cite workflow observations for allowed status movement.
- jira_agent_api_comment_updates -> jira_api_issues (source_link): Comment proposals cite the issue they are intended to update.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| jira_api_projects | Jira | Observation | Project observations. |
| jira_api_issues | Jira | Observation | Issue/work item observations. |
| jira_api_issue_fields | Jira | Observation | Issue field schema observations. |
| jira_api_issue_types | Jira | Observation | Issue type observations. |
| jira_api_statuses | Jira | Observation | Status observations. |
| jira_api_workflows | Jira | Observation | Workflow observations. |
| jira_api_issue_comments | Jira | Observation | Issue comment observations. |
| jira_api_issue_attachments | Jira | Observation | Issue attachment observations. |
| jira_api_issue_worklogs | Jira | Observation | Issue worklog observations. |
| jira_api_issue_links | Jira | Observation | Issue relationship observations. |
| jira_api_versions | Jira | Observation | Version and release observations. |
| jira_api_components | Jira | Observation | Component observations. |
| jira_api_users | Jira | Observation | User and assignment observations. |
| jira_software_api_boards | Jira | Observation | Board observations. |
| jira_software_api_sprints | Jira | Observation | Sprint observations. |
| jira_software_api_epics | Jira | Observation | Epic observations. |
| jira_api_webhook_events | Jira | Observation | Jira webhook event observations. |
| jira_agent_api_issue_create_proposals | Jira | Commitment workflow | Governed issue creation proposals. |
| jira_agent_api_issue_updates | Jira | Commitment workflow | Governed issue updates. |
| jira_agent_api_issue_transitions | Jira | Commitment workflow | Governed issue transitions. |
| jira_agent_api_comment_updates | Jira | Commitment workflow | Governed comment updates. |

#### create_spec calls

##### jira_api_projects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "project_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Project name",
      "name": "project_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project type key",
      "name": "project_type_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project lead account id",
      "name": "lead_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Archived flag",
      "name": "archived",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Project observations for keys, names, project types, leads, and issue organization.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API projects",
    "spec_name": "jira_api_projects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue summary",
      "name": "summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignee account id",
      "name": "assignee_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Reporter account id",
      "name": "reporter_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue observations for work items, bugs, tasks, stories, status, priority, assignee, reporter, and project context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issues",
    "spec_name": "jira_api_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_fields

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "issue_field_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field id",
      "name": "field_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field type",
      "name": "field_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Schema type",
      "name": "schema_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Custom field flag",
      "name": "custom",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue field observations for tenant-specific field configuration and custom field discovery.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue fields",
    "spec_name": "jira_api_issue_fields"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_types

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "issue_type_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type name",
      "name": "issue_type_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type description",
      "name": "description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subtask flag",
      "name": "subtask",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Hierarchy level",
      "name": "hierarchy_level",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue type observations for bugs, tasks, stories, epics, subtasks, and custom work types.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue types",
    "spec_name": "jira_api_issue_types"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_statuses

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "status_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Status name",
      "name": "status_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Status category",
      "name": "status_category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Status description",
      "name": "description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Status observations for workflow states and status categories.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API statuses",
    "spec_name": "jira_api_statuses"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_workflows

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "workflow_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow name",
      "name": "workflow_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow description",
      "name": "description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Status count",
      "name": "status_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Transition count",
      "name": "transition_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Workflow observations for transition structure, statuses, and project/issue-type governance.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API workflows",
    "spec_name": "jira_api_workflows"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_comments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "comment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Author account id",
      "name": "author_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Updated timestamp",
      "name": "updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short comment summary",
      "name": "body_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue comment observations for discussion history, review evidence, and support handoff.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue comments",
    "spec_name": "jira_api_issue_comments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_attachments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "attachment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Filename",
      "name": "filename",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content type",
      "name": "content_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "File size in bytes",
      "name": "size_bytes",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Author account id",
      "name": "author_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue attachment observations for files linked to work items and evidence review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue attachments",
    "spec_name": "jira_api_issue_attachments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_worklogs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "worklog_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Author account id",
      "name": "author_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Work started timestamp",
      "name": "started_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Time spent in seconds",
      "name": "time_spent_seconds",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Worklog observations for time spent on issues and project delivery reporting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue worklogs",
    "spec_name": "jira_api_issue_worklogs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_issue_links

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "issue_link_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source issue key",
      "name": "source_issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Target issue key",
      "name": "target_issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Link type",
      "name": "link_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Link direction",
      "name": "direction",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue link observations for blockers, duplicates, parent/child context, and related work.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API issue links",
    "spec_name": "jira_api_issue_links"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_versions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "version_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Version name",
      "name": "version_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Released flag",
      "name": "released",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Release date",
      "name": "release_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Archived flag",
      "name": "archived",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Project version observations for releases, fix versions, and release planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API versions",
    "spec_name": "jira_api_versions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_components

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "component_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Component name",
      "name": "component_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Component lead account id",
      "name": "lead_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignee type",
      "name": "assignee_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Project component observations for ownership, subsystem routing, and issue classification.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API components",
    "spec_name": "jira_api_components"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_users

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized display name",
      "name": "display_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "User observations for assignment, reporting, ownership, and audit context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API users",
    "spec_name": "jira_api_users"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_software_api_boards

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "board_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Board name",
      "name": "board_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Board type",
      "name": "board_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Board filter id",
      "name": "filter_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Board observations for Scrum/Kanban planning, project filters, and work visibility.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira Software API boards",
    "spec_name": "jira_software_api_boards"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_software_api_sprints

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sprint_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Board id",
      "name": "board_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sprint name",
      "name": "sprint_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sprint state",
      "name": "sprint_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start date",
      "name": "start_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End date",
      "name": "end_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sprint goal",
      "name": "goal",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sprint observations for agile iteration planning, state, goal, and board context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira Software API sprints",
    "spec_name": "jira_software_api_sprints"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_software_api_epics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "epic_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Epic issue key",
      "name": "epic_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Epic name",
      "name": "epic_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Epic status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner account id",
      "name": "owner_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Epic observations for larger bodies of work and issue grouping.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira Software API epics",
    "spec_name": "jira_software_api_epics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Actor account id",
      "name": "actor_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook event observations for issue/project change replay and downstream refresh decisions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira API webhook events",
    "spec_name": "jira_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_agent_api_issue_create_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "issue_create_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "project_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Project key",
      "name": "project_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue summary",
      "name": "summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed priority",
      "name": "proposed_priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed assignee account id",
      "name": "proposed_assignee_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed issue creation proposals before outbound Jira sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira agent API issue create proposals",
    "spec_name": "jira_agent_api_issue_create_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_agent_api_issue_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "issue_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed issue update proposals before outbound Jira sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira agent API issue updates",
    "spec_name": "jira_agent_api_issue_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_agent_api_issue_transitions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "issue_transition_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Jira transition id",
      "name": "transition_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed issue transition proposals before outbound Jira sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira agent API issue transitions",
    "spec_name": "jira_agent_api_issue_transitions",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### jira_agent_api_comment_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "comment_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue key",
      "name": "issue_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Comment summary",
      "name": "comment_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Visibility scope",
      "name": "visibility_scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed comment creation/update proposals before outbound Jira sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Jira agent API comment updates",
    "spec_name": "jira_agent_api_comment_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "jira_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### linear_project_management_library

- Type: collection
- Domains: project management, operations
- Direct systems: Linear
- Coverage: Core
- Version: 1.0.0
- Summary: Linear project management specs for organizations, teams, users, workflow states, issues, comments, attachments, labels, projects, project updates, milestones, cycles, initiatives, documents, customers, customer requests, webhook events, and governed work updates.
- Coverage notes: Covers the core Linear GraphQL objects agents usually need for product and engineering work memory. It does not mirror the full GraphQL schema, every admin setting, or every integration-specific payload.
- Source docs: [Linear developers](https://linear.app/docs/api), [Linear GraphQL API](https://linear.app/developers/graphql?noRedirect=1), [Linear webhooks](https://linear.app/developers/webhooks)

#### Next objects
- roadmaps
- views
- integrations
- triage_responsibilities
- relations
- reactions
- sla_statuses
- github_pull_requests

#### Omitted objects
- OAuth/token management
- raw user emails
- complete admin settings
- full GraphQL schema introspection output
- integration-specific private payloads

#### Needs
- A Linear agent/operator role. The generated calls use linear_agent.

#### Useful for
- Product and engineering work memory
- Agent-raised issues
- Project and cycle reporting
- Customer-request follow-up
- Governed issue/project/comment updates

#### Extend with
- Links from ops_issues into Linear issue creation proposals
- Links from Salesforce/HubSpot tickets into Linear issues
- Links from GitHub pull requests into Linear issue observations

#### Links
- linear_agent_api_issue_create_proposals -> linear_api_teams (source_link): Issue creation proposals cite the target team observation.
- linear_agent_api_issue_updates -> linear_api_issues (source_link): Issue update proposals cite the current issue observation.
- linear_agent_api_project_updates -> linear_api_projects (source_link): Project update proposals cite the current project observation.
- linear_agent_api_comment_updates -> linear_api_issues (source_link): Comment proposals cite the issue they are intended to update.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| linear_api_organizations | Linear | Observation | Workspace organization observations. |
| linear_api_teams | Linear | Observation | Team observations. |
| linear_api_users | Linear | Observation | User and assignment observations. |
| linear_api_workflow_states | Linear | Observation | Workflow state observations. |
| linear_api_issues | Linear | Observation | Issue observations. |
| linear_api_issue_comments | Linear | Observation | Issue comment observations. |
| linear_api_issue_attachments | Linear | Observation | Issue attachment observations. |
| linear_api_issue_labels | Linear | Observation | Issue label observations. |
| linear_api_projects | Linear | Observation | Project observations. |
| linear_api_project_updates | Linear | Observation | Project update observations. |
| linear_api_milestones | Linear | Observation | Milestone observations. |
| linear_api_cycles | Linear | Observation | Cycle observations. |
| linear_api_initiatives | Linear | Observation | Initiative observations. |
| linear_api_documents | Linear | Observation | Document observations. |
| linear_api_customers | Linear | Observation | Customer observations. |
| linear_api_customer_requests | Linear | Observation | Customer request observations. |
| linear_api_webhook_events | Linear | Observation | Linear webhook event observations. |
| linear_agent_api_issue_create_proposals | Linear | Commitment workflow | Governed issue creation proposals. |
| linear_agent_api_issue_updates | Linear | Commitment workflow | Governed issue updates. |
| linear_agent_api_project_updates | Linear | Commitment workflow | Governed project updates. |
| linear_agent_api_comment_updates | Linear | Commitment workflow | Governed comment updates. |

#### create_spec calls

##### linear_api_organizations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "organization_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Organization name",
      "name": "organization_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workspace URL key",
      "name": "url_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Organization observations for workspace identity, URL keys, and global settings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API organizations",
    "spec_name": "linear_api_organizations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_teams

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "team_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team name",
      "name": "team_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team key",
      "name": "team_key",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Team description",
      "name": "description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cycle enabled flag",
      "name": "cycle_enabled",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Private team flag",
      "name": "private",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Team observations for ownership, issue prefixes, cycles, and workflow routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API teams",
    "spec_name": "linear_api_teams"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_users

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "user_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized display name",
      "name": "display_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Admin flag",
      "name": "admin",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "User observations for assignment, ownership, and project/team participation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API users",
    "spec_name": "linear_api_users"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_workflow_states

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "workflow_state_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "State name",
      "name": "state_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "State type",
      "name": "state_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "State position",
      "name": "position",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Workflow state observations for backlog, triage, started, completed, canceled, and team-specific status mapping.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API workflow states",
    "spec_name": "linear_api_workflow_states"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Linear issue identifier",
      "name": "identifier",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cycle id",
      "name": "cycle_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow state id",
      "name": "state_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Assignee user id",
      "name": "assignee_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue observations for product/engineering work, status, priority, assignee, team, project, and cycle context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API issues",
    "spec_name": "linear_api_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_issue_comments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "comment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Author user id",
      "name": "author_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Updated timestamp",
      "name": "updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short comment summary",
      "name": "body_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue comment observations for decisions, handoff context, and review evidence.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API issue comments",
    "spec_name": "linear_api_issue_comments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_issue_attachments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "attachment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Attachment title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Attachment subtitle",
      "name": "subtitle",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized URL",
      "name": "url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Attachment source type",
      "name": "source_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue attachment observations for linked source material, external URLs, and evidence.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API issue attachments",
    "spec_name": "linear_api_issue_attachments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_issue_labels

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "label_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Label name",
      "name": "label_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent label id",
      "name": "parent_label_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Label color",
      "name": "color",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Issue label observations for routing, topic classification, and triage.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API issue labels",
    "spec_name": "linear_api_issue_labels"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_projects

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "project_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project name",
      "name": "project_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project status",
      "name": "project_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project lead user id",
      "name": "lead_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target date",
      "name": "target_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Project observations for planned product work, status, target dates, leads, and team ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API projects",
    "spec_name": "linear_api_projects"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_project_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "project_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Author user id",
      "name": "author_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project health",
      "name": "health",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short update summary",
      "name": "body_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Project update observations for status reporting, health, and milestone narrative.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API project updates",
    "spec_name": "linear_api_project_updates"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_milestones

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "milestone_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Milestone name",
      "name": "milestone_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target date",
      "name": "target_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Milestone position",
      "name": "position",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Milestone observations for project phases, target dates, and delivery checkpoints.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API milestones",
    "spec_name": "linear_api_milestones"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_cycles

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "cycle_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cycle number",
      "name": "cycle_number",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Cycle name",
      "name": "cycle_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cycle start timestamp",
      "name": "starts_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cycle end timestamp",
      "name": "ends_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Cycle observations for time-boxed team work and delivery planning.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API cycles",
    "spec_name": "linear_api_cycles"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_initiatives

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "initiative_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Initiative name",
      "name": "initiative_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Initiative status",
      "name": "initiative_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target date",
      "name": "target_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Initiative observations for larger product bets spanning projects and teams.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API initiatives",
    "spec_name": "linear_api_initiatives"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_documents

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "document_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Document title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creator user id",
      "name": "creator_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Updated timestamp",
      "name": "updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Document observations for specs, decisions, and product/project context stored in Linear.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API documents",
    "spec_name": "linear_api_documents"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer name",
      "name": "customer_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized domain reference",
      "name": "domain_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owner user id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer observations for customer requests, product feedback, and account-linked issue context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API customers",
    "spec_name": "linear_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_customer_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_request_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue id",
      "name": "issue_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Request status",
      "name": "request_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Request priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer request observations for support, feedback, and issue/project demand signals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API customer requests",
    "spec_name": "linear_api_customer_requests"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Webhook resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Webhook action",
      "name": "action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook event observations for issue, project, cycle, comment, label, customer, and document change replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear API webhook events",
    "spec_name": "linear_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_agent_api_issue_create_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "issue_create_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "team_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Team id",
      "name": "team_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed priority",
      "name": "proposed_priority",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed assignee user id",
      "name": "proposed_assignee_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed issue creation proposals before outbound Linear sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear agent API issue create proposals",
    "spec_name": "linear_agent_api_issue_create_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_agent_api_issue_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "issue_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Linear issue identifier",
      "name": "identifier",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed issue update proposals before outbound Linear sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear agent API issue updates",
    "spec_name": "linear_agent_api_issue_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_agent_api_project_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "project_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "project_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Project id",
      "name": "project_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current project status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed project status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed project health",
      "name": "proposed_health",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed project update proposals before outbound Linear sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear agent API project updates",
    "spec_name": "linear_agent_api_project_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### linear_agent_api_comment_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "comment_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "issue_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Linear issue identifier",
      "name": "identifier",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Comment summary",
      "name": "comment_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Visibility scope",
      "name": "visibility_scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed comment creation/update proposals before outbound Linear sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Linear agent API comment updates",
    "spec_name": "linear_agent_api_comment_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "linear_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### servicenow_itsm_library

- Type: collection
- Domains: operations
- Direct systems: ServiceNow
- Coverage: Core
- Version: 1.0.0
- Summary: ServiceNow ITSM specs for incidents, problems, changes, requests, catalog items, approvals, CMDB records, service offerings, SLAs, knowledge, attachments, users, groups, departments, companies, journal entries, webhook events, and governed ITSM updates.
- Coverage notes: Covers common ServiceNow ITSM and platform table records used for operational memory and governed service updates. It does not grant broad table-write behavior or mirror every ServiceNow table, ACL, workflow, or product module.
- Source docs: [ServiceNow REST API reference](https://www.servicenow.com/docs/r/api-reference/rest-apis/api-rest.html), [ServiceNow REST API Explorer](https://www.servicenow.com/docs/r/api-reference/rest-api-explorer/c_RESTAPI.html), [ServiceNow Attachment API](https://www.servicenow.com/docs/r/api-reference/rest-apis/c_AttachmentAPI.html)

#### Next objects
- service_mapping
- business_applications
- asset_management
- configuration_item_changes
- service_portfolio
- major_incidents
- on_call_schedules
- custom_app_tables

#### Omitted objects
- OAuth/token management
- raw user contact details
- complete ACL/security metadata
- all custom tables
- broad write access to arbitrary tables

#### Needs
- A ServiceNow agent/operator role. The generated calls use servicenow_agent.

#### Useful for
- ITSM operational memory
- Incident triage
- Change governance
- Service request follow-up
- CMDB impact review
- Knowledge article improvement

#### Extend with
- Links from monitoring observations into incident creation proposals
- Links from Jira/Linear issues into ServiceNow incidents or changes
- CMDB relationship reconciliation for impacted services

#### Links
- servicenow_agent_api_incident_create_proposals -> servicenow_api_cmdb_configuration_items (source_link): Incident creation proposals can cite impacted configuration item observations.
- servicenow_agent_api_incident_updates -> servicenow_api_incidents (source_link): Incident update proposals cite the current incident observation.
- servicenow_agent_api_change_request_proposals -> servicenow_api_change_requests (source_link): Change request proposals cite current change observations when updating existing changes.
- servicenow_agent_api_request_updates -> servicenow_api_requests (source_link): Request update proposals cite the current request observation.
- servicenow_agent_api_knowledge_updates -> servicenow_api_knowledge_articles (source_link): Knowledge update proposals cite the current knowledge article observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| servicenow_api_incidents | ServiceNow | Observation | Incident observations. |
| servicenow_api_problems | ServiceNow | Observation | Problem observations. |
| servicenow_api_change_requests | ServiceNow | Observation | Change request observations. |
| servicenow_api_change_tasks | ServiceNow | Observation | Change task observations. |
| servicenow_api_requests | ServiceNow | Observation | Service request observations. |
| servicenow_api_requested_items | ServiceNow | Observation | Requested item observations. |
| servicenow_api_catalog_tasks | ServiceNow | Observation | Catalog task observations. |
| servicenow_api_catalog_items | ServiceNow | Observation | Catalog item observations. |
| servicenow_api_approvals | ServiceNow | Observation | Approval observations. |
| servicenow_api_cmdb_configuration_items | ServiceNow | Observation | CMDB configuration item observations. |
| servicenow_api_cmdb_relationships | ServiceNow | Observation | CMDB relationship observations. |
| servicenow_api_service_offerings | ServiceNow | Observation | Service offering observations. |
| servicenow_api_sla_tasks | ServiceNow | Observation | SLA task observations. |
| servicenow_api_knowledge_articles | ServiceNow | Observation | Knowledge article observations. |
| servicenow_api_attachments | ServiceNow | Observation | Attachment observations. |
| servicenow_api_users | ServiceNow | Observation | User observations. |
| servicenow_api_groups | ServiceNow | Observation | Group observations. |
| servicenow_api_departments | ServiceNow | Observation | Department observations. |
| servicenow_api_companies | ServiceNow | Observation | Company observations. |
| servicenow_api_journal_entries | ServiceNow | Observation | Journal entry observations. |
| servicenow_api_webhook_events | ServiceNow | Observation | ServiceNow event observations. |
| servicenow_agent_api_incident_create_proposals | ServiceNow | Commitment workflow | Governed incident creation proposals. |
| servicenow_agent_api_incident_updates | ServiceNow | Commitment workflow | Governed incident updates. |
| servicenow_agent_api_change_request_proposals | ServiceNow | Commitment workflow | Governed change request proposals. |
| servicenow_agent_api_request_updates | ServiceNow | Commitment workflow | Governed service request updates. |
| servicenow_agent_api_knowledge_updates | ServiceNow | Commitment workflow | Governed knowledge article updates. |

#### create_spec calls

##### servicenow_api_incidents

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "incident_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Incident number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Incident state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impact",
      "name": "impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Urgency",
      "name": "urgency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignment group sys_id",
      "name": "assignment_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assigned user sys_id",
      "name": "assigned_to_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Incident observations for service disruption, impact, urgency, assignment, state, and resolution review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API incidents",
    "spec_name": "servicenow_api_incidents"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_problems

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "problem_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Problem number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Problem state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Known error flag",
      "name": "known_error",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Assignment group sys_id",
      "name": "assignment_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Problem observations for recurring issues, root cause, workarounds, and known error review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API problems",
    "spec_name": "servicenow_api_problems"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_change_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "change_request_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Change request number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Change state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Change type",
      "name": "type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Risk",
      "name": "risk",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impact",
      "name": "impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Approval state",
      "name": "approval",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Planned start timestamp",
      "name": "planned_start_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Planned end timestamp",
      "name": "planned_end_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Change request observations for planned work, risk, approval, schedule, and implementation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API change requests",
    "spec_name": "servicenow_api_change_requests"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_change_tasks

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "change_task_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Change task number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Parent change request sys_id",
      "name": "change_request_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignment group sys_id",
      "name": "assignment_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assigned user sys_id",
      "name": "assigned_to_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Change task observations for implementation steps, owners, and change execution tracking.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API change tasks",
    "spec_name": "servicenow_api_change_tasks"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "request_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Request number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Requested-for user sys_id",
      "name": "requested_for_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opened-by user sys_id",
      "name": "opened_by_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Request state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Approval state",
      "name": "approval",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Request price",
      "name": "price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Service request observations for requested work, requester context, approval, and fulfillment status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API requests",
    "spec_name": "servicenow_api_requests"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_requested_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "requested_item_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested item number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Parent request sys_id",
      "name": "request_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog item sys_id",
      "name": "catalog_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested item state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment stage",
      "name": "stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignment group sys_id",
      "name": "assignment_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Requested item observations for catalog fulfillment, variables, assignment, and item-level status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API requested items",
    "spec_name": "servicenow_api_requested_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_catalog_tasks

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "catalog_task_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog task number",
      "name": "number",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "Requested item sys_id",
      "name": "requested_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assignment group sys_id",
      "name": "assignment_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assigned user sys_id",
      "name": "assigned_to_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog task observations for request fulfillment work, owners, and task state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API catalog tasks",
    "spec_name": "servicenow_api_catalog_tasks"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_catalog_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "catalog_item_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog item name",
      "name": "catalog_item_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog category sys_id",
      "name": "category_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Fulfillment workflow sys_id",
      "name": "workflow_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog item observations for available services, request forms, and fulfillment routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API catalog items",
    "spec_name": "servicenow_api_catalog_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_approvals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "approval_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Approving record sys_id",
      "name": "approving_record_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Approver user sys_id",
      "name": "approver_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Approval state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source table",
      "name": "source_table",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Approval due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Approval observations for requested approvals, approvers, approval state, and parent records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API approvals",
    "spec_name": "servicenow_api_approvals"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_cmdb_configuration_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ci_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Configuration item name",
      "name": "ci_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Configuration item class",
      "name": "ci_class",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Install status",
      "name": "install_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Operational status",
      "name": "operational_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owned-by user sys_id",
      "name": "owned_by_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Support group sys_id",
      "name": "support_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "CMDB configuration item observations for services, applications, infrastructure, ownership, and operational impact.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API CMDB configuration items",
    "spec_name": "servicenow_api_cmdb_configuration_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_cmdb_relationships

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "relationship_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent CI sys_id",
      "name": "parent_ci_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Child CI sys_id",
      "name": "child_ci_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Relationship type",
      "name": "relationship_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "CMDB relationship observations for dependency mapping and blast-radius analysis.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API CMDB relationships",
    "spec_name": "servicenow_api_cmdb_relationships"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_service_offerings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "service_offering_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Service offering name",
      "name": "offering_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent service sys_id",
      "name": "service_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owned-by user sys_id",
      "name": "owned_by_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Support group sys_id",
      "name": "support_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Operational status",
      "name": "operational_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Service offering observations for service ownership, catalog visibility, and operational support context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API service offerings",
    "spec_name": "servicenow_api_service_offerings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_sla_tasks

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sla_task_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Task sys_id",
      "name": "task_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SLA definition sys_id",
      "name": "sla_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SLA stage",
      "name": "stage",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Business elapsed percentage",
      "name": "business_percentage",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Planned end timestamp",
      "name": "planned_end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Breach flag",
      "name": "has_breached",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "SLA task observations for response/resolve deadlines, breach status, and service performance review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API SLA tasks",
    "spec_name": "servicenow_api_sla_tasks"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_knowledge_articles

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "knowledge_article_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Knowledge article number",
      "name": "number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow state",
      "name": "workflow_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Knowledge base sys_id",
      "name": "knowledge_base_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Author user sys_id",
      "name": "author_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Published timestamp",
      "name": "published_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Knowledge article observations for support content, publish state, ownership, and related resolution context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API knowledge articles",
    "spec_name": "servicenow_api_knowledge_articles"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_attachments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "attachment_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target table name",
      "name": "table_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Target record sys_id",
      "name": "table_sys_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "File name",
      "name": "file_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content type",
      "name": "content_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "File size in bytes",
      "name": "size_bytes",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Attachment observations for files linked to incidents, changes, requests, knowledge, and CMDB records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API attachments",
    "spec_name": "servicenow_api_attachments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_users

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "user_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized username",
      "name": "user_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized email reference",
      "name": "email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Department sys_id",
      "name": "department_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company sys_id",
      "name": "company_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "User observations for callers, assignees, approvers, ownership, and audit context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API users",
    "spec_name": "servicenow_api_users"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "group_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Group name",
      "name": "group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Manager user sys_id",
      "name": "manager_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent group sys_id",
      "name": "parent_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Group observations for assignment groups, support groups, and approval routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API groups",
    "spec_name": "servicenow_api_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_departments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "department_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Department name",
      "name": "department_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent department sys_id",
      "name": "parent_department_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Department head user sys_id",
      "name": "dept_head_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Department observations for requester context, cost ownership, and routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API departments",
    "spec_name": "servicenow_api_departments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_companies

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "company_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company name",
      "name": "company_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer flag",
      "name": "customer",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Vendor flag",
      "name": "vendor",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Manufacturer flag",
      "name": "manufacturer",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Company observations for customer, vendor, or internal company context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API companies",
    "spec_name": "servicenow_api_companies"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_journal_entries

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "journal_entry_sys_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent record sys_id",
      "name": "element_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Table name",
      "name": "name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Journal element",
      "name": "element",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed created-by user",
      "name": "created_by_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Short journal summary",
      "name": "value_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Journal entry observations for comments, work notes, and activity history on task records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API journal entries",
    "spec_name": "servicenow_api_journal_entries"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source table",
      "name": "source_table",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Record sys_id",
      "name": "record_sys_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook or outbound event observations for changed ITSM records and sync replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow API webhook events",
    "spec_name": "servicenow_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_agent_api_incident_create_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "incident_create_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "assignment_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Short description",
      "name": "short_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed priority",
      "name": "proposed_priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed impact",
      "name": "proposed_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed urgency",
      "name": "proposed_urgency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Caller user sys_id",
      "name": "caller_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed incident creation proposals before outbound ServiceNow sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow agent API incident create proposals",
    "spec_name": "servicenow_agent_api_incident_create_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_agent_api_incident_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "incident_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "incident_sys_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Incident number",
      "name": "number",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed incident update proposals before outbound ServiceNow sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow agent API incident updates",
    "spec_name": "servicenow_agent_api_incident_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_agent_api_change_request_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "change_request_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "change_request_sys_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Change request number",
      "name": "number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested change type",
      "name": "requested_change_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed risk",
      "name": "proposed_risk",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Planned start timestamp",
      "name": "planned_start_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Planned end timestamp",
      "name": "planned_end_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed change request creation/update proposals before outbound ServiceNow sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow agent API change request proposals",
    "spec_name": "servicenow_agent_api_change_request_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_agent_api_request_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "request_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "request_sys_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Request number",
      "name": "number",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed service request update proposals before outbound ServiceNow sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow agent API request updates",
    "spec_name": "servicenow_agent_api_request_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### servicenow_agent_api_knowledge_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "knowledge_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "knowledge_article_sys_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Knowledge article number",
      "name": "number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current value",
      "name": "current_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed value",
      "name": "proposed_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed knowledge article update proposals before outbound ServiceNow sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "ServiceNow agent API knowledge updates",
    "spec_name": "servicenow_agent_api_knowledge_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "servicenow_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### google_ads_marketing_library

- Type: collection
- Domains: marketing, commerce
- Direct systems: Google Ads, Ad platforms
- Coverage: Core
- Version: 1.0.0
- Summary: Google Ads specs for customers, account hierarchy, campaigns, budgets, bidding strategies, ad groups, ads, assets, criteria, asset groups, conversion setup, search terms, performance reporting, recommendations, change events, offline conversion uploads, and governed campaign updates.
- Coverage notes: Covers common Google Ads resources and reporting observations that agents use for campaign review, budget pacing, search-term review, conversion-health checks, and approval-first outbound updates. It does not mirror every GAQL report view, mutate operation, policy detail, experiment, audience, billing object, or account-admin record.
- Source docs: [Google Ads API introduction](https://developers.google.com/google-ads/api/docs/get-started/introduction), [Google Ads API fields and resources](https://developers.google.com/google-ads/api/fields/v24/overview), [Google Ads conversion management](https://developers.google.com/google-ads/api/docs/conversions/overview)

#### Next objects
- audiences
- experiments
- shared_sets
- account_budgets
- billing_setups
- invoices
- campaign_groups
- local_services_ads
- customer_user_access

#### Omitted objects
- OAuth/token management
- raw user emails
- complete policy detail payloads
- all GAQL report views
- full billing documents
- every mutate operation

#### Needs
- A Google Ads agent/operator role. The generated calls use google_ads_agent.

#### Useful for
- Campaign and budget review
- Marketing finance reporting
- Search-term mining
- Negative keyword proposals
- Conversion setup checks
- Performance Max and Shopping product review
- Governed campaign updates

#### Extend with
- Links from Shopify/Square/Stripe revenue observations into performance reporting
- Links from search term observations into negative keyword proposals
- Links from CRM lead quality observations into offline conversion upload packets

#### Links
- google_ads_agent_api_campaign_budget_updates -> google_ads_api_campaign_budgets (source_link): Budget update proposals cite the current budget observation.
- google_ads_agent_api_campaign_status_updates -> google_ads_api_campaigns (source_link): Campaign status proposals cite the current campaign observation.
- google_ads_agent_api_ad_group_bid_updates -> google_ads_api_ad_groups (source_link): Ad group bid proposals cite the current ad group observation.
- google_ads_agent_api_keyword_updates -> google_ads_api_ad_group_criteria (source_link): Keyword update proposals cite the current ad group criterion observation.
- google_ads_agent_api_negative_keyword_proposals -> google_ads_api_search_terms (source_link): Negative keyword proposals cite search term observations.
- google_ads_agent_api_offline_conversion_uploads -> google_ads_api_conversion_actions (source_link): Offline conversion upload packets cite the target conversion action.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| google_ads_api_customers | Google Ads, Ad platforms | Observation | Customer account observations. |
| google_ads_api_customer_clients | Google Ads, Ad platforms | Observation | Manager-account hierarchy observations. |
| google_ads_api_campaigns | Google Ads, Ad platforms | Observation | Campaign observations. |
| google_ads_api_campaign_budgets | Google Ads, Ad platforms | Observation | Campaign budget observations. |
| google_ads_api_bidding_strategies | Google Ads, Ad platforms | Observation | Bidding strategy observations. |
| google_ads_api_ad_groups | Google Ads, Ad platforms | Observation | Ad group observations. |
| google_ads_api_ad_group_ads | Google Ads, Ad platforms | Observation | Ad creative observations. |
| google_ads_api_assets | Google Ads, Ad platforms | Observation | Reusable creative asset observations. |
| google_ads_api_campaign_assets | Google Ads, Ad platforms | Observation | Campaign asset link observations. |
| google_ads_api_ad_group_criteria | Google Ads, Ad platforms | Observation | Ad group targeting and keyword observations. |
| google_ads_api_campaign_criteria | Google Ads, Ad platforms | Observation | Campaign-level targeting observations. |
| google_ads_api_asset_groups | Google Ads, Ad platforms | Observation | Performance Max asset group observations. |
| google_ads_api_conversion_actions | Google Ads, Ad platforms | Observation | Conversion setup observations. |
| google_ads_api_campaign_conversion_goals | Google Ads, Ad platforms | Observation | Campaign conversion goal observations. |
| google_ads_api_search_terms | Google Ads, Ad platforms | Observation | Search term performance observations. |
| google_ads_api_performance_metrics | Google Ads, Ad platforms | Observation | Daily performance metric observations. |
| google_ads_api_geographic_performance | Google Ads, Ad platforms | Observation | Geographic performance observations. |
| google_ads_api_product_performance | Google Ads, Ad platforms | Observation | Shopping and product performance observations. |
| google_ads_api_recommendations | Google Ads, Ad platforms | Observation | Recommendation observations. |
| google_ads_api_change_events | Google Ads, Ad platforms | Observation | Account change event observations. |
| google_ads_api_offline_conversion_uploads | Google Ads, Ad platforms | Observation | Offline conversion upload health observations. |
| google_ads_agent_api_campaign_budget_updates | Google Ads, Ad platforms | Commitment workflow | Governed campaign budget updates. |
| google_ads_agent_api_campaign_status_updates | Google Ads, Ad platforms | Commitment workflow | Governed campaign status updates. |
| google_ads_agent_api_ad_group_bid_updates | Google Ads, Ad platforms | Commitment workflow | Governed ad group bid updates. |
| google_ads_agent_api_keyword_updates | Google Ads, Ad platforms | Commitment workflow | Governed keyword updates. |
| google_ads_agent_api_negative_keyword_proposals | Google Ads, Ad platforms | Commitment workflow | Governed negative keyword proposals. |
| google_ads_agent_api_offline_conversion_uploads | Google Ads, Ad platforms | Commitment workflow | Governed offline conversion upload packets. |

#### create_spec calls

##### google_ads_api_customers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer descriptive name",
      "name": "descriptive_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account time zone",
      "name": "time_zone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Manager account flag",
      "name": "manager",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Test account flag",
      "name": "test_account",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer account observations for account identity, status, currency, time zone, and manager context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API customers",
    "spec_name": "google_ads_api_customers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_customer_clients

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "customer_client_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Manager customer id",
      "name": "manager_customer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Client customer id",
      "name": "client_customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hierarchy level",
      "name": "level",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Client descriptive name",
      "name": "descriptive_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Client status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Manager-account child customer observations for account hierarchy and managed customer visibility.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API customer clients",
    "spec_name": "google_ads_api_customer_clients"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertising channel type",
      "name": "advertising_channel_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bidding strategy type",
      "name": "bidding_strategy_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign budget id",
      "name": "campaign_budget_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign observations for status, channel type, bidding, budget linkage, and serving configuration.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API campaigns",
    "spec_name": "google_ads_api_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_campaign_budgets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_budget_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Budget name",
      "name": "budget_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount in micros",
      "name": "amount_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Delivery method",
      "name": "delivery_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Explicitly shared flag",
      "name": "explicitly_shared",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign budget observations for spend limits, delivery method, sharing, and budget governance.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API campaign budgets",
    "spec_name": "google_ads_api_campaign_budgets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_bidding_strategies

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bidding_strategy_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Strategy name",
      "name": "strategy_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Strategy type",
      "name": "strategy_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Strategy status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target CPA in micros",
      "name": "target_cpa_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Target ROAS",
      "name": "target_roas",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bidding strategy observations for portfolio bidding, targets, and automated bidding review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API bidding strategies",
    "spec_name": "google_ads_api_bidding_strategies"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_ad_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ad_group_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ad group name",
      "name": "ad_group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group type",
      "name": "type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "CPC bid in micros",
      "name": "cpc_bid_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad group observations for campaign structure, status, type, bids, and targeting context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API ad groups",
    "spec_name": "google_ads_api_ad_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_ad_group_ads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ad_group_ad_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ad id",
      "name": "ad_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad type",
      "name": "ad_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad strength",
      "name": "ad_strength",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Policy approval status",
      "name": "policy_approval_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad observations for creative status, ad type, strength, policy summary, and ad group context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API ad group ads",
    "spec_name": "google_ads_api_ad_group_ads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_assets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "asset_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Asset name",
      "name": "asset_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset type",
      "name": "asset_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset source",
      "name": "source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Policy approval status",
      "name": "policy_approval_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Asset observations for images, text, sitelinks, callouts, videos, and other reusable creative inputs.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API assets",
    "spec_name": "google_ads_api_assets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_campaign_assets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_asset_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Asset id",
      "name": "asset_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Asset field type",
      "name": "field_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Link status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign asset link observations connecting reusable assets to campaigns.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API campaign assets",
    "spec_name": "google_ads_api_campaign_assets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_ad_group_criteria

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "criterion_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Criterion type",
      "name": "criterion_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword text",
      "name": "keyword_text",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword match type",
      "name": "match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative criterion flag",
      "name": "negative",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Criterion status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad group criterion observations for keywords, audiences, placements, demographics, negatives, and targeting review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API ad group criteria",
    "spec_name": "google_ads_api_ad_group_criteria"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_campaign_criteria

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_criterion_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Criterion type",
      "name": "criterion_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative criterion flag",
      "name": "negative",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Criterion status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Criterion display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign criterion observations for geo, language, audience, negative, and campaign-level targeting review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API campaign criteria",
    "spec_name": "google_ads_api_campaign_criteria"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_asset_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "asset_group_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Asset group name",
      "name": "asset_group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset group status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Final URL",
      "name": "final_url",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Performance Max asset group observations for asset collection, listing group context, and campaign organization.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API asset groups",
    "spec_name": "google_ads_api_asset_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_conversion_actions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "conversion_action_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Conversion action name",
      "name": "conversion_action_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion action type",
      "name": "type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion action status",
      "name": "status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Included in conversions flag",
      "name": "include_in_conversions_metric",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Conversion action observations for conversion tracking setup, category, status, value settings, and upload readiness.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API conversion actions",
    "spec_name": "google_ads_api_conversion_actions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_campaign_conversion_goals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_conversion_goal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Conversion goal category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion origin",
      "name": "origin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Biddable flag",
      "name": "biddable",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign conversion goal observations for campaign-specific optimization goals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API campaign conversion goals",
    "spec_name": "google_ads_api_campaign_conversion_goals"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_search_terms

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "search_term_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized search term",
      "name": "search_term_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Search term match type",
      "name": "match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Cost in micros",
      "name": "cost_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Search term observations for query review, keyword mining, and negative keyword opportunities.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API search terms",
    "spec_name": "google_ads_api_search_terms"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_performance_metrics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "performance_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Cost in micros",
      "name": "cost_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Conversions",
      "name": "conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Conversion value",
      "name": "conversion_value",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Daily performance observations for campaign/ad group/ad/keyword reporting and marketing finance review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API performance metrics",
    "spec_name": "google_ads_api_performance_metrics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_geographic_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "geo_performance_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Geo target id",
      "name": "geo_target_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Cost in micros",
      "name": "cost_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Geographic performance observations for market, location, and region-level optimization review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API geographic performance",
    "spec_name": "google_ads_api_geographic_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_product_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_performance_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant id",
      "name": "merchant_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product item id",
      "name": "product_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product brand",
      "name": "product_brand",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Conversions",
      "name": "conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shopping and Performance Max product performance observations for item, brand, category, and merchant reporting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API product performance",
    "spec_name": "google_ads_api_product_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_recommendations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "recommendation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Recommendation type",
      "name": "recommendation_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Base cost in micros",
      "name": "impact_base_metrics_cost_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Potential conversions",
      "name": "impact_potential_metrics_conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Dismissed flag",
      "name": "dismissed",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Recommendation observations for optimization score, proposed actions, and agent review queues.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API recommendations",
    "spec_name": "google_ads_api_recommendations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_change_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "change_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Change timestamp",
      "name": "change_date_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Changed resource type",
      "name": "change_resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Changed resource name",
      "name": "changed_resource_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed user email",
      "name": "user_email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Change event observations for account history, actor, resource changes, and sync replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API change events",
    "spec_name": "google_ads_api_change_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_api_offline_conversion_uploads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "offline_conversion_upload_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Upload job id",
      "name": "job_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion action id",
      "name": "conversion_action_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Uploaded timestamp",
      "name": "uploaded_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Successful event count",
      "name": "successful_event_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Failed event count",
      "name": "failed_event_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Offline conversion upload observations for job diagnostics, counts, and upload health.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads API offline conversion uploads",
    "spec_name": "google_ads_api_offline_conversion_uploads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_campaign_budget_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_budget_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_budget_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current budget amount in micros",
      "name": "current_amount_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed budget amount in micros",
      "name": "proposed_amount_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed campaign budget update proposals before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API campaign budget updates",
    "spec_name": "google_ads_agent_api_campaign_budget_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_campaign_status_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_status_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current campaign status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed campaign status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed campaign status update proposals before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API campaign status updates",
    "spec_name": "google_ads_agent_api_campaign_status_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_ad_group_bid_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "ad_group_bid_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "ad_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current CPC bid in micros",
      "name": "current_cpc_bid_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed CPC bid in micros",
      "name": "proposed_cpc_bid_micros",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed ad group bid update proposals before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API ad group bid updates",
    "spec_name": "google_ads_agent_api_ad_group_bid_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_keyword_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "keyword_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "criterion_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword text",
      "name": "keyword_text",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Match type",
      "name": "match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested keyword update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed keyword/criterion update proposals before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API keyword updates",
    "spec_name": "google_ads_agent_api_keyword_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_negative_keyword_proposals

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "negative_keyword_proposal_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "search_term_observation_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized search term",
      "name": "search_term_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed negative match type",
      "name": "proposed_match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed negative keyword proposals from search-term findings before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API negative keyword proposals",
    "spec_name": "google_ads_agent_api_negative_keyword_proposals",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_ads_agent_api_offline_conversion_uploads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "offline_conversion_upload_commitment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "conversion_action_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Customer id",
      "name": "customer_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Upload job id",
      "name": "job_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Conversion event count",
      "name": "conversion_event_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Total conversion value",
      "name": "conversion_value_total",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed offline conversion upload packets before outbound Google Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Ads agent API offline conversion uploads",
    "spec_name": "google_ads_agent_api_offline_conversion_uploads",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### google_analytics_measurement_library

- Type: collection
- Domains: marketing, commerce
- Direct systems: Google Analytics
- Coverage: Core
- Version: 1.0.0
- Summary: Google Analytics specs for accounts, GA4 properties, data streams, event reports, page reports, acquisition reports, ecommerce reports, key events, audiences, custom definitions, realtime snapshots, and governed GA4 configuration updates.
- Coverage notes: Covers common GA4 reporting and configuration objects agents use for marketing measurement, ecommerce analysis, funnel review, and careful GA4 setup changes. It does not mirror every Data API dimension or metric, attribution report, user permission, tag setting, or early-preview Admin API feature.
- Source docs: [Google Analytics Data API runReport](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport), [Google Analytics dimensions and metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema), [Google Analytics Admin API overview](https://developers.google.com/analytics/devguides/config/admin/v1)

#### Next objects
- attribution_reports
- funnel_reports
- cohort_reports
- user_permissions
- google_ads_links
- bigquery_links
- data_retention_settings
- measurement_protocol_secrets

#### Omitted objects
- OAuth/token management
- raw client identifiers
- raw page URLs
- complete user-level event export
- every Data API dimension/metric combination

#### Needs
- A Google Analytics agent/operator role. The generated calls use google_analytics_agent.

#### Useful for
- Website and app measurement memory
- Funnel and ecommerce reporting
- Paid-media performance review
- GA4 setup checks
- Governed audience and key-event changes

#### Extend with
- Links from Google Ads campaigns into acquisition reports
- Links from Shopify/Square/Stripe revenue observations into ecommerce reports
- Search Console query/page observations alongside page reports

#### Links
- google_analytics_agent_api_audience_updates -> google_analytics_api_audiences (source_link): Audience update proposals cite the current audience observation.
- google_analytics_agent_api_key_event_updates -> google_analytics_api_key_events (source_link): Key event update proposals cite the current key event observation.
- google_analytics_agent_api_custom_definition_updates -> google_analytics_api_custom_dimensions (source_link): Custom definition proposals can cite current custom dimension observations.
- google_analytics_agent_api_custom_definition_updates -> google_analytics_api_custom_metrics (source_link): Custom definition proposals can cite current custom metric observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| google_analytics_api_accounts | Google Analytics | Observation | GA4 account observations. |
| google_analytics_api_properties | Google Analytics | Observation | GA4 property observations. |
| google_analytics_api_data_streams | Google Analytics | Observation | Data stream observations. |
| google_analytics_api_events_report | Google Analytics | Observation | Event report observations. |
| google_analytics_api_page_report | Google Analytics | Observation | Page and screen report observations. |
| google_analytics_api_acquisition_report | Google Analytics | Observation | Traffic acquisition observations. |
| google_analytics_api_ecommerce_report | Google Analytics | Observation | Ecommerce report observations. |
| google_analytics_api_key_events | Google Analytics | Observation | Key event observations. |
| google_analytics_api_audiences | Google Analytics | Observation | Audience observations. |
| google_analytics_api_custom_dimensions | Google Analytics | Observation | Custom dimension observations. |
| google_analytics_api_custom_metrics | Google Analytics | Observation | Custom metric observations. |
| google_analytics_api_realtime_snapshots | Google Analytics | Observation | Realtime snapshot observations. |
| google_analytics_agent_api_audience_updates | Google Analytics | Commitment workflow | Governed audience updates. |
| google_analytics_agent_api_key_event_updates | Google Analytics | Commitment workflow | Governed key event updates. |
| google_analytics_agent_api_custom_definition_updates | Google Analytics | Commitment workflow | Governed custom definition updates. |

#### create_spec calls

##### google_analytics_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region code",
      "name": "region_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Account observations for GA4 account identity, ownership, and access review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API accounts",
    "spec_name": "google_analytics_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_properties

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "property_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Property display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Reporting time zone",
      "name": "time_zone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "GA4 property observations for property identity, currency, time zone, and lifecycle status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API properties",
    "spec_name": "google_analytics_api_properties"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_data_streams

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "data_stream_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Stream display name",
      "name": "stream_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Stream type",
      "name": "stream_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Measurement id or app stream id",
      "name": "measurement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Web and app data stream observations for measurement ids, stream type, and collection health.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API data streams",
    "spec_name": "google_analytics_api_data_streams"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_events_report

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "event_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event name",
      "name": "event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event count",
      "name": "event_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Active users",
      "name": "active_users",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Total revenue",
      "name": "total_revenue",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Event-level reporting observations for event names, counts, users, revenue, and date ranges.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API events report",
    "spec_name": "google_analytics_api_events_report"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_page_report

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "page_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page path or screen token",
      "name": "page_path_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Views",
      "name": "screen_page_views",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Active users",
      "name": "active_users",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Engagement rate",
      "name": "engagement_rate",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Page and screen reporting observations for content performance, views, users, and engagement.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API page report",
    "spec_name": "google_analytics_api_page_report"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_acquisition_report

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "acquisition_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Session source",
      "name": "session_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Session medium",
      "name": "session_medium",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Session campaign",
      "name": "session_campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sessions",
      "name": "sessions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Conversions",
      "name": "conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Traffic acquisition observations for source, medium, campaign, users, sessions, and conversions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API acquisition report",
    "spec_name": "google_analytics_api_acquisition_report"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_ecommerce_report

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ecommerce_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item id",
      "name": "item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item name",
      "name": "item_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Items purchased",
      "name": "items_purchased",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Item revenue",
      "name": "item_revenue",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ecommerce reporting observations for items, purchases, revenue, and funnel review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API ecommerce report",
    "spec_name": "google_analytics_api_ecommerce_report"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_key_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "key_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event name",
      "name": "event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Counting method",
      "name": "counting_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Default event value",
      "name": "default_value",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Key event observations for conversion-important events and reporting configuration.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API key events",
    "spec_name": "google_analytics_api_key_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_audiences

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "audience_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Audience name",
      "name": "audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Membership duration days",
      "name": "membership_duration_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Ads personalization flag",
      "name": "ads_personalization_enabled",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Audience observations for audience definitions, membership windows, and activation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API audiences",
    "spec_name": "google_analytics_api_audiences"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_custom_dimensions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "custom_dimension_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Parameter name",
      "name": "parameter_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Dimension scope",
      "name": "scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Custom dimension observations for event/user/item-scoped reporting fields.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API custom dimensions",
    "spec_name": "google_analytics_api_custom_dimensions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_custom_metrics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "custom_metric_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Parameter name",
      "name": "parameter_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Measurement unit",
      "name": "measurement_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Custom metric observations for typed event metrics and reporting availability.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API custom metrics",
    "spec_name": "google_analytics_api_custom_metrics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_api_realtime_snapshots

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "realtime_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Capture minute",
      "name": "captured_minute",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active users",
      "name": "active_users",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Top event name",
      "name": "top_event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed top page path",
      "name": "top_page_path_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Realtime reporting observations for active users, current pages, campaigns, and events.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics API realtime snapshots",
    "spec_name": "google_analytics_api_realtime_snapshots"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_agent_api_audience_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "audience_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "audience_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current audience name",
      "name": "current_audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed audience name",
      "name": "proposed_audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed membership duration days",
      "name": "proposed_membership_duration_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed GA4 audience create/update proposals before outbound Google Analytics sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics agent API audience updates",
    "spec_name": "google_analytics_agent_api_audience_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_agent_api_key_event_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "key_event_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "key_event_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event name",
      "name": "event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current counting method",
      "name": "current_counting_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed counting method",
      "name": "proposed_counting_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed key event configuration proposals before outbound Google Analytics sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics agent API key event updates",
    "spec_name": "google_analytics_agent_api_key_event_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_analytics_agent_api_custom_definition_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "custom_definition_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "custom_definition_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Property id",
      "name": "property_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Dimension or metric",
      "name": "definition_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parameter name",
      "name": "parameter_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Scope or unit",
      "name": "scope_or_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed custom dimension or metric proposals before outbound Google Analytics sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Analytics agent API custom definition updates",
    "spec_name": "google_analytics_agent_api_custom_definition_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_analytics_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### google_merchant_center_commerce_library

- Type: collection
- Domains: commerce, marketing
- Direct systems: Google Merchant Center
- Coverage: Core
- Version: 1.0.0
- Summary: Google Merchant Center specs for accounts, account issues, processed products, product inputs, product issues, data sources, upload health, local and regional inventory, promotions, performance reports, competitive visibility, conversion sources, programs, return policies, shipping settings, reviews, and governed catalog updates.
- Coverage notes: Covers common Merchant API surfaces for catalog health, Shopping visibility, product data operations, inventory, promotions, and approval-first catalog changes. It does not mirror every report, every advanced account setting, all review feed details, or broad write access to Merchant Center.
- Source docs: [Merchant API overview](https://developers.google.com/merchant/api), [Merchant Products API overview](https://developers.google.com/merchant/api/guides/products/overview), [Merchant data sources overview](https://developers.google.com/merchant/api/guides/data-sources/overview)

#### Next objects
- checkout_settings
- order_tracking_signals
- css_programs
- product_studio_text_suggestions
- product_studio_images
- account_relationships
- user_access
- regional_shipping_services

#### Omitted objects
- OAuth/token management
- raw customer review text
- every Merchant Center report query
- advanced account-only feed rules
- complete account access-control metadata

#### Needs
- A Google Merchant Center agent/operator role. The generated calls use google_merchant_center_agent.

#### Useful for
- Shopping catalog memory
- Product approval monitoring
- Feed and data source health
- Local inventory review
- Promotion readiness
- Governed product and inventory updates

#### Extend with
- Links from Shopify products into product input update proposals
- Links from Google Ads product performance into product issue review
- Links from Search Console product-page findings into Merchant Center issue queues

#### Links
- google_merchant_center_agent_api_product_input_updates -> google_merchant_center_api_product_inputs (source_link): Product input update proposals cite submitted product input observations.
- google_merchant_center_agent_api_product_input_updates -> google_merchant_center_api_product_issues (source_link): Product input update proposals can cite product issue observations.
- google_merchant_center_agent_api_inventory_updates -> google_merchant_center_api_local_inventories (source_link): Inventory update proposals can cite local inventory observations.
- google_merchant_center_agent_api_inventory_updates -> google_merchant_center_api_regional_inventories (source_link): Inventory update proposals can cite regional inventory observations.
- google_merchant_center_agent_api_promotion_updates -> google_merchant_center_api_promotions (source_link): Promotion update proposals cite current promotion observations.
- google_merchant_center_agent_api_data_source_updates -> google_merchant_center_api_data_sources (source_link): Data source update proposals cite current data source observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| google_merchant_center_api_accounts | Google Merchant Center | Observation | Merchant account observations. |
| google_merchant_center_api_account_issues | Google Merchant Center | Observation | Account issue observations. |
| google_merchant_center_api_products | Google Merchant Center | Observation | Processed product observations. |
| google_merchant_center_api_product_inputs | Google Merchant Center | Observation | Product input observations. |
| google_merchant_center_api_product_issues | Google Merchant Center | Observation | Product issue observations. |
| google_merchant_center_api_data_sources | Google Merchant Center | Observation | Data source observations. |
| google_merchant_center_api_file_uploads | Google Merchant Center | Observation | File upload health observations. |
| google_merchant_center_api_local_inventories | Google Merchant Center | Observation | Local inventory observations. |
| google_merchant_center_api_regional_inventories | Google Merchant Center | Observation | Regional inventory observations. |
| google_merchant_center_api_promotions | Google Merchant Center | Observation | Promotion observations. |
| google_merchant_center_api_performance_report | Google Merchant Center | Observation | Shopping performance observations. |
| google_merchant_center_api_competitive_visibility | Google Merchant Center | Observation | Competitive visibility observations. |
| google_merchant_center_api_conversion_sources | Google Merchant Center | Observation | Conversion source observations. |
| google_merchant_center_api_programs | Google Merchant Center | Observation | Shopping program observations. |
| google_merchant_center_api_return_policies | Google Merchant Center | Observation | Return policy observations. |
| google_merchant_center_api_shipping_settings | Google Merchant Center | Observation | Shipping settings observations. |
| google_merchant_center_api_product_reviews | Google Merchant Center | Observation | Product review observations. |
| google_merchant_center_api_merchant_reviews | Google Merchant Center | Observation | Merchant review observations. |
| google_merchant_center_agent_api_product_input_updates | Google Merchant Center | Commitment workflow | Governed product input updates. |
| google_merchant_center_agent_api_inventory_updates | Google Merchant Center | Commitment workflow | Governed inventory updates. |
| google_merchant_center_agent_api_promotion_updates | Google Merchant Center | Commitment workflow | Governed promotion updates. |
| google_merchant_center_agent_api_data_source_updates | Google Merchant Center | Commitment workflow | Governed data source updates. |

#### create_spec calls

##### google_merchant_center_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "merchant_account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account display name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent merchant account id",
      "name": "parent_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Merchant account observations for account identity, type, relationship, and operational status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API accounts",
    "spec_name": "google_merchant_center_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_account_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Affected destination",
      "name": "destination",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Account issue observations for policy, setup, verification, and account-health review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API account issues",
    "spec_name": "google_merchant_center_api_account_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Offer id",
      "name": "offer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content language",
      "name": "content_language",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Feed label",
      "name": "feed_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Availability",
      "name": "availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Processed product observations for final catalog state, destinations, approval, and item visibility.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API products",
    "spec_name": "google_merchant_center_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_product_inputs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_input_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Data source id",
      "name": "data_source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Offer id",
      "name": "offer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Channel",
      "name": "channel",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content language",
      "name": "content_language",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Feed label",
      "name": "feed_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Submitted product input observations for primary and supplemental product data before processing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API product inputs",
    "spec_name": "google_merchant_center_api_product_inputs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_product_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Affected destination",
      "name": "destination",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product issue observations for disapprovals, warnings, destination impacts, and remediation queues.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API product issues",
    "spec_name": "google_merchant_center_api_product_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_data_sources

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "data_source_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Data source display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Input type",
      "name": "input",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Data source type",
      "name": "data_source_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Feed label",
      "name": "feed_label",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content language",
      "name": "content_language",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Data source observations for product, inventory, promotion, review, and feed configuration.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API data sources",
    "spec_name": "google_merchant_center_api_data_sources"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_file_uploads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "file_upload_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Data source id",
      "name": "data_source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Processing state",
      "name": "processing_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total item count",
      "name": "items_total",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Failed item count",
      "name": "items_failed",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Data source file upload observations for processing status, failures, and freshness review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API file uploads",
    "spec_name": "google_merchant_center_api_file_uploads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_local_inventories

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "local_inventory_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Store code",
      "name": "store_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Availability",
      "name": "availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Local inventory observations for store-level item availability, price, pickup, and quantity.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API local inventories",
    "spec_name": "google_merchant_center_api_local_inventories"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_regional_inventories

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "regional_inventory_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region id",
      "name": "region_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Availability",
      "name": "availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Regional inventory observations for regional availability, price, and shipping visibility.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API regional inventories",
    "spec_name": "google_merchant_center_api_regional_inventories"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_promotions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "promotion_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion title",
      "name": "promotion_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Coupon value type",
      "name": "coupon_value_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start time",
      "name": "start_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End time",
      "name": "end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Promotion status",
      "name": "promotion_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Promotion observations for offer eligibility, dates, codes, destinations, and approval state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API promotions",
    "spec_name": "google_merchant_center_api_promotions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_performance_report

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "merchant_performance_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Click-through rate",
      "name": "ctr",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Conversion value",
      "name": "conversion_value",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shopping performance observations for impressions, clicks, CTR, conversions, and revenue by item or date.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API performance report",
    "spec_name": "google_merchant_center_api_performance_report"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_competitive_visibility

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "competitive_visibility_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Brand",
      "name": "brand",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price benchmark amount",
      "name": "price_benchmark_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Competitive visibility observations for category, brand, price, and benchmark review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API competitive visibility",
    "spec_name": "google_merchant_center_api_competitive_visibility"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_conversion_sources

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "conversion_source_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Conversion source name",
      "name": "conversion_source_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source type",
      "name": "source_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Conversion source observations for Merchant Center measurement configuration.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API conversion sources",
    "spec_name": "google_merchant_center_api_conversion_sources"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_programs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "program_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Program name",
      "name": "program_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Participation state",
      "name": "participation_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region code",
      "name": "region_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shopping program observations for enabled destinations and participation status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API programs",
    "spec_name": "google_merchant_center_api_programs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_return_policies

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "return_policy_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Policy name",
      "name": "policy_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country code",
      "name": "country_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return window days",
      "name": "return_window_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Return method",
      "name": "return_method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Return policy observations for online return windows, fees, countries, and policy lifecycle.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API return policies",
    "spec_name": "google_merchant_center_api_return_policies"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_shipping_settings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shipping_setting_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Service name",
      "name": "service_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country code",
      "name": "country_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shipping settings observations for service coverage, rates, countries, and delivery promises.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API shipping settings",
    "spec_name": "google_merchant_center_api_shipping_settings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_product_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed review reference",
      "name": "review_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Rating",
      "name": "rating",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Review state",
      "name": "review_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product review observations for product ratings, review state, and item-level evidence.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API product reviews",
    "spec_name": "google_merchant_center_api_product_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_api_merchant_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "merchant_review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed review reference",
      "name": "review_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Rating",
      "name": "rating",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Review state",
      "name": "review_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Merchant review observations for store ratings, review state, and reputation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center API merchant reviews",
    "spec_name": "google_merchant_center_api_merchant_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_agent_api_product_input_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "product_input_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "product_input_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Offer id",
      "name": "offer_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Data source id",
      "name": "data_source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed title",
      "name": "proposed_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed availability",
      "name": "proposed_availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed price amount",
      "name": "proposed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed product input update proposals before outbound Merchant Center sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center agent API product input updates",
    "spec_name": "google_merchant_center_agent_api_product_input_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_agent_api_inventory_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "inventory_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Local or regional",
      "name": "inventory_scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Store or region id",
      "name": "location_or_region_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed availability",
      "name": "proposed_availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed price amount",
      "name": "proposed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed local or regional inventory update proposals before outbound Merchant Center sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center agent API inventory updates",
    "spec_name": "google_merchant_center_agent_api_inventory_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_agent_api_promotion_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "promotion_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "promotion_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion title",
      "name": "promotion_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start time",
      "name": "start_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End time",
      "name": "end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Promotion status",
      "name": "promotion_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed promotion create/update proposals before outbound Merchant Center sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center agent API promotion updates",
    "spec_name": "google_merchant_center_agent_api_promotion_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_merchant_center_agent_api_data_source_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "data_source_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "data_source_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Merchant account id",
      "name": "merchant_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Data source type",
      "name": "data_source_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed state",
      "name": "proposed_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed data source configuration proposals before outbound Merchant Center sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Merchant Center agent API data source updates",
    "spec_name": "google_merchant_center_agent_api_data_source_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_merchant_center_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### google_search_console_visibility_library

- Type: collection
- Domains: marketing, operations
- Direct systems: Google Search Console
- Coverage: Core
- Version: 1.0.0
- Summary: Google Search Console specs for site properties, search analytics, URL inspection results, sitemap submissions, page indexing findings, enhancement findings, search performance opportunities, and governed inspection/submission requests.
- Coverage notes: Covers common Search Console API and agent-derived search visibility objects for organic search review, indexing triage, and page opportunity tracking. It does not mirror every Search Console UI report, raw query text, raw page URLs, or unsupported crawl diagnostics.
- Source docs: [Search Analytics query](https://developers.google.com/webmaster-tools/v1/searchanalytics/query), [Search Console sites resource](https://developers.google.com/webmaster-tools/v1/sites), [URL Inspection API inspect method](https://developers.google.com/webmaster-tools/v1/urlInspection.index/inspect)

#### Next objects
- rich_result_type_details
- video_indexing_findings
- page_experience_findings
- removal_requests
- manual_actions
- mobile_usability_findings

#### Omitted objects
- OAuth/token management
- raw search queries
- raw page URLs
- complete Search Console UI-only report state
- crawler log ingestion

#### Needs
- A Google Search Console agent/operator role. The generated calls use google_search_console_agent.

#### Useful for
- Organic search performance memory
- Indexing triage
- Search visibility opportunities
- Content update planning
- Site health follow-up

#### Extend with
- Links from page indexing findings into ops_issues
- Links from Search Console page observations into GA4 page reports
- Links from Merchant Center product issues into Search Console URL inspection requests

#### Links
- google_search_console_agent_api_sitemap_submission_requests -> google_search_console_api_sites (source_link): Sitemap submission requests cite the target site property observation.
- google_search_console_agent_api_url_inspection_requests -> google_search_console_api_sites (source_link): URL inspection requests cite the target site property observation.
- google_search_console_agent_api_url_inspection_requests -> google_search_console_api_page_indexing_findings (source_link): URL inspection requests can cite page indexing findings that triggered the inspection.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| google_search_console_api_sites | Google Search Console | Observation | Search Console site observations. |
| google_search_console_api_search_analytics | Google Search Console | Observation | Search analytics observations. |
| google_search_console_api_url_inspection_results | Google Search Console | Observation | URL inspection result observations. |
| google_search_console_api_sitemap_submissions | Google Search Console | Observation | Sitemap submission observations. |
| google_search_console_api_page_indexing_findings | Google Search Console | Observation | Page indexing finding observations. |
| google_search_console_api_enhancement_findings | Google Search Console | Observation | Enhancement finding observations. |
| google_search_console_api_search_performance_opportunities | Google Search Console | Observation | Search performance opportunity observations. |
| google_search_console_agent_api_sitemap_submission_requests | Google Search Console | Commitment workflow | Governed sitemap submission requests. |
| google_search_console_agent_api_url_inspection_requests | Google Search Console | Commitment workflow | Governed URL inspection requests. |

#### create_spec calls

##### google_search_console_api_sites

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "site_url_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed site URL or property token",
      "name": "site_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Permission level",
      "name": "permission_level",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Search Console property observations for site ownership, permission level, and search visibility scope.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API sites",
    "spec_name": "google_search_console_api_sites"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_search_analytics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "search_analytics_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed query text",
      "name": "query_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country",
      "name": "country",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Device",
      "name": "device",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Click-through rate",
      "name": "ctr",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Average position",
      "name": "position",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Search analytics observations for queries, pages, countries, devices, clicks, impressions, CTR, and position.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API search analytics",
    "spec_name": "google_search_console_api_search_analytics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_url_inspection_results

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "url_inspection_result_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed inspected URL",
      "name": "inspected_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inspection timestamp",
      "name": "inspection_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Index status",
      "name": "index_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Coverage state",
      "name": "coverage_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed Google-selected canonical URL",
      "name": "google_canonical_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "URL inspection observations for index status, coverage state, canonical signals, and rich result review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API URL inspection results",
    "spec_name": "google_search_console_api_url_inspection_results"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_sitemap_submissions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sitemap_submission_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed sitemap URL",
      "name": "sitemap_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Submission timestamp",
      "name": "submitted_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Last downloaded timestamp",
      "name": "last_downloaded_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Warning count",
      "name": "warnings",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Error count",
      "name": "errors",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sitemap submission observations for submitted sitemap URLs, last submitted time, and processing state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API sitemap submissions",
    "spec_name": "google_search_console_api_sitemap_submissions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_page_indexing_findings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "page_indexing_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Validation state",
      "name": "validation_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Affected page count",
      "name": "affected_page_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Page indexing finding observations for affected pages, issue groups, and remediation queues.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API page indexing findings",
    "spec_name": "google_search_console_api_page_indexing_findings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_enhancement_findings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "enhancement_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Enhancement type",
      "name": "enhancement_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Validation state",
      "name": "validation_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Affected page count",
      "name": "affected_page_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Enhancement finding observations for structured data, page experience, and rich result eligibility review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API enhancement findings",
    "spec_name": "google_search_console_api_enhancement_findings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_api_search_performance_opportunities

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "search_performance_opportunity_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Site URL id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Opportunity type",
      "name": "opportunity_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed query text",
      "name": "query_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impression delta",
      "name": "impression_delta",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Click delta",
      "name": "click_delta",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Search performance opportunity observations for pages or queries with changing clicks, impressions, CTR, or position.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console API search performance opportunities",
    "spec_name": "google_search_console_api_search_performance_opportunities"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_agent_api_sitemap_submission_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "sitemap_submission_request_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed sitemap URL",
      "name": "sitemap_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Submission reason",
      "name": "submission_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed sitemap submission requests before outbound Search Console sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console agent API sitemap submission requests",
    "spec_name": "google_search_console_agent_api_sitemap_submission_requests",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_search_console_agent_api_url_inspection_requests

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "url_inspection_request_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "site_url_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed inspected URL",
      "name": "inspected_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inspection reason",
      "name": "inspection_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Inspection priority",
      "name": "priority",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed URL inspection requests before an agent asks Search Console for fresh inspection results.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Search Console agent API URL inspection requests",
    "spec_name": "google_search_console_agent_api_url_inspection_requests",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_search_console_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### google_business_profile_local_library

- Type: collection
- Domains: marketing, operations
- Direct systems: Google Business Profile
- Coverage: Core
- Version: 1.0.0
- Summary: Google Business Profile specs for accounts, locations, location insights, reviews, local posts, media, questions, answers, categories, attributes, verifications, notifications, and governed local profile updates.
- Coverage notes: Covers common Business Profile API resources for local listings, reviews, posts, media, Q&A, verification, and location performance. It does not model public scraping, broad account access administration, raw reviewer details, or every specialized location attribute.
- Source docs: [Google Business Profile API reference](https://developers.google.com/my-business/reference/rest), [Business Profile API usage help](https://support.google.com/business/answer/6333473)

#### Next objects
- food_menus
- service_lists
- booking_links
- health_provider_attributes
- insurance_networks
- customer_media_review
- bulk_location_quality

#### Omitted objects
- OAuth/token management
- raw reviewer PII
- public-only profile scraping
- complete admin invitation flows
- every category-specific attribute

#### Needs
- A Google Business Profile agent/operator role. The generated calls use google_business_profile_agent.

#### Useful for
- Local listing memory
- Review response workflow
- Location performance reporting
- Local post governance
- Multi-location operations follow-up

#### Extend with
- Links from location insights into local post proposals
- Links from reviews into review reply proposals
- Links from Search Console and GA4 local landing-page observations into location updates

#### Links
- google_business_profile_agent_api_location_updates -> google_business_profile_api_locations (source_link): Location update proposals cite current location observations.
- google_business_profile_agent_api_review_replies -> google_business_profile_api_reviews (source_link): Review reply proposals cite the review observation.
- google_business_profile_agent_api_local_post_updates -> google_business_profile_api_local_posts (source_link): Local post update proposals cite current post observations when updating existing posts.
- google_business_profile_agent_api_media_updates -> google_business_profile_api_media (source_link): Media update proposals cite current media observations when updating metadata.
- google_business_profile_agent_api_question_answers -> google_business_profile_api_questions (source_link): Question answer proposals cite the customer question observation.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| google_business_profile_api_accounts | Google Business Profile | Observation | Business Profile account observations. |
| google_business_profile_api_locations | Google Business Profile | Observation | Location observations. |
| google_business_profile_api_location_insights | Google Business Profile | Observation | Location insight observations. |
| google_business_profile_api_reviews | Google Business Profile | Observation | Review observations. |
| google_business_profile_api_local_posts | Google Business Profile | Observation | Local post observations. |
| google_business_profile_api_media | Google Business Profile | Observation | Media observations. |
| google_business_profile_api_questions | Google Business Profile | Observation | Question observations. |
| google_business_profile_api_answers | Google Business Profile | Observation | Answer observations. |
| google_business_profile_api_categories | Google Business Profile | Observation | Category observations. |
| google_business_profile_api_attributes | Google Business Profile | Observation | Attribute observations. |
| google_business_profile_api_verifications | Google Business Profile | Observation | Verification observations. |
| google_business_profile_api_notifications | Google Business Profile | Observation | Notification observations. |
| google_business_profile_agent_api_location_updates | Google Business Profile | Commitment workflow | Governed location updates. |
| google_business_profile_agent_api_review_replies | Google Business Profile | Commitment workflow | Governed review replies. |
| google_business_profile_agent_api_local_post_updates | Google Business Profile | Commitment workflow | Governed local post updates. |
| google_business_profile_agent_api_media_updates | Google Business Profile | Commitment workflow | Governed media updates. |
| google_business_profile_agent_api_question_answers | Google Business Profile | Commitment workflow | Governed question answers. |

#### create_spec calls

##### google_business_profile_api_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "business_profile_account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account display name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Business Profile account observations for ownership, account type, and location management.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API accounts",
    "spec_name": "google_business_profile_api_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_locations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "location_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "business_profile_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location name",
      "name": "location_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Primary category",
      "name": "primary_category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Place id",
      "name": "place_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed website URL",
      "name": "website_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Verification state",
      "name": "verification_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Location observations for business identity, category, address token, phone, website, status, and service area.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API locations",
    "spec_name": "google_business_profile_api_locations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_location_insights

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "location_insight_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric name",
      "name": "metric_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric value",
      "name": "metric_value",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Hashed search term",
      "name": "search_term_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Location insight observations for calls, direction requests, website clicks, views, and search terms.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API location insights",
    "spec_name": "google_business_profile_api_location_insights"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_reviews

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "review_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed review reference",
      "name": "review_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Rating",
      "name": "rating",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Review creation timestamp",
      "name": "review_create_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Reply status",
      "name": "reply_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Review observations for rating, reviewer token, comment state, reply status, and location reputation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API reviews",
    "spec_name": "google_business_profile_api_reviews"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_local_posts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "local_post_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Post topic type",
      "name": "post_topic_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed post summary",
      "name": "summary_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Post state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Published timestamp",
      "name": "published_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Local post observations for update, offer, event, and call-to-action review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API local posts",
    "spec_name": "google_business_profile_api_local_posts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_media

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "media_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Media format",
      "name": "media_format",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Media category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Media source",
      "name": "source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed thumbnail URL",
      "name": "thumbnail_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Media observations for location photos, videos, metadata, categories, and customer contributions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API media",
    "spec_name": "google_business_profile_api_media"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_questions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "question_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed question text",
      "name": "question_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creation timestamp",
      "name": "create_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Answer count",
      "name": "answer_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Question observations for customer questions and answer readiness.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API questions",
    "spec_name": "google_business_profile_api_questions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_answers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "answer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Question id",
      "name": "question_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed answer text",
      "name": "answer_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Author type",
      "name": "author_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creation timestamp",
      "name": "create_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Answer observations for posted answers, author type, and question follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API answers",
    "spec_name": "google_business_profile_api_answers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_categories

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "category_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Category display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Service types count",
      "name": "service_types_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Business category observations for available categories and location classification review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API categories",
    "spec_name": "google_business_profile_api_categories"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_attributes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "attribute_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Attribute name",
      "name": "attribute_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Value type",
      "name": "value_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Display name",
      "name": "display_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Attribute observations for location-specific services, amenities, accessibility, and operating details.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API attributes",
    "spec_name": "google_business_profile_api_attributes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_verifications

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "verification_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Verification method",
      "name": "method",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Verification state",
      "name": "state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creation timestamp",
      "name": "create_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Verification observations for location verification state and required follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API verifications",
    "spec_name": "google_business_profile_api_verifications"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_api_notifications

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "business_profile_notification_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "business_profile_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Notification type",
      "name": "notification_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event timestamp",
      "name": "event_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Notification observations for new reviews, location updates, and account-level event replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile API notifications",
    "spec_name": "google_business_profile_api_notifications"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_agent_api_location_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "location_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Account id",
      "name": "business_profile_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed location information update proposals before outbound Business Profile sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile agent API location updates",
    "spec_name": "google_business_profile_agent_api_location_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_agent_api_review_replies

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "review_reply_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "review_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review rating",
      "name": "rating",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Hashed reply text",
      "name": "reply_text_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Reply tone",
      "name": "reply_tone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed review reply proposals before outbound Business Profile sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile agent API review replies",
    "spec_name": "google_business_profile_agent_api_review_replies",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_agent_api_local_post_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "local_post_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "local_post_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Post topic type",
      "name": "post_topic_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed post summary",
      "name": "summary_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Publish start time",
      "name": "publish_start_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Publish end time",
      "name": "publish_end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed local post create/update proposals before outbound Business Profile sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile agent API local post updates",
    "spec_name": "google_business_profile_agent_api_local_post_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_agent_api_media_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "media_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "media_item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Media format",
      "name": "media_format",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Media category",
      "name": "category",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed media URI",
      "name": "media_uri_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed media create/update proposals before outbound Business Profile sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile agent API media updates",
    "spec_name": "google_business_profile_agent_api_media_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### google_business_profile_agent_api_question_answers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "question_answer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "question_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Location id",
      "name": "location_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed question text",
      "name": "question_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed answer text",
      "name": "answer_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Answer source",
      "name": "answer_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed answer proposals before outbound Business Profile sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Google Business Profile agent API question answers",
    "spec_name": "google_business_profile_agent_api_question_answers",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "google_business_profile_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### tiktok_shop_commerce_library

- Type: collection
- Domains: commerce, marketing
- Direct systems: TikTok Shop
- Coverage: Core
- Version: 1.0.0
- Summary: TikTok Shop specs for shops, products, SKUs, inventory, warehouses, orders, order lines, fulfillments, returns, refunds, settlements, statement transactions, promotions, product issues, affiliate content, webhook events, and governed shop updates.
- Coverage notes: Covers common TikTok Shop commerce objects for product, offer, order, fulfillment, return, settlement, and marketplace-health memory. It does not mirror every seller setting, creator program surface, compliance workflow, or restricted write operation.
- Source docs: [TikTok Shop Partner Center documentation](https://partner.tiktokshop.com/docv2), [TikTok Shop order API overview](https://partner.tiktokshop.com/docv2/page/order-api-overview)

#### Next objects
- category_attributes
- product_size_charts
- global_seller_shops
- creator_affiliate_orders
- customer_service_messages
- shipping_provider_services
- shop_performance_scores

#### Omitted objects
- OAuth/token management
- raw buyer PII
- full creator profile payloads
- restricted compliance documents
- every seller settings surface

#### Needs
- A TikTok Shop agent/operator role. The generated calls use tiktok_shop_agent.

#### Useful for
- TikTok Shop catalog memory
- Marketplace order review
- Fulfillment follow-up
- Return and refund review
- Settlement reconciliation
- Shopify/TikTok catalog and inventory comparison

#### Extend with
- Links from Shopify products into TikTok product update proposals
- Links from reconciliation findings into SKU price or inventory updates
- Links from TikTok settlement observations into QuickBooks or NetSuite cash records

#### Links
- tiktok_shop_agent_api_product_updates -> tiktok_shop_api_products (source_link): Product update proposals cite current TikTok Shop product observations.
- tiktok_shop_agent_api_sku_price_updates -> tiktok_shop_api_skus (source_link): SKU price update proposals cite current SKU observations.
- tiktok_shop_agent_api_inventory_updates -> tiktok_shop_api_inventory_levels (source_link): Inventory update proposals cite current inventory observations.
- tiktok_shop_agent_api_fulfillment_updates -> tiktok_shop_api_orders (source_link): Fulfillment update proposals cite current order observations.
- tiktok_shop_agent_api_return_refund_updates -> tiktok_shop_api_returns (source_link): Return/refund proposals cite current return observations.
- tiktok_shop_agent_api_promotion_updates -> tiktok_shop_api_promotions (source_link): Promotion update proposals cite current promotion observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| tiktok_shop_api_shops | TikTok Shop | Observation | TikTok Shop setup observations. |
| tiktok_shop_api_products | TikTok Shop | Observation | TikTok Shop product observations. |
| tiktok_shop_api_skus | TikTok Shop | Observation | TikTok Shop SKU and offer observations. |
| tiktok_shop_api_inventory_levels | TikTok Shop | Observation | TikTok Shop inventory observations. |
| tiktok_shop_api_warehouses | TikTok Shop | Observation | TikTok Shop warehouse observations. |
| tiktok_shop_api_orders | TikTok Shop | Observation | TikTok Shop order observations. |
| tiktok_shop_api_order_lines | TikTok Shop | Observation | TikTok Shop order line observations. |
| tiktok_shop_api_fulfillments | TikTok Shop | Observation | TikTok Shop fulfillment observations. |
| tiktok_shop_api_returns | TikTok Shop | Observation | TikTok Shop return observations. |
| tiktok_shop_api_refunds | TikTok Shop | Observation | TikTok Shop refund observations. |
| tiktok_shop_api_settlements | TikTok Shop | Observation | TikTok Shop settlement observations. |
| tiktok_shop_api_statement_transactions | TikTok Shop | Observation | TikTok Shop statement transaction observations. |
| tiktok_shop_api_promotions | TikTok Shop | Observation | TikTok Shop promotion observations. |
| tiktok_shop_api_product_issues | TikTok Shop | Observation | TikTok Shop product issue observations. |
| tiktok_shop_api_affiliate_content | TikTok Shop | Observation | TikTok Shop affiliate content observations. |
| tiktok_shop_api_webhook_events | TikTok Shop | Observation | TikTok Shop event observations. |
| tiktok_shop_agent_api_product_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop product updates. |
| tiktok_shop_agent_api_sku_price_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop SKU price updates. |
| tiktok_shop_agent_api_inventory_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop inventory updates. |
| tiktok_shop_agent_api_fulfillment_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop fulfillment updates. |
| tiktok_shop_agent_api_return_refund_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop return/refund updates. |
| tiktok_shop_agent_api_promotion_updates | TikTok Shop | Commitment workflow | Governed TikTok Shop promotion updates. |

#### create_spec calls

##### tiktok_shop_api_shops

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shop_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop name",
      "name": "shop_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region code",
      "name": "region_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller type",
      "name": "seller_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop status",
      "name": "shop_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shop observations for seller identity, region, authorization, status, and storefront review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API shops",
    "spec_name": "tiktok_shop_api_shops"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "seller_sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Category id",
      "name": "category_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Brand name",
      "name": "brand_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product status",
      "name": "product_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product observations for TikTok Shop catalog identity, listing status, category, brand, and content review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API products",
    "spec_name": "tiktok_shop_api_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_skus

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sku_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "seller_sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Variant option summary",
      "name": "option_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Sale price amount",
      "name": "sale_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "SKU observations for TikTok Shop variants, seller SKUs, price, sale price, stock, and option values.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API SKUs",
    "spec_name": "tiktok_shop_api_skus"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_inventory_levels

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "inventory_level_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU id",
      "name": "sku_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Warehouse id",
      "name": "warehouse_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Available quantity",
      "name": "available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Reserved quantity",
      "name": "reserved_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory observations for TikTok Shop SKU stock by warehouse and sellable status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API inventory levels",
    "spec_name": "tiktok_shop_api_inventory_levels"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_warehouses

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "warehouse_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Warehouse name",
      "name": "warehouse_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Warehouse type",
      "name": "warehouse_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region code",
      "name": "region_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Warehouse observations for fulfillment location, region, and inventory routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API warehouses",
    "spec_name": "tiktok_shop_api_warehouses"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Order number",
      "name": "order_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed buyer reference",
      "name": "buyer_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order status",
      "name": "order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment status",
      "name": "fulfillment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order observations for TikTok Shop order lifecycle, buyer-safe tokens, totals, payment, and fulfillment status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API orders",
    "spec_name": "tiktok_shop_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_order_lines

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "order_line_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU id",
      "name": "sku_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "seller_sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Line total amount",
      "name": "line_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order line observations for TikTok Shop purchased products, SKUs, quantity, price, tax, and discounts.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API order lines",
    "spec_name": "tiktok_shop_api_order_lines"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_fulfillments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "fulfillment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Package id",
      "name": "package_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Carrier code",
      "name": "carrier_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed tracking number",
      "name": "tracking_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shipped timestamp",
      "name": "shipped_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Delivery status",
      "name": "delivery_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Fulfillment observations for shipment creation, carrier, tracking, delivery status, and order sync review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API fulfillments",
    "spec_name": "tiktok_shop_api_fulfillments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_returns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "return_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Return status",
      "name": "return_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return reason",
      "name": "return_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested timestamp",
      "name": "requested_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return line count",
      "name": "return_line_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Return observations for buyer return requests, return status, reason, items, and seller action.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API returns",
    "spec_name": "tiktok_shop_api_returns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_refunds

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "refund_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Return id",
      "name": "return_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund status",
      "name": "refund_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "refund_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Refund observations for refund amount, status, reason, and related return or order.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API refunds",
    "spec_name": "tiktok_shop_api_refunds"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_settlements

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "settlement_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Period start",
      "name": "period_start",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Period end",
      "name": "period_end",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Settlement status",
      "name": "settlement_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Gross amount",
      "name": "gross_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Net amount",
      "name": "net_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Settlement observations for payout periods, settlement status, gross sales, fees, adjustments, and net payout.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API settlements",
    "spec_name": "tiktok_shop_api_settlements"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_statement_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "statement_transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Settlement id",
      "name": "settlement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction type",
      "name": "transaction_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Statement transaction observations for TikTok Shop fees, refunds, adjustments, settlements, and order-level cash review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API statement transactions",
    "spec_name": "tiktok_shop_api_statement_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_promotions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "promotion_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion name",
      "name": "promotion_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Promotion type",
      "name": "promotion_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Promotion status",
      "name": "promotion_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start time",
      "name": "start_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End time",
      "name": "end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Promotion observations for TikTok Shop discounts, product eligibility, dates, and status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API promotions",
    "spec_name": "tiktok_shop_api_promotions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_product_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU id",
      "name": "sku_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resolution status",
      "name": "resolution_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product issue observations for TikTok Shop listing suppression, policy, stock, catalog, or compliance follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API product issues",
    "spec_name": "tiktok_shop_api_product_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_affiliate_content

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "affiliate_content_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed creator id",
      "name": "creator_id_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content type",
      "name": "content_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Commission rate",
      "name": "commission_rate",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Content status",
      "name": "content_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Affiliate and shoppable content observations for creator, product, commission, and content performance review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API affiliate content",
    "spec_name": "tiktok_shop_api_affiliate_content"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Webhook event observations for TikTok Shop product, order, fulfillment, return, and settlement replay.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop API webhook events",
    "spec_name": "tiktok_shop_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_product_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "product_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "seller_sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop product content or status update proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API product updates",
    "spec_name": "tiktok_shop_agent_api_product_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_sku_price_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "sku_price_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "sku_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "seller_sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current price amount",
      "name": "current_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed price amount",
      "name": "proposed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop SKU price or offer update proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API SKU price updates",
    "spec_name": "tiktok_shop_agent_api_sku_price_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_inventory_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "inventory_level_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU id",
      "name": "sku_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Warehouse id",
      "name": "warehouse_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current available quantity",
      "name": "current_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed available quantity",
      "name": "proposed_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop inventory update proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API inventory updates",
    "spec_name": "tiktok_shop_agent_api_inventory_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_fulfillment_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "fulfillment_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Package id",
      "name": "package_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Carrier code",
      "name": "carrier_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed tracking number",
      "name": "tracking_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment action",
      "name": "fulfillment_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop fulfillment or tracking update proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API fulfillment updates",
    "spec_name": "tiktok_shop_agent_api_fulfillment_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_return_refund_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "return_refund_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "return_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Order id",
      "name": "order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested resolution",
      "name": "requested_resolution",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Refund amount",
      "name": "refund_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop return or refund action proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API return refund updates",
    "spec_name": "tiktok_shop_agent_api_return_refund_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_shop_agent_api_promotion_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "promotion_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "promotion_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shop id",
      "name": "shop_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion name",
      "name": "promotion_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Promotion type",
      "name": "promotion_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start time",
      "name": "start_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End time",
      "name": "end_time",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Shop promotion create/update proposals before outbound TikTok Shop sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Shop agent API promotion updates",
    "spec_name": "tiktok_shop_agent_api_promotion_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_shop_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### tiktok_ads_marketing_library

- Type: collection
- Domains: marketing, commerce
- Direct systems: TikTok Ads, Ad platforms
- Coverage: Core
- Version: 1.0.0
- Summary: TikTok Ads specs for advertisers, campaigns, ad groups, ads, creatives, Spark posts, catalogs, catalog products, product sets, pixels, events, audiences, performance reporting, product performance, comments, and governed ad updates.
- Coverage notes: Covers common TikTok Ads objects used for paid social review, catalog ads, event health, product performance, comment queues, and approval-first outbound ad changes. It does not mirror every report dimension, creative review detail, audience-source payload, or Business Center administration surface.
- Source docs: [TikTok Marketing API overview](https://ads.tiktok.com/help/article/marketing-api?lang=en), [TikTok for Business developers](https://business-api.tiktok.com/portal/docs)

#### Next objects
- lead_forms
- instant_pages
- brand_safety_settings
- creative_insights
- video_assets
- split_tests
- business_center_assets
- shop_ads_extended_reporting

#### Omitted objects
- OAuth/token management
- raw user identifiers
- full audience upload payloads
- every reporting dimension combination
- restricted moderation operations

#### Needs
- A TikTok Ads agent/operator role. The generated calls use tiktok_ads_agent.

#### Useful for
- Paid social campaign memory
- Catalog ad review
- Creative performance analysis
- Pixel and event health checks
- Comment moderation queues
- Governed campaign and creative updates

#### Extend with
- Links from Shopify/TikTok Shop catalog observations into catalog product updates
- Links from TikTok product performance into price or product content reconciliation findings
- Links from GA4 and TikTok event observations into conversion-health review

#### Links
- tiktok_ads_agent_api_campaign_budget_updates -> tiktok_ads_api_campaigns (source_link): Campaign budget proposals cite current campaign observations.
- tiktok_ads_agent_api_campaign_status_updates -> tiktok_ads_api_campaigns (source_link): Campaign status proposals cite current campaign observations.
- tiktok_ads_agent_api_ad_group_bid_updates -> tiktok_ads_api_ad_groups (source_link): Ad group bid proposals cite current ad group observations.
- tiktok_ads_agent_api_creative_updates -> tiktok_ads_api_creatives (source_link): Creative update proposals cite current creative observations.
- tiktok_ads_agent_api_audience_updates -> tiktok_ads_api_audiences (source_link): Audience proposals cite current audience observations when updating existing audiences.
- tiktok_ads_agent_api_catalog_product_updates -> tiktok_ads_api_catalog_products (source_link): Catalog product proposals cite current catalog product observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| tiktok_ads_api_advertisers | TikTok Ads, Ad platforms | Observation | TikTok Ads advertiser observations. |
| tiktok_ads_api_campaigns | TikTok Ads, Ad platforms | Observation | TikTok Ads campaign observations. |
| tiktok_ads_api_ad_groups | TikTok Ads, Ad platforms | Observation | TikTok Ads ad group observations. |
| tiktok_ads_api_ads | TikTok Ads, Ad platforms | Observation | TikTok Ads ad observations. |
| tiktok_ads_api_creatives | TikTok Ads, Ad platforms | Observation | TikTok Ads creative observations. |
| tiktok_ads_api_spark_posts | TikTok Ads, Ad platforms | Observation | TikTok Spark post observations. |
| tiktok_ads_api_catalogs | TikTok Ads, Ad platforms | Observation | TikTok Ads catalog observations. |
| tiktok_ads_api_catalog_products | TikTok Ads, Ad platforms | Observation | TikTok Ads catalog product observations. |
| tiktok_ads_api_product_sets | TikTok Ads, Ad platforms | Observation | TikTok Ads product set observations. |
| tiktok_ads_api_pixels | TikTok Ads, Ad platforms | Observation | TikTok Ads pixel observations. |
| tiktok_ads_api_events | TikTok Ads, Ad platforms | Observation | TikTok Ads event observations. |
| tiktok_ads_api_audiences | TikTok Ads, Ad platforms | Observation | TikTok Ads audience observations. |
| tiktok_ads_api_performance_metrics | TikTok Ads, Ad platforms | Observation | TikTok Ads performance observations. |
| tiktok_ads_api_product_performance | TikTok Ads, Ad platforms | Observation | TikTok product performance observations. |
| tiktok_ads_api_comments | TikTok Ads, Ad platforms | Observation | TikTok Ads comment observations. |
| tiktok_ads_agent_api_campaign_budget_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads campaign budget updates. |
| tiktok_ads_agent_api_campaign_status_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads campaign status updates. |
| tiktok_ads_agent_api_ad_group_bid_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads ad group bid updates. |
| tiktok_ads_agent_api_creative_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads creative updates. |
| tiktok_ads_agent_api_audience_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads audience updates. |
| tiktok_ads_agent_api_catalog_product_updates | TikTok Ads, Ad platforms | Commitment workflow | Governed TikTok Ads catalog product updates. |

#### create_spec calls

##### tiktok_ads_api_advertisers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "advertiser_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser name",
      "name": "advertiser_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Time zone",
      "name": "time_zone",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser status",
      "name": "advertiser_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Advertiser observations for TikTok Ads account identity, currency, time zone, and status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API advertisers",
    "spec_name": "tiktok_ads_api_advertisers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Objective type",
      "name": "objective_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget mode",
      "name": "budget_mode",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign observations for objective, budget, status, and TikTok Ads campaign structure.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API campaigns",
    "spec_name": "tiktok_ads_api_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_ad_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ad_group_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group name",
      "name": "ad_group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Placement type",
      "name": "placement_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Optimization goal",
      "name": "optimization_goal",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bid amount",
      "name": "bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Ad group status",
      "name": "ad_group_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad group observations for placement, targeting, budget, bid, schedule, and delivery status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API ad groups",
    "spec_name": "tiktok_ads_api_ad_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_ads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ad_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad name",
      "name": "ad_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creative id",
      "name": "creative_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Review status",
      "name": "review_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad status",
      "name": "ad_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad observations for TikTok Ads creative linkage, review status, delivery status, and landing destination.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API ads",
    "spec_name": "tiktok_ads_api_ads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_creatives

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "creative_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Creative name",
      "name": "creative_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creative type",
      "name": "creative_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Video id",
      "name": "video_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed landing page URL",
      "name": "landing_page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Review status",
      "name": "review_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Creative observations for videos, images, titles, call-to-action, landing page tokens, and review state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API creatives",
    "spec_name": "tiktok_ads_api_creatives"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_spark_posts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "spark_post_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed post id",
      "name": "post_id_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed creator id",
      "name": "creator_id_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Authorization status",
      "name": "authorization_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Post status",
      "name": "post_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Spark post observations for organic post authorization, creator-safe token, and paid amplification review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API Spark posts",
    "spec_name": "tiktok_ads_api_spark_posts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_catalogs

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "catalog_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Catalog name",
      "name": "catalog_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog vertical",
      "name": "vertical",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog status",
      "name": "catalog_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product count",
      "name": "product_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog observations for TikTok product catalogs used in ads and commerce campaigns.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API catalogs",
    "spec_name": "tiktok_ads_api_catalogs"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_catalog_products

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "catalog_product_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog id",
      "name": "catalog_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Item id",
      "name": "item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Availability",
      "name": "availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog product observations for TikTok ad catalogs, item ids, price, availability, and review state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API catalog products",
    "spec_name": "tiktok_ads_api_catalog_products"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_product_sets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_set_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog id",
      "name": "catalog_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product set name",
      "name": "product_set_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Rule summary",
      "name": "rule_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product count",
      "name": "product_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product set observations for catalog segmentation, rules, and campaign eligibility.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API product sets",
    "spec_name": "tiktok_ads_api_product_sets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_pixels

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "pixel_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Pixel name",
      "name": "pixel_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pixel status",
      "name": "pixel_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Last fired timestamp",
      "name": "last_fired_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Pixel observations for web event setup, connected advertiser, status, and event coverage.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API pixels",
    "spec_name": "tiktok_ads_api_pixels"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "event_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Pixel id",
      "name": "pixel_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event name",
      "name": "event_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event date",
      "name": "event_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event count",
      "name": "event_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Match quality",
      "name": "match_quality",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Event observations for TikTok pixel or events API activity, event names, match quality, and diagnostics.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API events",
    "spec_name": "tiktok_ads_api_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_audiences

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "audience_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Audience name",
      "name": "audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience type",
      "name": "audience_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience status",
      "name": "audience_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience size",
      "name": "audience_size",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Audience observations for custom, lookalike, engagement, or customer-file audiences and availability.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API audiences",
    "spec_name": "tiktok_ads_api_audiences"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_performance_metrics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "tiktok_ads_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Conversions",
      "name": "conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Daily TikTok Ads performance observations for campaigns, ad groups, ads, spend, impressions, clicks, conversions, and revenue.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API performance metrics",
    "spec_name": "tiktok_ads_api_performance_metrics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_product_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "tiktok_product_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Catalog id",
      "name": "catalog_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Item id",
      "name": "item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Conversions",
      "name": "conversions",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Revenue amount",
      "name": "revenue_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "TikTok catalog or shop product performance observations for item-level spend, conversions, revenue, and ROAS review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API product performance",
    "spec_name": "tiktok_ads_api_product_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_api_comments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "comment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ad id",
      "name": "ad_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed post id",
      "name": "post_id_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed comment text",
      "name": "comment_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sentiment",
      "name": "sentiment",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Moderation status",
      "name": "moderation_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Comment observations for ad or organic content moderation, sentiment, and response queues where API access is available.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads API comments",
    "spec_name": "tiktok_ads_api_comments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_campaign_budget_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_budget_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current budget amount",
      "name": "current_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed budget amount",
      "name": "proposed_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads campaign budget update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API campaign budget updates",
    "spec_name": "tiktok_ads_agent_api_campaign_budget_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_campaign_status_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_status_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads campaign status update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API campaign status updates",
    "spec_name": "tiktok_ads_agent_api_campaign_status_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_ad_group_bid_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "ad_group_bid_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "ad_group_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current bid amount",
      "name": "current_bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed bid amount",
      "name": "proposed_bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads ad group bid or budget update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API ad group bid updates",
    "spec_name": "tiktok_ads_agent_api_ad_group_bid_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_creative_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "creative_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "creative_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Ad id",
      "name": "ad_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads creative update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API creative updates",
    "spec_name": "tiktok_ads_agent_api_creative_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_audience_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "audience_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "audience_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Audience name",
      "name": "audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience type",
      "name": "audience_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads audience create/update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API audience updates",
    "spec_name": "tiktok_ads_agent_api_audience_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### tiktok_ads_agent_api_catalog_product_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "catalog_product_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "catalog_product_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Catalog id",
      "name": "catalog_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed TikTok Ads catalog product update proposals before outbound TikTok Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "TikTok Ads agent API catalog product updates",
    "spec_name": "tiktok_ads_agent_api_catalog_product_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "tiktok_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### commerce_reconciliation_library

- Type: collection
- Domains: reconciliation, commerce, operations
- Direct systems: Commerce reconciliation
- Related systems: Website storefront, Shopify, Etsy, TikTok Shop, Amazon Selling Partner, Google Merchant Center, HubSpot, Stripe, Square
- Coverage: Core
- Version: 1.0.0
- Summary: Commerce reconciliation specs for comparing customers, catalog presence, product content, prices, offers, inventory, orders, fulfillment, policy, payouts, campaigns, and storefront observations across systems.
- Coverage notes: Reconciliation specs store findings and evidence across systems. They are not Shopify, Etsy, Stripe, Square, or HubSpot source specs; accepted fixes should flow through the appropriate direct-system commitment spec.
- Source docs: [Airlock Spec Library JSON](https://reunionstudio.io/airlock/docs/spec-library.json)

#### Next objects
- customer_merge_commitments
- canonical_product_master
- content_approval_workflow
- cross-system freshness expectations
- automated issue routing
- reconciliation run summaries

#### Omitted objects
- opaque sync jobs
- raw buyer PII
- unreviewed automatic writes
- screen-scraped secrets
- provider credentials

#### Needs
- A commerce reconciliation agent/operator role. The generated reconciliation calls use commerce_reconciliation_agent; website observations use website_storefront_agent.

#### Useful for
- Finding missing products across systems
- Comparing website pages to Shopify and marketplaces
- Reviewing price and offer disagreement
- Catching inventory and fulfillment drift
- Comparing HubSpot contacts, deals, campaigns, invoices, and payments with commerce and ad systems
- Routing accepted fixes to Shopify, Etsy, TikTok, Amazon, Google Merchant Center, HubSpot, Stripe, Square, QuickBooks, or NetSuite specs

#### Extend with
- Copyable source-link calls from findings into target commitment specs
- Run-level freshness expectations
- Issue creation proposals for unresolved discrepancies
- Canonical source priority rules by field and system

#### Links
- commerce_catalog_presence_reconciliation -> shopify_api_products (source_link): Catalog findings can cite Shopify product observations.
- commerce_catalog_presence_reconciliation -> tiktok_shop_api_products (source_link): Catalog findings can cite TikTok Shop product observations.
- commerce_catalog_presence_reconciliation -> amazon_sp_api_listings_items (source_link): Catalog findings can cite Amazon listing observations.
- commerce_product_content_reconciliation -> website_storefront_product_pages (source_link): Product content findings can cite rendered website product-page observations.
- commerce_product_content_reconciliation -> google_merchant_center_api_products (source_link): Product content findings can cite Merchant Center product observations.
- commerce_product_content_reconciliation -> amazon_sp_api_catalog_items (source_link): Product content findings can cite Amazon catalog item observations.
- commerce_price_offer_reconciliation -> website_storefront_product_offers (source_link): Price findings can cite visible website offer observations.
- commerce_price_offer_reconciliation -> tiktok_shop_api_skus (source_link): Price findings can cite TikTok Shop SKU observations.
- commerce_price_offer_reconciliation -> amazon_sp_api_offers_pricing (source_link): Price findings can cite Amazon offer and pricing observations.
- commerce_inventory_availability_reconciliation -> shopify_api_inventory_levels (source_link): Inventory findings can cite Shopify inventory observations.
- commerce_inventory_availability_reconciliation -> tiktok_shop_api_inventory_levels (source_link): Inventory findings can cite TikTok Shop inventory observations.
- commerce_inventory_availability_reconciliation -> amazon_sp_api_fba_inventory (source_link): Inventory findings can cite Amazon FBA inventory observations.
- commerce_customer_identity_reconciliation -> hubspot_api_contacts (source_link): Customer identity findings can cite HubSpot contact observations.
- commerce_order_sync_reconciliation -> tiktok_shop_api_orders (source_link): Order sync findings can cite TikTok Shop order observations.
- commerce_order_sync_reconciliation -> amazon_sp_api_orders (source_link): Order sync findings can cite Amazon order observations.
- commerce_order_sync_reconciliation -> hubspot_api_deals (source_link): Order sync findings can cite HubSpot deal observations.
- commerce_marketplace_policy_reconciliation -> amazon_sp_api_listing_issues (source_link): Marketplace policy findings can cite Amazon listing issue observations.
- commerce_promotion_campaign_reconciliation -> hubspot_marketing_api_campaigns (source_link): Promotion and campaign findings can cite HubSpot campaign observations.
- commerce_promotion_campaign_reconciliation -> hubspot_marketing_api_campaign_performance (source_link): Promotion and campaign findings can cite HubSpot campaign performance observations.
- commerce_settlement_payout_reconciliation -> hubspot_commerce_api_payments (source_link): Settlement findings can cite HubSpot payment observations.
- commerce_settlement_payout_reconciliation -> hubspot_commerce_api_invoices (source_link): Settlement findings can cite HubSpot invoice observations.
- commerce_settlement_payout_reconciliation -> stripe_api_payouts (source_link): Settlement findings can cite Stripe payout observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| website_storefront_product_pages | Website storefront | Website observation | Rendered product-page observations. |
| website_storefront_product_offers | Website storefront | Website observation | Visible offer and price observations. |
| website_storefront_structured_data | Website storefront | Website observation | Structured data observations. |
| website_storefront_collection_pages | Website storefront | Website observation | Collection page observations. |
| website_storefront_checkout_availability | Website storefront | Website observation | Checkout availability observations. |
| commerce_customer_identity_reconciliation | Commerce reconciliation | Reconciliation | Customer identity reconciliation findings. |
| commerce_catalog_presence_reconciliation | Commerce reconciliation | Reconciliation | Catalog presence reconciliation findings. |
| commerce_product_content_reconciliation | Commerce reconciliation | Reconciliation | Product content reconciliation findings. |
| commerce_price_offer_reconciliation | Commerce reconciliation | Reconciliation | Price and offer reconciliation findings. |
| commerce_inventory_availability_reconciliation | Commerce reconciliation | Reconciliation | Inventory availability reconciliation findings. |
| commerce_order_sync_reconciliation | Commerce reconciliation | Reconciliation | Order sync reconciliation findings. |
| commerce_fulfillment_tracking_reconciliation | Commerce reconciliation | Reconciliation | Fulfillment tracking reconciliation findings. |
| commerce_marketplace_policy_reconciliation | Commerce reconciliation | Reconciliation | Marketplace policy reconciliation findings. |
| commerce_settlement_payout_reconciliation | Commerce reconciliation | Reconciliation | Settlement and payout reconciliation findings. |
| commerce_promotion_campaign_reconciliation | Commerce reconciliation | Reconciliation | Promotion and campaign reconciliation findings. |

#### create_spec calls

##### website_storefront_product_pages

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_page_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Website or storefront id",
      "name": "site_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed canonical URL",
      "name": "canonical_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product title",
      "name": "product_title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Availability",
      "name": "availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Website product-page observations for canonical URL, title, description, media, availability, and published content review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Website storefront product pages",
    "spec_name": "website_storefront_product_pages"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "website_storefront_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### website_storefront_product_offers

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_offer_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product page id",
      "name": "product_page_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Variant key",
      "name": "variant_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Sale price amount",
      "name": "sale_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Website offer observations for visible price, sale price, currency, availability, and variant selection.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Website storefront product offers",
    "spec_name": "website_storefront_product_offers"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "website_storefront_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### website_storefront_structured_data

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "structured_data_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product page id",
      "name": "product_page_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Schema type",
      "name": "schema_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "GTIN or other product id",
      "name": "gtin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Validation status",
      "name": "validation_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Structured data observations for product, offer, review, breadcrumb, and merchant metadata extracted from storefront pages.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Website storefront structured data",
    "spec_name": "website_storefront_structured_data"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "website_storefront_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### website_storefront_collection_pages

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "collection_page_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Website or storefront id",
      "name": "site_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed collection URL",
      "name": "collection_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Collection name",
      "name": "collection_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product count",
      "name": "product_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Visible active product count",
      "name": "visible_active_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Collection or category page observations for displayed products, sort placement, merchandising, and availability review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Website storefront collection pages",
    "spec_name": "website_storefront_collection_pages"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "website_storefront_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### website_storefront_checkout_availability

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "checkout_availability_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Website or storefront id",
      "name": "site_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Variant key",
      "name": "variant_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cart status",
      "name": "cart_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Checkout status",
      "name": "checkout_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observed price amount",
      "name": "observed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Checkout availability observations for whether a SKU can be added to cart and reaches checkout with expected price and shipping state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Website storefront checkout availability",
    "spec_name": "website_storefront_checkout_availability"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "website_storefront_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_customer_identity_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "customer_identity_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed customer email",
      "name": "customer_email_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed customer phone",
      "name": "customer_phone_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External customer key or token",
      "name": "external_customer_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Customer identity reconciliation findings across commerce, billing, CRM, support, and marketplace systems.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce customer identity reconciliation",
    "spec_name": "commerce_customer_identity_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_catalog_presence_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "catalog_presence_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First system presence state",
      "name": "left_presence_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second system presence state",
      "name": "right_presence_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Catalog presence findings for products or SKUs missing, duplicated, inactive, or unexpectedly visible across sales surfaces.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce catalog presence reconciliation",
    "spec_name": "commerce_catalog_presence_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_product_content_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "product_content_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared field",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed first value",
      "name": "left_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed second value",
      "name": "right_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed recommended value",
      "name": "canonical_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product content findings for title, description, images, category, tags, structured data, or PDP copy disagreement.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce product content reconciliation",
    "spec_name": "commerce_product_content_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_price_offer_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "price_offer_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First system price amount",
      "name": "left_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Second system price amount",
      "name": "right_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "First offer status",
      "name": "left_offer_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second offer status",
      "name": "right_offer_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Price and offer findings for base price, sale price, discounts, bundles, marketplace offers, and visible storefront prices.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce price offer reconciliation",
    "spec_name": "commerce_price_offer_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_inventory_availability_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "inventory_availability_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Location or warehouse id",
      "name": "location_or_warehouse_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First system available quantity",
      "name": "left_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Second system available quantity",
      "name": "right_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "First availability state",
      "name": "left_availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second availability state",
      "name": "right_availability",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Inventory and availability findings for quantity, stock status, warehouse/location state, marketplace active state, and checkout availability.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce inventory availability reconciliation",
    "spec_name": "commerce_inventory_availability_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_order_sync_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "order_sync_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Order number",
      "name": "order_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace order id",
      "name": "marketplace_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source order status",
      "name": "source_order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target order status",
      "name": "target_order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order total amount",
      "name": "order_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order sync findings for marketplace, storefront, OMS, POS, fulfillment, and accounting systems.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce order sync reconciliation",
    "spec_name": "commerce_order_sync_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_fulfillment_tracking_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "fulfillment_tracking_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Order number",
      "name": "order_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment id",
      "name": "fulfillment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Carrier code",
      "name": "carrier_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed tracking number",
      "name": "tracking_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First delivery status",
      "name": "left_delivery_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second delivery status",
      "name": "right_delivery_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Fulfillment tracking findings for shipment, carrier, tracking, delivery, and marketplace shipment confirmation mismatches.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce fulfillment tracking reconciliation",
    "spec_name": "commerce_fulfillment_tracking_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_marketplace_policy_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "marketplace_policy_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace",
      "name": "marketplace",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Policy issue type",
      "name": "policy_issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Policy severity",
      "name": "policy_severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source catalog status",
      "name": "source_catalog_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace listing status",
      "name": "marketplace_listing_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketplace policy findings for suppressed, disapproved, restricted, or low-quality listings that disagree with source catalog expectations.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce marketplace policy reconciliation",
    "spec_name": "commerce_marketplace_policy_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_settlement_payout_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "settlement_payout_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Settlement id",
      "name": "settlement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payout id",
      "name": "payout_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order number",
      "name": "order_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First system amount",
      "name": "left_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Second system amount",
      "name": "right_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Settlement and payout findings for marketplace statements, payment processors, accounting deposits, fees, refunds, and net cash.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce settlement payout reconciliation",
    "spec_name": "commerce_settlement_payout_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### commerce_promotion_campaign_reconciliation

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "promotion_campaign_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Promotion id",
      "name": "promotion_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First active state",
      "name": "left_active_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second active state",
      "name": "right_active_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared date window",
      "name": "date_window_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Promotion and campaign findings for discounts, coupon codes, campaign product sets, audience eligibility, and active dates across stores and ad platforms.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Commerce promotion campaign reconciliation",
    "spec_name": "commerce_promotion_campaign_reconciliation"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "commerce_reconciliation_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### amazon_selling_partner_commerce_library

- Type: collection
- Domains: commerce, operations, finance
- Direct systems: Amazon Selling Partner
- Coverage: Core
- Version: 1.0.0
- Summary: Amazon Selling Partner specs for seller accounts, marketplaces, catalog items, listings, listing issues, restrictions, offers and pricing, fee estimates, FBA and merchant inventory, supply sources, orders, order items, shipments, returns, financial events, settlement reports, report jobs, feed jobs, notifications, A+ content, and governed seller updates.
- Coverage notes: Covers common SP-API resources used for Amazon marketplace operations, catalog health, order review, inventory, seller finances, reports, feeds, and approval-first outbound seller changes. It does not mirror every vendor-only API, restricted PII payload, every report type, or every feed schema.
- Source docs: [Amazon SP-API documentation](https://developer-docs.amazon.com/sp-api/lang-en_US/), [Amazon SP-API Catalog Items API](https://developer-docs.amazon.com/sp-api/docs/catalog-items-api-v2022-04-01-reference), [Amazon SP-API Orders API](https://developer-docs.amazon.com/sp-api/docs/orders-api-v0-reference)

#### Next objects
- vendor_direct_fulfillment
- inbound_fba_shipments
- brand_analytics_reports
- customer_feedback
- messaging
- seller_wallet
- replenishment
- data_kiosk_queries

#### Omitted objects
- OAuth/token management
- raw buyer PII
- restricted data-token payloads
- every report type
- every feed schema
- vendor-only workflows not relevant to sellers

#### Needs
- An Amazon Selling Partner agent/operator role. The generated calls use amazon_selling_partner_agent.

#### Useful for
- Amazon seller catalog memory
- Listing issue review
- Price and Buy Box monitoring
- FBA and merchant inventory review
- Amazon order follow-up
- Settlement and fee reconciliation
- Governed listing, price, inventory, fulfillment, and feed updates

#### Extend with
- Links from commerce reconciliation findings into listing, price, and inventory commitments
- Links from Amazon settlements into QuickBooks or NetSuite cash records
- Report freshness expectations for settlement, inventory, and listings reports

#### Links
- amazon_sp_agent_api_listing_updates -> amazon_sp_api_listings_items (source_link): Listing update proposals cite current listing observations.
- amazon_sp_agent_api_listing_updates -> amazon_sp_api_listing_issues (source_link): Listing update proposals can cite listing issue observations.
- amazon_sp_agent_api_price_updates -> amazon_sp_api_offers_pricing (source_link): Price update proposals cite current offer and pricing observations.
- amazon_sp_agent_api_inventory_updates -> amazon_sp_api_merchant_inventory (source_link): Inventory update proposals cite current merchant inventory observations.
- amazon_sp_agent_api_fulfillment_updates -> amazon_sp_api_orders (source_link): Fulfillment update proposals cite current order observations.
- amazon_sp_agent_api_feed_submissions -> amazon_sp_api_feeds (source_link): Feed submission packets cite feed job observations when replaying or following up.
- amazon_sp_agent_api_a_plus_content_updates -> amazon_sp_api_a_plus_content (source_link): A+ content proposals cite current A+ content observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| amazon_sp_api_seller_accounts | Amazon Selling Partner | Observation | Amazon seller account observations. |
| amazon_sp_api_marketplaces | Amazon Selling Partner | Observation | Amazon marketplace observations. |
| amazon_sp_api_catalog_items | Amazon Selling Partner | Observation | Amazon catalog item observations. |
| amazon_sp_api_listings_items | Amazon Selling Partner | Observation | Amazon listing observations. |
| amazon_sp_api_listing_issues | Amazon Selling Partner | Observation | Amazon listing issue observations. |
| amazon_sp_api_listing_restrictions | Amazon Selling Partner | Observation | Amazon listing restriction observations. |
| amazon_sp_api_offers_pricing | Amazon Selling Partner | Observation | Amazon offer and pricing observations. |
| amazon_sp_api_product_fees_estimates | Amazon Selling Partner | Observation | Amazon product fee estimate observations. |
| amazon_sp_api_fba_inventory | Amazon Selling Partner | Observation | Amazon FBA inventory observations. |
| amazon_sp_api_merchant_inventory | Amazon Selling Partner | Observation | Amazon merchant inventory observations. |
| amazon_sp_api_supply_sources | Amazon Selling Partner | Observation | Amazon supply source observations. |
| amazon_sp_api_orders | Amazon Selling Partner | Observation | Amazon order observations. |
| amazon_sp_api_order_items | Amazon Selling Partner | Observation | Amazon order item observations. |
| amazon_sp_api_shipments | Amazon Selling Partner | Observation | Amazon shipment observations. |
| amazon_sp_api_returns | Amazon Selling Partner | Observation | Amazon return observations. |
| amazon_sp_api_financial_events | Amazon Selling Partner | Observation | Amazon financial event observations. |
| amazon_sp_api_settlement_reports | Amazon Selling Partner | Observation | Amazon settlement report observations. |
| amazon_sp_api_reports | Amazon Selling Partner | Observation | Amazon report job observations. |
| amazon_sp_api_feeds | Amazon Selling Partner | Observation | Amazon feed job observations. |
| amazon_sp_api_notifications | Amazon Selling Partner | Observation | Amazon notification observations. |
| amazon_sp_api_a_plus_content | Amazon Selling Partner | Observation | Amazon A+ content observations. |
| amazon_sp_agent_api_listing_updates | Amazon Selling Partner | Commitment workflow | Governed Amazon listing updates. |
| amazon_sp_agent_api_price_updates | Amazon Selling Partner | Commitment workflow | Governed Amazon price updates. |
| amazon_sp_agent_api_inventory_updates | Amazon Selling Partner | Commitment workflow | Governed Amazon inventory updates. |
| amazon_sp_agent_api_fulfillment_updates | Amazon Selling Partner | Commitment workflow | Governed Amazon fulfillment updates. |
| amazon_sp_agent_api_feed_submissions | Amazon Selling Partner | Commitment workflow | Governed Amazon feed submissions. |
| amazon_sp_agent_api_a_plus_content_updates | Amazon Selling Partner | Commitment workflow | Governed Amazon A+ content updates. |

#### create_spec calls

##### amazon_sp_api_seller_accounts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "seller_account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller display name",
      "name": "seller_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Region code",
      "name": "region_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account status",
      "name": "account_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Seller account observations for marketplace participation, region, account status, and operational ownership.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API seller accounts",
    "spec_name": "amazon_sp_api_seller_accounts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_marketplaces

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "marketplace_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country code",
      "name": "country_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Default language code",
      "name": "default_language_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Participation status",
      "name": "participation_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketplace observations for country, currency, language, and marketplace participation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API marketplaces",
    "spec_name": "amazon_sp_api_marketplaces"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_catalog_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "asin",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Catalog title",
      "name": "title",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Brand",
      "name": "brand",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Product type",
      "name": "product_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Browse node id",
      "name": "browse_node_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon catalog item observations for ASIN identity, brand, category, attributes, images, and browse classification.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API catalog items",
    "spec_name": "amazon_sp_api_catalog_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_listings_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "listing_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment channel",
      "name": "fulfillment_channel",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Listing status",
      "name": "listing_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Listing observations for seller SKU, ASIN, fulfillment channel, status, issue state, and listing attributes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API listings items",
    "spec_name": "amazon_sp_api_listings_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_listing_issues

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "listing_issue_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue type",
      "name": "issue_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Issue severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resolution status",
      "name": "resolution_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Listing issue observations for suppressed, restricted, invalid, or policy-affected listings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API listing issues",
    "spec_name": "amazon_sp_api_listing_issues"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_listing_restrictions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "listing_restriction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Condition type",
      "name": "condition_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Restriction reason",
      "name": "restriction_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Listing restriction observations for product, marketplace, condition, approval, and selling eligibility review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API listing restrictions",
    "spec_name": "amazon_sp_api_listing_restrictions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_offers_pricing

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "offer_pricing_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Landed price amount",
      "name": "landed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Listing price amount",
      "name": "listing_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Buy Box winner flag",
      "name": "buy_box_winner",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Offer and pricing observations for seller SKU, ASIN, buy-box context, landed price, sale price, and competitive price review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API offers pricing",
    "spec_name": "amazon_sp_api_offers_pricing"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_product_fees_estimates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "fee_estimate_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Price amount",
      "name": "price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Estimated fee amount",
      "name": "estimated_fee_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product fee estimate observations for referral, fulfillment, variable closing, and total fee review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API product fees estimates",
    "spec_name": "amazon_sp_api_product_fees_estimates"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_fba_inventory

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "fba_inventory_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillable quantity",
      "name": "fulfillable_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Inbound quantity",
      "name": "inbound_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Reserved quantity",
      "name": "reserved_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Stranded quantity",
      "name": "stranded_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "FBA inventory observations for SKU, ASIN, fulfillment center state, sellable, inbound, reserved, and stranded quantities.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API FBA inventory",
    "spec_name": "amazon_sp_api_fba_inventory"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_merchant_inventory

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "merchant_inventory_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Supply source id",
      "name": "supply_source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Available quantity",
      "name": "available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Handling time days",
      "name": "handling_time_days",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Merchant-fulfilled inventory observations for supply source, SKU, availability, quantity, and handling time.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API merchant inventory",
    "spec_name": "amazon_sp_api_merchant_inventory"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_supply_sources

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "supply_source_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Supply source name",
      "name": "source_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Supply source type",
      "name": "source_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Country code",
      "name": "country_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Supply source observations for multi-location inventory, ship-from location, region, and fulfillment routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API supply sources",
    "spec_name": "amazon_sp_api_supply_sources"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_orders

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "amazon_order_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed buyer reference",
      "name": "buyer_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order status",
      "name": "order_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment channel",
      "name": "fulfillment_channel",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Order total amount",
      "name": "order_total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order observations for Amazon order lifecycle, marketplace, buyer-safe token, fulfillment channel, payment, totals, and shipment state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API orders",
    "spec_name": "amazon_sp_api_orders"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_order_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "amazon_order_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amazon order id",
      "name": "amazon_order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity ordered",
      "name": "quantity_ordered",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Item price amount",
      "name": "item_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Order item observations for ASIN, SKU, quantity, item price, tax, promotions, and fulfillment review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API order items",
    "spec_name": "amazon_sp_api_order_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_shipments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "shipment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amazon order id",
      "name": "amazon_order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Carrier code",
      "name": "carrier_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed tracking number",
      "name": "tracking_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shipment status",
      "name": "shipment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Shipped timestamp",
      "name": "shipped_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Shipment observations for merchant fulfillment, carrier, tracking, package state, and delivery review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API shipments",
    "spec_name": "amazon_sp_api_shipments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_returns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "amazon_return_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amazon order id",
      "name": "amazon_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return reason",
      "name": "return_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Return status",
      "name": "return_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested timestamp",
      "name": "requested_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Return observations for return requests, items, reasons, statuses, and reimbursement follow-up.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API returns",
    "spec_name": "amazon_sp_api_returns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_financial_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "financial_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Amazon order id",
      "name": "amazon_order_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Financial event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Financial event observations for shipments, refunds, fees, adjustments, service charges, and settlement detail.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API financial events",
    "spec_name": "amazon_sp_api_financial_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_settlement_reports

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "settlement_report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Settlement id",
      "name": "settlement_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Period start",
      "name": "period_start",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Period end",
      "name": "period_end",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit amount",
      "name": "deposit_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Settlement report observations for payout periods, deposit amount, fees, adjustments, and cash reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API settlement reports",
    "spec_name": "amazon_sp_api_settlement_reports"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_reports

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "report_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report type",
      "name": "report_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Processing status",
      "name": "processing_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Completed timestamp",
      "name": "completed_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Report job observations for report type, processing status, document availability, and freshness review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API reports",
    "spec_name": "amazon_sp_api_reports"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_feeds

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "feed_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Feed type",
      "name": "feed_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Processing status",
      "name": "processing_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Submitted timestamp",
      "name": "submitted_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Completed timestamp",
      "name": "completed_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Result document id",
      "name": "result_document_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Feed job observations for submitted listing, pricing, inventory, order, or fulfillment feeds and processing results.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API feeds",
    "spec_name": "amazon_sp_api_feeds"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_notifications

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "notification_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Notification type",
      "name": "notification_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Notification observations for Amazon seller events, changed objects, report completion, and replay handling.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API notifications",
    "spec_name": "amazon_sp_api_notifications"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_api_a_plus_content

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "a_plus_content_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content reference key",
      "name": "content_reference_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Assigned ASIN count",
      "name": "asin_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Content status",
      "name": "content_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "A+ content observations for content documents, ASIN assignments, review state, and product-detail-page enrichment.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP-API A+ content",
    "spec_name": "amazon_sp_api_a_plus_content"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_listing_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "listing_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "listing_item_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon listing content or attribute update proposals before outbound SP-API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API listing updates",
    "spec_name": "amazon_sp_agent_api_listing_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_price_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "price_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "offer_pricing_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current price amount",
      "name": "current_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed price amount",
      "name": "proposed_price_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon offer price update proposals before outbound SP-API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API price updates",
    "spec_name": "amazon_sp_agent_api_price_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_inventory_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "inventory_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "merchant_inventory_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Supply source id",
      "name": "supply_source_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current available quantity",
      "name": "current_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Proposed available quantity",
      "name": "proposed_available_quantity",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon merchant inventory update proposals before outbound SP-API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API inventory updates",
    "spec_name": "amazon_sp_agent_api_inventory_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_fulfillment_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "fulfillment_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "amazon_order_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Shipment id",
      "name": "shipment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Carrier code",
      "name": "carrier_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed tracking number",
      "name": "tracking_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fulfillment action",
      "name": "fulfillment_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon fulfillment or tracking update proposals before outbound SP-API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API fulfillment updates",
    "spec_name": "amazon_sp_agent_api_fulfillment_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_feed_submissions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "feed_submission_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "feed_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Feed type",
      "name": "feed_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source commitment spec",
      "name": "source_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Source commitment id",
      "name": "source_commitment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon feed submission packets for accepted listing, price, inventory, or fulfillment updates.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API feed submissions",
    "spec_name": "amazon_sp_agent_api_feed_submissions",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_sp_agent_api_a_plus_content_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "a_plus_content_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "a_plus_content_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Seller id",
      "name": "seller_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Content reference key",
      "name": "content_reference_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed content",
      "name": "proposed_content_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon A+ content update proposals before outbound SP-API sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon SP agent API A+ content updates",
    "spec_name": "amazon_sp_agent_api_a_plus_content_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_selling_partner_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### amazon_ads_marketing_library

- Type: collection
- Domains: marketing, commerce
- Direct systems: Amazon Ads, Ad platforms
- Coverage: Core
- Version: 1.0.0
- Summary: Amazon Ads specs for profiles, portfolios, Sponsored Products, Sponsored Brands, Sponsored Display, ad groups, product ads, keywords, targets, negative targets, creatives, stores, audiences, search terms, performance reporting, product performance, budget recommendations, DSP campaigns and ad groups, Marketing Stream events, and governed ad updates.
- Coverage notes: Covers common Amazon Ads resources used for campaign management, sponsored ads optimization, DSP campaign memory, retail-aware reporting, and approval-first outbound ad changes. It does not mirror every Amazon Marketing Cloud dataset, every DSP creative subtype, every advanced report, or every self-serve console bulk operation.
- Source docs: [Amazon Ads API overview](https://advertising.amazon.com/about-api), [Amazon Ads API developers portal](https://advertising.amazon.com/solutions/products/amazon-ads-api), [Amazon DSP campaign and creative APIs](https://advertising.amazon.com/en-us/resources/whats-new/amazon-dsp-campaign-and-creative-api-are-now-available/)

#### Next objects
- sponsored_tv
- amazon_marketing_cloud_queries
- brand_metrics
- attribution_reports
- creative_assets
- recommendations
- campaign_optimization_rules
- bulk_operation_jobs

#### Omitted objects
- OAuth/token management
- raw shopper identifiers
- complete AMC query result datasets
- every reporting dimension combination
- restricted audience upload payloads

#### Needs
- An Amazon Ads agent/operator role. The generated calls use amazon_ads_agent.

#### Useful for
- Amazon advertising memory
- Sponsored ads budget and bid review
- Search-term mining
- Retail product performance review
- DSP campaign reporting
- Governed budget, status, bid, keyword, target, and creative updates

#### Extend with
- Links from Amazon Selling Partner offers and inventory into product performance review
- Links from search terms into negative target proposals
- Links from Shopify and website storefront observations into Amazon Store and creative review

#### Links
- amazon_ads_agent_api_campaign_budget_updates -> amazon_ads_api_sponsored_products_campaigns (source_link): Budget proposals can cite Sponsored Products campaign observations.
- amazon_ads_agent_api_campaign_budget_updates -> amazon_ads_api_budget_recommendations (source_link): Budget proposals can cite budget recommendation observations.
- amazon_ads_agent_api_campaign_status_updates -> amazon_ads_api_sponsored_brands_campaigns (source_link): Campaign status proposals can cite Sponsored Brands campaign observations.
- amazon_ads_agent_api_bid_updates -> amazon_ads_api_keywords (source_link): Bid proposals can cite keyword observations.
- amazon_ads_agent_api_bid_updates -> amazon_ads_api_targets (source_link): Bid proposals can cite target observations.
- amazon_ads_agent_api_keyword_target_updates -> amazon_ads_api_search_terms (source_link): Keyword or target proposals can cite search term observations.
- amazon_ads_agent_api_negative_target_updates -> amazon_ads_api_search_terms (source_link): Negative target proposals can cite search term observations.
- amazon_ads_agent_api_creative_updates -> amazon_ads_api_creatives (source_link): Creative proposals cite current creative observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| amazon_ads_api_profiles | Amazon Ads, Ad platforms | Observation | Amazon Ads profile observations. |
| amazon_ads_api_portfolios | Amazon Ads, Ad platforms | Observation | Amazon Ads portfolio observations. |
| amazon_ads_api_sponsored_products_campaigns | Amazon Ads, Ad platforms | Observation | Sponsored Products campaign observations. |
| amazon_ads_api_sponsored_brands_campaigns | Amazon Ads, Ad platforms | Observation | Sponsored Brands campaign observations. |
| amazon_ads_api_sponsored_display_campaigns | Amazon Ads, Ad platforms | Observation | Sponsored Display campaign observations. |
| amazon_ads_api_ad_groups | Amazon Ads, Ad platforms | Observation | Amazon Ads ad group observations. |
| amazon_ads_api_product_ads | Amazon Ads, Ad platforms | Observation | Amazon product ad observations. |
| amazon_ads_api_keywords | Amazon Ads, Ad platforms | Observation | Amazon Ads keyword observations. |
| amazon_ads_api_targets | Amazon Ads, Ad platforms | Observation | Amazon Ads target observations. |
| amazon_ads_api_negative_targets | Amazon Ads, Ad platforms | Observation | Amazon Ads negative target observations. |
| amazon_ads_api_creatives | Amazon Ads, Ad platforms | Observation | Amazon Ads creative observations. |
| amazon_ads_api_stores | Amazon Ads, Ad platforms | Observation | Amazon Store observations. |
| amazon_ads_api_audiences | Amazon Ads, Ad platforms | Observation | Amazon Ads audience observations. |
| amazon_ads_api_search_terms | Amazon Ads, Ad platforms | Observation | Amazon search term observations. |
| amazon_ads_api_performance_metrics | Amazon Ads, Ad platforms | Observation | Amazon Ads performance observations. |
| amazon_ads_api_product_performance | Amazon Ads, Ad platforms | Observation | Amazon Ads product performance observations. |
| amazon_ads_api_budget_recommendations | Amazon Ads, Ad platforms | Observation | Amazon Ads budget recommendation observations. |
| amazon_ads_api_dsp_campaigns | Amazon Ads, Ad platforms | Observation | Amazon DSP campaign observations. |
| amazon_ads_api_dsp_ad_groups | Amazon Ads, Ad platforms | Observation | Amazon DSP ad group observations. |
| amazon_ads_api_marketing_stream_events | Amazon Ads, Ad platforms | Observation | Amazon Marketing Stream event observations. |
| amazon_ads_agent_api_campaign_budget_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads campaign budget updates. |
| amazon_ads_agent_api_campaign_status_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads campaign status updates. |
| amazon_ads_agent_api_bid_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads bid updates. |
| amazon_ads_agent_api_keyword_target_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads keyword and target updates. |
| amazon_ads_agent_api_negative_target_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads negative target updates. |
| amazon_ads_agent_api_creative_updates | Amazon Ads, Ad platforms | Commitment workflow | Governed Amazon Ads creative updates. |

#### create_spec calls

##### amazon_ads_api_profiles

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "profile_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account name",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketplace id",
      "name": "marketplace_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon Ads profile observations for advertiser identity, account type, marketplace, currency, and access context.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API profiles",
    "spec_name": "amazon_ads_api_profiles"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_portfolios

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "portfolio_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Portfolio name",
      "name": "portfolio_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Budget policy",
      "name": "budget_policy",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Portfolio status",
      "name": "portfolio_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Portfolio observations for campaign grouping, budget governance, and account-level organization.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API portfolios",
    "spec_name": "amazon_ads_api_portfolios"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_sponsored_products_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sp_campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Targeting type",
      "name": "targeting_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Bidding strategy",
      "name": "bidding_strategy",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sponsored Products campaign observations for targeting type, budget, bidding strategy, status, and marketplace.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API Sponsored Products campaigns",
    "spec_name": "amazon_ads_api_sponsored_products_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_sponsored_brands_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sb_campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Creative status",
      "name": "creative_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sponsored Brands campaign observations for brand ads, budget, creative state, and serving status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API Sponsored Brands campaigns",
    "spec_name": "amazon_ads_api_sponsored_brands_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_sponsored_display_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "sd_campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign tactic",
      "name": "tactic",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Sponsored Display campaign observations for retail-aware display advertising, budget, tactic, and status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API Sponsored Display campaigns",
    "spec_name": "amazon_ads_api_sponsored_display_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_ad_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ad_group_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign type",
      "name": "campaign_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group name",
      "name": "ad_group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Default bid amount",
      "name": "default_bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Ad group status",
      "name": "ad_group_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Ad group observations for sponsored ads targeting organization, bid defaults, and status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API ad groups",
    "spec_name": "amazon_ads_api_ad_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_product_ads

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "product_ad_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad status",
      "name": "ad_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product ad observations for advertised ASIN/SKU, campaign/ad group linkage, approval state, and serving status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API product ads",
    "spec_name": "amazon_ads_api_product_ads"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_keywords

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "keyword_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword text",
      "name": "keyword_text",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Match type",
      "name": "match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bid amount",
      "name": "bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Keyword status",
      "name": "keyword_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Keyword observations for match type, bid, serving status, and keyword harvesting review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API keywords",
    "spec_name": "amazon_ads_api_keywords"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_targets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "target_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target type",
      "name": "target_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Target expression summary",
      "name": "expression_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bid amount",
      "name": "bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Target status",
      "name": "target_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Product or audience target observations for ASIN, category, auto, or other target expressions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API targets",
    "spec_name": "amazon_ads_api_targets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_negative_targets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "negative_target_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative type",
      "name": "negative_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative expression summary",
      "name": "expression_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative status",
      "name": "negative_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Negative keyword or target observations for wasted-spend control and search-term review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API negative targets",
    "spec_name": "amazon_ads_api_negative_targets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_creatives

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "creative_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creative name",
      "name": "creative_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creative type",
      "name": "creative_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Review status",
      "name": "review_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed landing page URL",
      "name": "landing_page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Creative observations for Sponsored Brands, Sponsored Display, DSP, and creative review status.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API creatives",
    "spec_name": "amazon_ads_api_creatives"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_stores

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "store_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Brand entity id",
      "name": "brand_entity_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Store name",
      "name": "store_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Store status",
      "name": "store_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Page count",
      "name": "page_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon Store observations for brand storefront pages, page tokens, and campaign landing review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API stores",
    "spec_name": "amazon_ads_api_stores"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_audiences

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "audience_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Audience name",
      "name": "audience_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience type",
      "name": "audience_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience status",
      "name": "audience_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Audience size",
      "name": "audience_size",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Audience observations for Amazon Ads audience assets, status, size, and activation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API audiences",
    "spec_name": "amazon_ads_api_audiences"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_search_terms

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "search_term_observation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed search term",
      "name": "search_term_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Match type",
      "name": "match_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Sales amount",
      "name": "sales_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Search term observations for Sponsored Products/Brands query mining, spend, sales, and negative keyword proposals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API search terms",
    "spec_name": "amazon_ads_api_search_terms"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_performance_metrics

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "amazon_ads_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Impressions",
      "name": "impressions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Sales amount",
      "name": "sales_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Advertising cost of sales",
      "name": "acos",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Daily Amazon Ads performance observations for campaigns, ad groups, ads, keywords, targets, spend, clicks, sales, and ACOS.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API performance metrics",
    "spec_name": "amazon_ads_api_performance_metrics"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_product_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "amazon_ads_product_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "ASIN",
      "name": "asin",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Seller SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Sales amount",
      "name": "sales_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Orders",
      "name": "orders",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Advertised product performance observations for ASIN/SKU sales, spend, ROAS, and product-level campaign review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API product performance",
    "spec_name": "amazon_ads_api_product_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_budget_recommendations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "budget_recommendation_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign type",
      "name": "campaign_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current budget amount",
      "name": "current_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Recommended budget amount",
      "name": "recommended_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Budget recommendation observations for campaigns with budget constraints and recommended budget changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API budget recommendations",
    "spec_name": "amazon_ads_api_budget_recommendations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_dsp_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dsp_campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Advertiser id",
      "name": "advertiser_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Budget amount",
      "name": "budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Start date",
      "name": "start_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End date",
      "name": "end_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon DSP campaign observations for campaign state, budget, dates, advertiser, and programmatic media review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API DSP campaigns",
    "spec_name": "amazon_ads_api_dsp_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_dsp_ad_groups

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "dsp_ad_group_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "DSP campaign id",
      "name": "dsp_campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group name",
      "name": "ad_group_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Goal type",
      "name": "goal_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bid amount",
      "name": "bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Ad group status",
      "name": "ad_group_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon DSP ad group observations for pacing, bids, goals, and activation state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API DSP ad groups",
    "spec_name": "amazon_ads_api_dsp_ad_groups"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_api_marketing_stream_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "marketing_stream_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource type",
      "name": "resource_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Resource id",
      "name": "resource_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Amazon Marketing Stream event observations for near-real-time campaign budget, performance, and status changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads API marketing stream events",
    "spec_name": "amazon_ads_api_marketing_stream_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_campaign_budget_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_budget_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign type",
      "name": "campaign_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current budget amount",
      "name": "current_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed budget amount",
      "name": "proposed_budget_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads campaign budget update proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API campaign budget updates",
    "spec_name": "amazon_ads_agent_api_campaign_budget_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_campaign_status_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_status_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign type",
      "name": "campaign_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads campaign status update proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API campaign status updates",
    "spec_name": "amazon_ads_agent_api_campaign_status_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_bid_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "bid_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bid_target_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword, target, or ad group",
      "name": "bid_target_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current bid amount",
      "name": "current_bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed bid amount",
      "name": "proposed_bid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads keyword, target, or ad group bid update proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API bid updates",
    "spec_name": "amazon_ads_agent_api_bid_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_keyword_target_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "keyword_target_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "keyword_or_target_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword or target type",
      "name": "target_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Keyword or target expression summary",
      "name": "expression_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads keyword or target create/update proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API keyword target updates",
    "spec_name": "amazon_ads_agent_api_keyword_target_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_negative_target_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "negative_target_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "negative_target_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad group id",
      "name": "ad_group_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative type",
      "name": "negative_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Negative expression summary",
      "name": "expression_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads negative keyword or target proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API negative target updates",
    "spec_name": "amazon_ads_agent_api_negative_target_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### amazon_ads_agent_api_creative_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "creative_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "creative_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Profile id",
      "name": "profile_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Creative type",
      "name": "creative_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed Amazon Ads creative update proposals before outbound Amazon Ads sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Amazon Ads agent API creative updates",
    "spec_name": "amazon_ads_agent_api_creative_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "amazon_ads_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### hubspot_marketing_library

- Type: collection
- Domains: marketing, crm
- Direct systems: HubSpot
- Coverage: Core
- Version: 1.0.0
- Summary: HubSpot Marketing Hub specs for campaigns, campaign assets, campaign performance, marketing emails, email events, email performance, landing pages, CTAs, tracking URLs, workflows, workflow enrollments, social posts, ad campaigns, webhook events, and governed marketing updates.
- Coverage notes: Covers common Marketing Hub assets and automation records agents use for campaign review, attribution, email performance, form and page follow-up, and approval-first outbound marketing changes. It does not mirror CMS themes, every report export, raw recipient PII, or every account-specific marketing property.
- Source docs: [HubSpot Campaigns API](https://developers.hubspot.com/docs/api-reference/latest/marketing/campaigns/guide), [HubSpot Marketing Email API](https://developers.hubspot.com/docs/api/marketing/marketing-emails), [HubSpot Workflows API](https://developers.hubspot.com/docs/guides/api/automation/workflows-v4)

#### Next objects
- blog_posts
- cms_pages
- content_memberships
- forms_v3_deep_fields
- lead_scoring_rules
- campaign_budget_plans
- ads_audience_syncs
- marketing_reports

#### Omitted objects
- OAuth/token management
- raw email recipient details
- full CMS theme/template source
- every report dimension export
- account-specific private properties

#### Needs
- A HubSpot agent/operator role. The generated calls use hubspot_agent.

#### Useful for
- Campaign memory
- Email performance review
- Workflow automation audit
- Landing page and CTA follow-up
- Cross-channel attribution review
- Governed campaign, email, workflow, list, and asset updates

#### Extend with
- Links from Google Ads/TikTok Ads/Amazon Ads campaigns into HubSpot campaign performance
- Links from GA4 acquisition reports into campaign review
- Links from HubSpot workflow observations into ops_issues for automation drift

#### Links
- hubspot_marketing_agent_api_campaign_updates -> hubspot_marketing_api_campaigns (source_link): Campaign update proposals cite current campaign observations.
- hubspot_marketing_agent_api_email_updates -> hubspot_marketing_api_emails (source_link): Email update proposals cite current marketing email observations.
- hubspot_marketing_agent_api_workflow_updates -> hubspot_marketing_api_workflows (source_link): Workflow update proposals cite current workflow observations.
- hubspot_marketing_agent_api_list_updates -> hubspot_api_lists (source_link): List update proposals cite current list observations from the CRM shelf.
- hubspot_marketing_agent_api_asset_association_updates -> hubspot_marketing_api_campaign_assets (source_link): Campaign asset association proposals cite current campaign asset observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| hubspot_marketing_api_campaigns | HubSpot | Observation | Marketing campaign observations. |
| hubspot_marketing_api_campaign_assets | HubSpot | Observation | Campaign asset observations. |
| hubspot_marketing_api_campaign_performance | HubSpot | Observation | Campaign performance observations. |
| hubspot_marketing_api_emails | HubSpot | Observation | Marketing email observations. |
| hubspot_marketing_api_email_events | HubSpot | Observation | Marketing email event observations. |
| hubspot_marketing_api_email_performance | HubSpot | Observation | Marketing email performance observations. |
| hubspot_marketing_api_landing_pages | HubSpot | Observation | Landing page observations. |
| hubspot_marketing_api_ctas | HubSpot | Observation | CTA observations. |
| hubspot_marketing_api_tracking_urls | HubSpot | Observation | Tracking URL observations. |
| hubspot_marketing_api_workflows | HubSpot | Observation | Workflow automation observations. |
| hubspot_marketing_api_workflow_enrollments | HubSpot | Observation | Workflow enrollment observations. |
| hubspot_marketing_api_social_posts | HubSpot | Observation | Social post observations. |
| hubspot_marketing_api_ad_campaigns | HubSpot | Observation | HubSpot ad campaign observations. |
| hubspot_marketing_api_webhook_events | HubSpot | Observation | Marketing webhook event observations. |
| hubspot_marketing_agent_api_campaign_updates | HubSpot | Commitment workflow | Governed campaign updates. |
| hubspot_marketing_agent_api_email_updates | HubSpot | Commitment workflow | Governed marketing email updates. |
| hubspot_marketing_agent_api_workflow_updates | HubSpot | Commitment workflow | Governed workflow updates. |
| hubspot_marketing_agent_api_list_updates | HubSpot | Commitment workflow | Governed list updates. |
| hubspot_marketing_agent_api_asset_association_updates | HubSpot | Commitment workflow | Governed campaign asset association updates. |

#### create_spec calls

##### hubspot_marketing_api_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign status",
      "name": "campaign_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot owner id",
      "name": "owner_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Start date",
      "name": "start_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "End date",
      "name": "end_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset count",
      "name": "asset_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign observations for marketing campaign identity, assets, owners, dates, status, and performance review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API campaigns",
    "spec_name": "hubspot_marketing_api_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_campaign_assets

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_asset_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Asset type",
      "name": "asset_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset id",
      "name": "asset_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset name",
      "name": "asset_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset status",
      "name": "asset_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign asset observations linking campaigns to emails, forms, landing pages, CTAs, lists, ads, social posts, and other assets.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API campaign assets",
    "spec_name": "hubspot_marketing_api_campaign_assets"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_campaign_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "campaign_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Metric scope",
      "name": "metric_scope",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Views",
      "name": "views",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Submissions",
      "name": "submissions",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Opens",
      "name": "opens",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Clicks",
      "name": "clicks",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Influenced revenue",
      "name": "influenced_revenue",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Campaign performance observations for views, submissions, opens, clicks, contacts, influenced revenue, and date windows.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API campaign performance",
    "spec_name": "hubspot_marketing_api_campaign_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_emails

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "marketing_email_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Email name",
      "name": "email_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed subject",
      "name": "subject_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Email state",
      "name": "email_state",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Email type",
      "name": "email_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing email observations for email assets, subject, sender, publish state, campaign linkage, and send settings.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API emails",
    "spec_name": "hubspot_marketing_api_emails"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_email_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "email_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketing email id",
      "name": "marketing_email_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed recipient reference",
      "name": "recipient_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event timestamp",
      "name": "event_timestamp",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing email event observations for sends, deliveries, opens, clicks, bounces, unsubscribes, and spam reports.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API email events",
    "spec_name": "hubspot_marketing_api_email_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_email_performance

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "email_performance_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Marketing email id",
      "name": "marketing_email_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Report date",
      "name": "date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Sent count",
      "name": "sent_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Open count",
      "name": "open_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Click count",
      "name": "click_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Bounce count",
      "name": "bounce_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Unsubscribe count",
      "name": "unsubscribe_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing email performance observations for aggregate send, open, click, bounce, unsubscribe, and conversion review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API email performance",
    "spec_name": "hubspot_marketing_api_email_performance"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_landing_pages

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "landing_page_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Page name",
      "name": "page_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed page URL",
      "name": "page_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Publish status",
      "name": "publish_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Embedded form id",
      "name": "form_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Published timestamp",
      "name": "published_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Landing page observations for campaign landing pages, URL tokens, publish status, forms, and conversion review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API landing pages",
    "spec_name": "hubspot_marketing_api_landing_pages"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_ctas

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "cta_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "CTA name",
      "name": "cta_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "CTA type",
      "name": "cta_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed destination URL",
      "name": "destination_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "CTA status",
      "name": "cta_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "CTA observations for button/banner/pop-up assets, campaign linkage, destination, and conversion review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API CTAs",
    "spec_name": "hubspot_marketing_api_ctas"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_tracking_urls

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "tracking_url_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed destination URL",
      "name": "destination_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "UTM source",
      "name": "utm_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "UTM medium",
      "name": "utm_medium",
      "tests": [],
      "type": "string"
    },
    {
      "description": "UTM campaign",
      "name": "utm_campaign",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed short URL",
      "name": "short_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Tracking URL observations for UTM campaign/source/medium content and attribution review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API tracking URLs",
    "spec_name": "hubspot_marketing_api_tracking_urls"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_workflows

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "workflow_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow name",
      "name": "workflow_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow status",
      "name": "workflow_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Enrollment object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Trigger count",
      "name": "trigger_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Action count",
      "name": "action_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Last updated timestamp",
      "name": "last_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Workflow observations for automation status, enrollment object, trigger/action counts, and lifecycle automation review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API workflows",
    "spec_name": "hubspot_marketing_api_workflows"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_workflow_enrollments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "workflow_enrollment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Workflow id",
      "name": "workflow_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object id",
      "name": "object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Enrollment timestamp",
      "name": "enrolled_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Enrollment status",
      "name": "enrollment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Completed timestamp",
      "name": "completed_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Workflow enrollment observations for enrolled objects, enrollment state, completion, suppression, and automation health.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API workflow enrollments",
    "spec_name": "hubspot_marketing_api_workflow_enrollments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_social_posts

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "social_post_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Social network",
      "name": "network",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Post status",
      "name": "post_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Published timestamp",
      "name": "published_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed message text",
      "name": "message_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed destination URL",
      "name": "destination_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Social post observations for published or scheduled social content, network, campaign linkage, and engagement review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API social posts",
    "spec_name": "hubspot_marketing_api_social_posts"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_ad_campaigns

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "hubspot_ad_campaign_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "HubSpot campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ad network",
      "name": "ad_network",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External campaign id",
      "name": "external_campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Spend amount",
      "name": "spend_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Contacts count",
      "name": "contacts_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Revenue amount",
      "name": "revenue_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "HubSpot ad campaign observations for connected ad accounts, campaign linkage, spend, contacts, and revenue review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API ad campaigns",
    "spec_name": "hubspot_marketing_api_ad_campaigns"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "marketing_webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription type",
      "name": "subscription_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset type",
      "name": "asset_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset id",
      "name": "asset_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Marketing webhook event observations for campaign, email, form, list, workflow, and asset changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing API webhook events",
    "spec_name": "hubspot_marketing_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_agent_api_campaign_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "campaign_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign name",
      "name": "campaign_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot campaign create/update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing agent API campaign updates",
    "spec_name": "hubspot_marketing_agent_api_campaign_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_agent_api_email_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "email_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "marketing_email_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot marketing email update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing agent API email updates",
    "spec_name": "hubspot_marketing_agent_api_email_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_agent_api_workflow_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "workflow_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "workflow_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Workflow name",
      "name": "workflow_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested workflow update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current status",
      "name": "current_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Proposed status",
      "name": "proposed_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot workflow update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing agent API workflow updates",
    "spec_name": "hubspot_marketing_agent_api_workflow_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_agent_api_list_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "list_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "list_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "List name",
      "name": "list_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested list update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Expected member count delta",
      "name": "member_count_delta",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot list update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing agent API list updates",
    "spec_name": "hubspot_marketing_agent_api_list_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_marketing_agent_api_asset_association_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "asset_association_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "campaign_asset_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Campaign id",
      "name": "campaign_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset type",
      "name": "asset_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Asset id",
      "name": "asset_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Association action",
      "name": "association_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot campaign asset association proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Marketing agent API asset association updates",
    "spec_name": "hubspot_marketing_agent_api_asset_association_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### hubspot_commerce_library

- Type: collection
- Domains: billing, finance, crm
- Direct systems: HubSpot
- Coverage: Core
- Version: 1.0.0
- Summary: HubSpot Commerce Hub specs for invoices, invoice line items, payments, payment links, subscriptions, subscription line items, payment schedules, discounts, fees, taxes, revenue events, webhook events, and governed commerce updates.
- Coverage notes: Covers common Commerce Hub records used for invoice, payment, subscription, quote/deal revenue, and connected Stripe/HubSpot payment review. It does not replace payment processor settlement records, model raw payment details, or mirror every account-specific commerce property.
- Source docs: [HubSpot Invoices API](https://developers.hubspot.com/docs/api/commerce/invoices), [HubSpot Payments API](https://developers.hubspot.com/docs/api/commerce/payments), [HubSpot Subscriptions API](https://developers.hubspot.com/docs/reference/api/crm/commerce/subscriptions)

#### Next objects
- orders
- payment_processing_fees
- refunds
- commerce_reports
- tax_settings
- buyer_checkout_sessions
- subscription_invoice_runs
- stripe_processor_links

#### Omitted objects
- OAuth/token management
- raw card or bank details
- processor credentials
- complete Stripe settlement replacement
- every account-specific commerce property

#### Needs
- A HubSpot agent/operator role. The generated calls use hubspot_agent.

#### Useful for
- Commerce Hub billing memory
- Invoice and payment review
- Subscription lifecycle review
- Deal-to-invoice reconciliation
- HubSpot/Stripe payment comparison
- Governed invoice, subscription, payment link, and revenue updates

#### Extend with
- Links from Stripe payment intents and invoices into HubSpot payments and invoices
- Links from Shopify/Amazon/TikTok orders into HubSpot deals and invoices
- Revenue recognition handoff into QuickBooks or NetSuite

#### Links
- hubspot_commerce_agent_api_invoice_updates -> hubspot_commerce_api_invoices (source_link): Invoice update proposals cite current invoice observations.
- hubspot_commerce_agent_api_subscription_updates -> hubspot_commerce_api_subscriptions (source_link): Subscription update proposals cite current subscription observations.
- hubspot_commerce_agent_api_payment_link_updates -> hubspot_commerce_api_payment_links (source_link): Payment link update proposals cite current payment link observations.
- hubspot_commerce_agent_api_revenue_record_updates -> hubspot_api_deals (source_link): Revenue record proposals cite current deal observations from the CRM shelf.
- hubspot_commerce_agent_api_revenue_record_updates -> hubspot_commerce_api_payments (source_link): Revenue record proposals can cite current payment observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| hubspot_commerce_api_invoices | HubSpot | Observation | Invoice observations. |
| hubspot_commerce_api_invoice_line_items | HubSpot | Observation | Invoice line item observations. |
| hubspot_commerce_api_payments | HubSpot | Observation | Payment observations. |
| hubspot_commerce_api_payment_links | HubSpot | Observation | Payment link observations. |
| hubspot_commerce_api_subscriptions | HubSpot | Observation | Subscription observations. |
| hubspot_commerce_api_subscription_line_items | HubSpot | Observation | Subscription line item observations. |
| hubspot_commerce_api_payment_schedules | HubSpot | Observation | Payment schedule observations. |
| hubspot_commerce_api_discounts_fees_taxes | HubSpot | Observation | Discount, fee, and tax observations. |
| hubspot_commerce_api_revenue_events | HubSpot | Observation | Revenue event observations. |
| hubspot_commerce_api_webhook_events | HubSpot | Observation | Commerce webhook event observations. |
| hubspot_commerce_agent_api_invoice_updates | HubSpot | Commitment workflow | Governed invoice updates. |
| hubspot_commerce_agent_api_subscription_updates | HubSpot | Commitment workflow | Governed subscription updates. |
| hubspot_commerce_agent_api_payment_link_updates | HubSpot | Commitment workflow | Governed payment link updates. |
| hubspot_commerce_agent_api_revenue_record_updates | HubSpot | Commitment workflow | Governed revenue record updates. |

#### create_spec calls

##### hubspot_commerce_api_invoices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company id",
      "name": "company_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice number",
      "name": "invoice_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice status",
      "name": "invoice_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment status",
      "name": "payment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Total amount",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice observations for HubSpot Commerce Hub billing, invoice status, associated deals, payment status, and totals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API invoices",
    "spec_name": "hubspot_commerce_api_invoices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_invoice_line_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "invoice_line_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Line item id",
      "name": "line_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Line amount",
      "name": "line_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Invoice line item observations for invoiced products, quantities, discounts, taxes, and revenue reconciliation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API invoice line items",
    "spec_name": "hubspot_commerce_api_invoice_line_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_payments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment status",
      "name": "payment_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment method type",
      "name": "payment_method_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Fee amount",
      "name": "fee_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment observations for HubSpot payments or connected Stripe payment processing, payment status, amount, fees, and associated records.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API payments",
    "spec_name": "hubspot_commerce_api_payments"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_payment_links

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_link_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment link name",
      "name": "payment_link_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed payment link URL",
      "name": "payment_link_url_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Line item count",
      "name": "line_item_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Created timestamp",
      "name": "created_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment link observations for checkout links, associated products, active status, and buyer flow review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API payment links",
    "spec_name": "hubspot_commerce_api_payment_links"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_subscriptions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "subscription_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Contact id",
      "name": "contact_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Company id",
      "name": "company_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription status",
      "name": "subscription_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Billing frequency",
      "name": "billing_frequency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Recurring amount",
      "name": "recurring_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subscription observations for recurring revenue lifecycle, billing cadence, amount, customer, and invoice creation.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API subscriptions",
    "spec_name": "hubspot_commerce_api_subscriptions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_subscription_line_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "subscription_line_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription id",
      "name": "subscription_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Product id",
      "name": "product_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Line item id",
      "name": "line_item_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "SKU",
      "name": "sku",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Quantity",
      "name": "quantity",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Recurring price",
      "name": "recurring_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Subscription line item observations for recurring products, quantities, prices, and renewal review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API subscription line items",
    "spec_name": "hubspot_commerce_api_subscription_line_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_payment_schedules

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "payment_schedule_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription id",
      "name": "subscription_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Schedule status",
      "name": "schedule_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Due date",
      "name": "due_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Scheduled amount",
      "name": "scheduled_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Payment schedule observations for installments, due dates, amounts, and collection state.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API payment schedules",
    "spec_name": "hubspot_commerce_api_payment_schedules"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_discounts_fees_taxes

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "commerce_adjustment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent object type",
      "name": "parent_object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Parent object id",
      "name": "parent_object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Discount, fee, or tax",
      "name": "adjustment_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Adjustment name",
      "name": "adjustment_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Adjustment amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Discount, fee, and tax observations for quotes, invoices, and line items.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API discounts fees taxes",
    "spec_name": "hubspot_commerce_api_discounts_fees_taxes"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_revenue_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "revenue_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event timestamp",
      "name": "event_timestamp",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment id",
      "name": "payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Revenue event observations for invoice, payment, subscription, quote, or deal revenue movement.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API revenue events",
    "spec_name": "hubspot_commerce_api_revenue_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_api_webhook_events

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "commerce_webhook_event_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription type",
      "name": "subscription_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object type",
      "name": "object_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Object id",
      "name": "object_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Event type",
      "name": "event_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Occurred timestamp",
      "name": "occurred_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Commerce webhook event observations for invoice, payment, subscription, payment link, quote, and line item changes.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce API webhook events",
    "spec_name": "hubspot_commerce_api_webhook_events"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_agent_api_invoice_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "invoice_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "invoice_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice number",
      "name": "invoice_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed current value",
      "name": "current_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed proposed value",
      "name": "proposed_value_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot invoice create/update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce agent API invoice updates",
    "spec_name": "hubspot_commerce_agent_api_invoice_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_agent_api_subscription_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "subscription_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "subscription_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Deal id",
      "name": "deal_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Subscription status",
      "name": "subscription_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested subscription update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Recurring amount",
      "name": "recurring_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot subscription create/update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce agent API subscription updates",
    "spec_name": "hubspot_commerce_agent_api_subscription_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_agent_api_payment_link_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "payment_link_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "payment_link_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Payment link name",
      "name": "payment_link_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested payment link update",
      "name": "requested_update",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Line item count",
      "name": "line_item_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Active flag",
      "name": "active",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot payment link create/update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce agent API payment link updates",
    "spec_name": "hubspot_commerce_agent_api_payment_link_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### hubspot_commerce_agent_api_revenue_record_updates

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "revenue_record_update_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "deal_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Invoice id",
      "name": "invoice_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment id",
      "name": "payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Field name",
      "name": "field_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Current amount",
      "name": "current_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Proposed amount",
      "name": "proposed_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency code",
      "name": "currency_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed HubSpot commerce-to-CRM revenue update proposals before outbound HubSpot sync.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "HubSpot Commerce agent API revenue record updates",
    "spec_name": "hubspot_commerce_agent_api_revenue_record_updates",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "hubspot_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

### financial_institution_treasury_library

- Type: collection
- Domains: finance, treasury, reconciliation
- Direct systems: Financial institutions, Treasury
- Coverage: Core
- Version: 1.0.0
- Summary: Financial institution and treasury specs for bank account masters, cash balances, statement transactions, intraday activity, lockbox remittances, deposit advices, check clearing, positive pay, ACH payments, ACH returns and notices of change, wires, bank fees, cash forecasts, and bank reconciliation findings.
- Coverage notes: Covers common treasury office file and portal outputs as CSV-ready observations plus approval-first outbound payment commitments. XML-only bank messages are intentionally omitted until Airlock supports XML ingestion.
- Source docs: [Nacha ACH File Overview](https://achdevguide.nacha.org/ach-file-overview), [Goldman Sachs ACH Returns & NOC File](https://developer.gs.com/docs/services/transaction-banking/ach-inbound/), [RBC Machine Readable Statements](https://www.rbccm.com/en/expertise/rbcclear/reports/machine-readable-statements)

#### Next objects
- bank-admin entitlement exports
- merchant deposit detail
- debt schedules
- investment balances
- intercompany transfers
- fraud decision files
- bank confirmation letters

#### Omitted objects
- XML-only statement and payment messages
- bank credentials
- raw account numbers
- raw routing numbers
- raw check images
- unreviewed automatic payments

#### Needs
- A financial institution or treasury agent/operator role. The generated calls use financial_institution_agent and treasury_agent.

#### Useful for
- Daily cash positioning
- Bank-to-book reconciliation
- Lockbox cash application
- Positive-pay issue and void review
- ACH return follow-up
- Wire status review
- Bank fee analysis
- Cash forecasting

#### Extend with
- Links from QuickBooks or NetSuite AP payments into bank payment commitments
- Links from Stripe/Square/Shopify/Amazon payouts into bank deposits
- Bank-specific file layout notes outside the spec
- Expectations for daily balance and statement delivery

#### Links
- bank_positive_pay_issue_commitments -> bank_account_master (source_link): Positive-pay commitments cite the bank account reference they target.
- bank_check_clearing_observations -> bank_positive_pay_issue_commitments (source_link): Check clearing observations can be compared to issued positive-pay commitments.
- bank_ach_return_noc_observations -> bank_ach_payment_commitments (source_link): ACH returns and notices of change cite the original ACH payment commitment where available.
- bank_wire_status_observations -> bank_wire_payment_commitments (source_link): Wire status observations cite the approved wire payment commitment where available.
- treasury_cash_forecast_snapshots -> bank_cash_balances (source_link): Cash forecasts can cite current bank balance observations.
- treasury_cash_forecast_snapshots -> bank_intraday_transactions (source_link): Cash forecasts can cite intraday transaction observations.
- treasury_bank_reconciliation_findings -> bank_statement_transactions (source_link): Bank reconciliation findings cite bank transaction observations.
- treasury_bank_reconciliation_findings -> bank_cash_balances (source_link): Bank reconciliation findings cite bank balance observations.
- treasury_bank_reconciliation_findings -> quickbooks_api_deposits (source_link): Bank reconciliation findings can cite QuickBooks deposit observations.
- treasury_bank_reconciliation_findings -> quickbooks_api_bill_payments (source_link): Bank reconciliation findings can cite QuickBooks bill payment observations.
- treasury_bank_reconciliation_findings -> netsuite_api_deposits (source_link): Bank reconciliation findings can cite NetSuite deposit observations.
- treasury_bank_reconciliation_findings -> stripe_api_balance_transactions (source_link): Bank reconciliation findings can cite Stripe balance transaction observations.
- treasury_bank_reconciliation_findings -> square_api_payouts (source_link): Bank reconciliation findings can cite Square payout observations.

#### Installed specs

| Spec segment | Direct system | Domain | Purpose |
| --- | --- | --- | --- |
| bank_account_master | Financial institutions, Treasury | Reference | Bank account reference memory. |
| bank_cash_balances | Financial institutions, Treasury | Observation | Cash balance observations. |
| bank_statement_transactions | Financial institutions, Treasury | Observation | Bank transaction observations. |
| bank_intraday_transactions | Financial institutions, Treasury | Observation | Intraday cash movement observations. |
| bank_lockbox_remittance_items | Financial institutions, Treasury | Observation | Lockbox remittance observations. |
| bank_deposit_advices | Financial institutions, Treasury | Observation | Deposit batch observations. |
| bank_check_clearing_observations | Financial institutions, Treasury | Observation | Check clearing observations. |
| bank_positive_pay_issue_commitments | Financial institutions, Treasury | Commitment workflow | Positive-pay issue and void commitments. |
| bank_ach_payment_commitments | Financial institutions, Treasury | Commitment workflow | ACH payment commitments. |
| bank_ach_return_noc_observations | Financial institutions, Treasury | Observation | ACH return and notice-of-change observations. |
| bank_wire_payment_commitments | Financial institutions, Treasury | Commitment workflow | Wire payment commitments. |
| bank_wire_status_observations | Financial institutions, Treasury | Observation | Wire status observations. |
| bank_account_analysis_fees | Financial institutions, Treasury | Observation | Bank fee observations. |
| treasury_cash_forecast_snapshots | Treasury, Financial institutions | Planning | Cash forecast snapshots. |
| treasury_bank_reconciliation_findings | Treasury, Financial institutions | Reconciliation | Bank-to-book reconciliation findings. |

#### create_spec calls

##### bank_account_master

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bank_account_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Financial institution name",
      "name": "bank_name",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Tokenized account reference",
      "name": "account_token",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Internal account label",
      "name": "account_name",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Operating, payroll, merchant, savings, loan, or other account type",
      "name": "account_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Account currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Owning business unit",
      "name": "business_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mapped general-ledger cash account",
      "name": "gl_cash_account",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team responsible for reconciliation",
      "name": "reconciliation_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bank account reference observations for treasury account ownership, currency, status, and reconciliation routing.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank account master",
    "spec_name": "bank_account_master"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_cash_balances

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "balance_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Balance timestamp",
      "name": "as_of_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Balance date",
      "name": "balance_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Ledger balance",
      "name": "ledger_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Available balance",
      "name": "available_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Collected balance",
      "name": "collected_balance",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Float or unavailable funds amount",
      "name": "float_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Portal, bank file, API, TMS, or manual source",
      "name": "balance_source",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Daily or intraday cash balance observations for ledger, available, collected, float, and credit-line views.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank cash balances",
    "spec_name": "bank_cash_balances"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_statement_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "bank_transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Statement date",
      "name": "statement_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Posting timestamp or date",
      "name": "posted_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Value date",
      "name": "value_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank transaction type or code",
      "name": "transaction_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Debit or credit indicator",
      "name": "debit_credit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank reference number",
      "name": "bank_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer or originator reference",
      "name": "customer_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank-provided transaction description",
      "name": "description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized counterparty name",
      "name": "counterparty_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Bank statement transaction observations from CSV exports, transformed BAI2, or other supported flat-file feeds.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank statement transactions",
    "spec_name": "bank_statement_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_intraday_transactions

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "intraday_transaction_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Bank report timestamp",
      "name": "reported_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Expected posting date",
      "name": "expected_post_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank transaction type or code",
      "name": "transaction_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Debit or credit indicator",
      "name": "debit_credit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Transaction amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank reference number",
      "name": "bank_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Pending, available, held, reversed, or other status",
      "name": "availability_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Intraday transaction observations used for near-real-time cash positioning before final statement posting.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank intraday transactions",
    "spec_name": "bank_intraday_transactions"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_lockbox_remittance_items

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "remittance_item_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lockbox identifier",
      "name": "lockbox_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank deposit id",
      "name": "deposit_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit date",
      "name": "deposit_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized payer name",
      "name": "payer_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer reference from remittance detail",
      "name": "customer_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Invoice number from remittance detail",
      "name": "invoice_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized check number",
      "name": "check_number_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Remittance amount",
      "name": "remittance_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Cash application exception reason",
      "name": "exception_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Lockbox remittance item observations for customer payments, invoice references, deposits, and cash application review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank lockbox remittance items",
    "spec_name": "bank_lockbox_remittance_items"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_deposit_advices

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "deposit_advice_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Bank deposit id",
      "name": "deposit_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Deposit date",
      "name": "deposit_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Lockbox, branch, remote deposit, merchant payout, cash, or other channel",
      "name": "deposit_channel",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Number of deposit items",
      "name": "item_count",
      "tests": [],
      "type": "integer"
    },
    {
      "description": "Deposit total",
      "name": "total_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank reference number",
      "name": "bank_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Deposit advice observations for deposit batches, item counts, channels, and bank-posted totals.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank deposit advices",
    "spec_name": "bank_deposit_advices"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_check_clearing_observations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "check_clearing_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized check number",
      "name": "check_number_hash",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Paid or decision date",
      "name": "paid_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Original issue date when provided",
      "name": "issue_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Paid amount",
      "name": "paid_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized payee name",
      "name": "payee_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Paid, voided, stopped, exception, stale, or other status",
      "name": "clearing_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Positive-pay or clearing exception reason",
      "name": "exception_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Paid, voided, stopped, stale, or exception check observations from bank clearing and positive-pay decision files.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank check clearing observations",
    "spec_name": "bank_check_clearing_observations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_positive_pay_issue_commitments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "positive_pay_commitment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized check number",
      "name": "check_number_hash",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Check issue date",
      "name": "issue_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized payee name",
      "name": "payee_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Check amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Whether the packet voids a previously issued check",
      "name": "void_flag",
      "tests": [],
      "type": "boolean"
    },
    {
      "description": "AP, payroll, or ERP source payment id",
      "name": "source_payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Outbound file idempotency key",
      "name": "idempotency_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed positive-pay issue, void, and stale-check packets before outbound bank file delivery.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank positive pay issue commitments",
    "spec_name": "bank_positive_pay_issue_commitments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_ach_payment_commitments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "ach_payment_commitment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Payment batch id",
      "name": "payment_batch_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "ACH standard entry class code",
      "name": "entry_class_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized receiver name",
      "name": "receiver_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tokenized receiver account reference",
      "name": "receiver_account_token",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tokenized receiver routing reference",
      "name": "receiver_routing_token",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Debit or credit indicator",
      "name": "debit_credit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Payment amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested effective entry date",
      "name": "effective_entry_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language payment purpose",
      "name": "payment_purpose",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Outbound file idempotency key",
      "name": "idempotency_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed ACH payment batches before outbound bank file delivery.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank ACH payment commitments",
    "spec_name": "bank_ach_payment_commitments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_ach_return_noc_observations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "ach_return_noc_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Originating bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Original payment batch id",
      "name": "payment_batch_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Original ACH trace number",
      "name": "original_trace_number",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ACH return code",
      "name": "return_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Notice of change code",
      "name": "noc_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank receipt timestamp",
      "name": "received_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Original effective entry date",
      "name": "effective_entry_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Returned or corrected amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized receiver name",
      "name": "receiver_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Summary of changed account, routing, name, or transaction detail",
      "name": "correction_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "ACH return and notice-of-change observations for rejected, corrected, or changed ACH entries.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank ACH return and NOC observations",
    "spec_name": "bank_ach_return_noc_observations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_wire_payment_commitments

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Airlock commitment id",
      "name": "wire_payment_commitment_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the proposal was prepared",
      "name": "prepared_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Person or agent that prepared the proposal",
      "name": "prepared_by",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system target record id",
      "name": "bank_account_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Requested outbound action",
      "name": "action_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Review status before outbound sync",
      "name": "approval_status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Hashed or tokenized beneficiary name",
      "name": "beneficiary_name_hash",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tokenized beneficiary account reference",
      "name": "beneficiary_account_token",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Tokenized beneficiary bank identifier",
      "name": "beneficiary_bank_identifier_token",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Wire amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Requested execution date",
      "name": "requested_execution_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language payment purpose",
      "name": "payment_purpose",
      "tests": [],
      "type": "string"
    },
    {
      "description": "AP, payroll, treasury, or ERP source payment id",
      "name": "source_payment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Outbound instruction idempotency key",
      "name": "idempotency_key",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language summary of the intended change",
      "name": "expected_effect_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Observation or reconciliation evidence behind the proposal.",
      "name": "source_evidence",
      "tests": [],
      "type": "variant"
    },
    {
      "description": "Outbound provider API payload or payload fragment.",
      "name": "api_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Governed wire payment packets before outbound bank portal, API, or file delivery.",
    "file_workflow": true,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank wire payment commitments",
    "spec_name": "bank_wire_payment_commitments",
    "workflow_steps": [
      {
        "allow_delete": true,
        "allow_overwrite": true,
        "can_user_advance": true,
        "can_user_elevate": false,
        "description": "Draft proposal",
        "is_initial": true,
        "owner_can_manage_files": true,
        "parent_step_name": null,
        "require_comment": false,
        "step_name": "Draft",
        "step_order": 1,
        "user_can_manage_files": true
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Submitted for review",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Draft",
        "require_comment": true,
        "step_name": "Submitted",
        "step_order": 2,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Accepted for outbound sync",
        "is_initial": false,
        "owner_can_manage_files": true,
        "parent_step_name": "Submitted",
        "require_comment": true,
        "step_name": "Accepted",
        "step_order": 3,
        "user_can_manage_files": false
      },
      {
        "allow_delete": false,
        "allow_overwrite": false,
        "can_user_advance": false,
        "can_user_elevate": false,
        "description": "Sent to the external system",
        "is_initial": false,
        "owner_can_manage_files": false,
        "parent_step_name": "Accepted",
        "require_comment": true,
        "step_name": "Sent",
        "step_order": 4,
        "user_can_manage_files": false
      }
    ]
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_wire_status_observations

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "wire_status_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Airlock wire payment commitment id",
      "name": "wire_payment_commitment_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Originating bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Customer wire reference",
      "name": "wire_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank wire reference",
      "name": "bank_reference",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Wire status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Wire status timestamp",
      "name": "status_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Wire amount",
      "name": "amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Reject, repair, or cancellation reason code",
      "name": "reason_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language reason summary",
      "name": "reason_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Wire status observations for accepted, rejected, repaired, released, confirmed, or cancelled payments.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank wire status observations",
    "spec_name": "bank_wire_status_observations"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### bank_account_analysis_fees

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "account_analysis_fee_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Fee statement month",
      "name": "statement_month",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank service code",
      "name": "service_code",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank service description",
      "name": "service_description",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Service unit count",
      "name": "unit_count",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Service unit price",
      "name": "unit_price",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Fee amount",
      "name": "fee_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Waived or offset amount",
      "name": "waived_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Fee review status",
      "name": "review_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Account analysis fee observations for treasury service charges, volumes, earnings credits, and fee review.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Bank account analysis fees",
    "spec_name": "bank_account_analysis_fees"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "financial_institution_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### treasury_cash_forecast_snapshots

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "External system record id",
      "name": "cash_forecast_snapshot_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the observation was captured",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "External system update timestamp",
      "name": "source_updated_at",
      "tests": [],
      "type": "string"
    },
    {
      "description": "External system status",
      "name": "source_status",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Forecast run id",
      "name": "forecast_run_id",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Forecast date",
      "name": "forecast_date",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Business unit",
      "name": "business_unit",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Opening cash balance",
      "name": "opening_cash",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Expected cash inflows",
      "name": "expected_inflows",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Expected cash outflows",
      "name": "expected_outflows",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Forecast closing cash",
      "name": "closing_cash",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "High, medium, low, or other confidence label",
      "name": "confidence",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language forecast assumption summary",
      "name": "assumption_summary",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Selected provider payload fields retained for audit and future promotion.",
      "name": "raw_payload",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Cash forecast snapshots built from bank balances, open AR/AP, payroll, debt, tax, and planned transfer assumptions.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Treasury cash forecast snapshots",
    "spec_name": "treasury_cash_forecast_snapshots"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "treasury_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```

##### treasury_bank_reconciliation_findings

```sql
CALL airlock.admin.create_spec(PARSE_JSON($${
  "column_config": [
    {
      "description": "Reconciliation finding id",
      "name": "bank_reconciliation_finding_id",
      "tests": [
        "not_null",
        "unique"
      ],
      "type": "string"
    },
    {
      "description": "When the finding was produced",
      "name": "observed_at",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared system",
      "name": "left_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "First compared spec",
      "name": "left_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "First compared record id",
      "name": "left_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared system",
      "name": "right_system",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Second compared spec",
      "name": "right_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Second compared record id",
      "name": "right_record_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Identifier used for matching, such as sku, email_hash, product_url_hash, or order_number",
      "name": "match_key_type",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Matched identifier value or token",
      "name": "match_key_value",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Mismatch type",
      "name": "discrepancy_type",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Business severity",
      "name": "severity",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Plain-language business impact",
      "name": "business_impact",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Role or team that should review the finding",
      "name": "recommended_owner",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested next action",
      "name": "recommended_action",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Suggested outbound commitment spec for an accepted fix",
      "name": "suggested_commitment_spec",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Finding status",
      "name": "status",
      "tests": [
        "not_null"
      ],
      "type": "string"
    },
    {
      "description": "Reconciliation run id",
      "name": "run_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank account id",
      "name": "bank_account_id",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Statement date",
      "name": "statement_date",
      "tests": [],
      "type": "string"
    },
    {
      "description": "ERP or accounting system compared to the bank",
      "name": "gl_system",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Bank-side amount",
      "name": "bank_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Book-side amount",
      "name": "book_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Difference between bank and book amounts",
      "name": "difference_amount",
      "tests": [],
      "type": "number"
    },
    {
      "description": "Currency",
      "name": "currency",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Aging bucket for unresolved difference",
      "name": "aging_bucket",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Known reason the finding is still open",
      "name": "unresolved_reason",
      "tests": [],
      "type": "string"
    },
    {
      "description": "Compared values, source file references, and agent evidence for the finding.",
      "name": "evidence",
      "tests": [],
      "type": "variant"
    }
  ],
  "core_config": {
    "current_mode": "latest",
    "description": "Treasury reconciliation findings comparing bank balances, bank transactions, ERP cash, processor payouts, and payment commitments.",
    "file_workflow": false,
    "is_archived": false,
    "is_locked": false,
    "is_published": true,
    "materialize_as_table": true,
    "owner_role": "app_admin",
    "spec_alias": "Treasury bank reconciliation findings",
    "spec_name": "treasury_bank_reconciliation_findings"
  },
  "file_rules": {
    "file_format": {
      "cell_range": null,
      "encoding": "UTF8",
      "escape_unenclosed_field": "\\",
      "field_delimiter": ",",
      "field_optionally_enclosed_by": "\"",
      "file_type": "csv",
      "parse_header": true,
      "record_delimiter": "\n",
      "save_header": true
    },
    "filename_rules": {
      "enforce_filename_pattern": false,
      "filename_pattern": null,
      "sample_filenames": null
    }
  },
  "guest_access": {
    "enabled": true,
    "guest_roles": [
      {
        "access_level": "full_access",
        "role_name": "treasury_agent"
      }
    ],
    "isolated_access_level": "full_access",
    "isolated_directories_enabled": true,
    "isolated_directories_per_user": true,
    "public_folder": {
      "enabled": false,
      "subfolders": {
        "append_access": {
          "enabled": false
        },
        "full_access": {
          "enabled": false
        },
        "read_access": {
          "enabled": false
        }
      }
    }
  },
  "sample_data": {
    "sample_data_acknowledged": true,
    "sample_rows": []
  }
}$$));
```
