Spec Library

Airlock spec library

Category
Filter by system

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

Public spec source

Use the public airlock-specs repo for machine-readable specs and ready-made spec collections. Use airlock-tools for tooling, examples, and agent-friendly docs.

35 results

projects_catalog

operations project management v1.0.0

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
View create_spec call

projects

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

project management operations v1.0.0

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
View create_spec call

ops_issues

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

operations project management v1.0.0

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
View create_spec call

agent_product_feedback

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

operations v1.3.0

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
View create_spec call

timesheet_lines

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": []
  }
}$$));
View links and expectations

Expectations

[
  {
    "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

billing v1.0.0

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
View create_spec call

invoice_lines

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

finance v1.3.0

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
View create_spec call

budget_requests

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

operations billing finance collection v1.5.0

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
Links
Timesheet lines use project codes from the project catalog; Invoice lines use project codes from the project catalog; Weekly timesheet delivery expectation when enabled
View 4 create_spec calls

projects

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

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

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

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": []
  }
}$$));
View links and expectations

Expectations

[
  {
    "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

commerce finance collection v1.3.1

Mixed commerce operations collection: Shopify and other system observations, commerce reconciliation findings, governed Shopify change proposals, and Bill.com reimbursement operations.

Related systems
Shopify; Flexport; Bill.com; Ad platforms; Subscription platforms; Commerce reconciliation
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.
Links
Price-change proposals cite upstream reconciliation findings; Catalog-update proposals cite observed Shopify product data; Employee reimbursements are included as the finance operations collection

Specs

Spec segmentDirect systemDomainPurpose
department_account_mapInternalReference / access lensRole-filtered department/account map for caller-scoped reference reads.
shopify_api_productsShopifyObservationProduct and variant catalog observations.
shopify_api_ordersShopifyObservationOrder observations with line-item, shipping, discount, fulfillment, region, and date fields.
flexport_landed_costsFlexportObservationSKU-level freight, customs, landed cost, carrier, destination, and shipment state.
inventory_levelsInternalObservationInventory quantities by SKU/location.
ad_spendAd platformsObservationCampaign spend, channel, CAC, attributed revenue, and region.
subscription_eventsSubscription platformsObservationSubscription lifecycle events and churn/payment signals.
sku_catalog_reconciliationCommerce reconciliationReconciliationCatalog drift findings.
shipping_margin_reconciliationCommerce reconciliationReconciliationShipping and margin findings.
bundle_profitability_reconciliationCommerce reconciliationReconciliationBundle profitability findings.
shopify_agent_api_price_changesShopifyCommitment workflowAgent-proposed variant price changes before outbound Shopify API sync.
shopify_agent_api_catalog_updatesShopifyCommitment workflowAgent-proposed product or variant catalog updates before outbound Shopify API sync.
bill_com_employee_reimbursementsBill.comChild collectionEmployee reimbursements, Bill.com commitments, confirmations, and reconciliation.
View 21 create_spec calls

employee_info

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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": []
  }
}$$));
View links and expectations

bill_com_employee_reimbursements

finance collection v1.1.0

Mixed Bill.com-related workflow for employee submissions, receipt attachments, agent reviews, approvals, Bill.com commitments, confirmations, and reconciliation.

Related systems
Bill.com
Needs
bill_com_agent_role.
Useful for
Receipt workflows; Manager approval; Payment batch preparation; Bill.com setup checks; Payment matching
Links
Approved reimbursements feed outbound payment commitments; Sent commitments are matched to Bill.com payment confirmations; Confirmations feed payment reconciliation

Specs

Spec segmentDirect systemDomainPurpose
employee_infoInternalReferenceEmployee roster with managers, departments, and Bill.com payee ids.
bill_com_api_employee_payeesBill.comObservationBill.com payee setup pulled by an agent.
employee_reimbursementsInternalEmployee workflowEmployee-submitted reimbursements with required receipt attachments.
employee_reimbursement_reviewsInternalAgent reviewTimestamped reviews with check outcomes and evidence.
ops_issuesInternalIssue registerReview findings, exceptions, setup mismatches, policy questions, and reconciliation problems.
bill_com_updatesBill.comSetup commitmentAgent-proposed Bill.com setup edits.
employee_reimbursement_commitmentBill.comPayment commitmentOutbound payment packet built from approved reimbursements and employee/payee setup.
bill_com_api_payment_confirmationsBill.comObservationBill.com payment confirmations from webhook or polling.
reimbursement_payment_reconciliationBill.comReconciliationMatches sent reimbursement commitments to Bill.com payment confirmations.
View 9 create_spec calls

employee_info

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

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

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

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

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

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

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

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

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": []
  }
}$$));
View links and expectations

shopify_operations_library

commerce collection v1.0.0 Shopify

Direct Shopify Admin API observation and commitment specs for products, orders, customers, inventory, fulfillment, refunds, discounts, payouts, and governed store changes.

Direct systems
Shopify
Coverage
Extended
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.
Next objects
fulfillment_orders; markets; metaobjects; metafields; customer_segments; webhook_events
Omitted
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
Price-change proposals cite observed product or variant data; Refund proposals cite the order observation they intend to modify; Inventory adjustments cite the latest inventory-level observation

Specs

Spec segmentDirect systemDomainPurpose
shopify_api_productsShopifyObservationProduct and variant catalog memory.
shopify_api_ordersShopifyObservationOrder, fulfillment, and commerce-event memory.
shopify_api_customersShopifyObservationCustomer identity and lifecycle observations.
shopify_api_inventory_levelsShopifyObservationInventory quantities by item and location.
shopify_api_fulfillmentsShopifyObservationShipment and fulfillment status observations.
shopify_api_refundsShopifyObservationRefund and restock observations.
shopify_api_discountsShopifyObservationDiscount and promotion observations.
shopify_api_payoutsShopifyObservationSettlement and payout observations.
shopify_agent_api_price_changesShopifyCommitment workflowGoverned variant price changes.
shopify_agent_api_catalog_updatesShopifyCommitment workflowGoverned catalog updates.
shopify_agent_api_inventory_adjustmentsShopifyCommitment workflowGoverned inventory adjustments.
shopify_agent_api_refund_proposalsShopifyCommitment workflowGoverned refund proposals.
shopify_api_shopShopifyObservationShop settings and business identity observations.
shopify_api_locationsShopifyObservationLocation and fulfillment routing observations.
shopify_api_order_transactionsShopifyObservationPayment/refund transaction observations.
shopify_api_returnsShopifyObservationReturn and reverse-logistics observations.
shopify_api_draft_ordersShopifyObservationDraft order and quote observations.
shopify_api_abandoned_checkoutsShopifyObservationAbandoned checkout observations.
shopify_api_collectionsShopifyObservationCollection and merchandising observations.
View 19 create_spec calls

shopify_api_products

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commerce collection v1.0.0 Etsy

Etsy observation and commitment specs for listings, listing inventory, receipts, transactions, payment ledger entries, and governed listing/inventory updates.

Direct systems
Etsy
Coverage
Core
Coverage notes
Covers shop, listing, receipt, transaction, inventory, ledger, shipping, review, and governed listing updates. Deeper seller operations can be layered in later.
Next objects
taxonomy_nodes; seller_taxonomy_nodes; listing_images; listing_variation_images; production_partners; shop_holidays
Omitted
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
Listing update proposals cite the latest listing observation; Inventory update proposals cite listing inventory observations

Specs

Spec segmentDirect systemDomainPurpose
etsy_api_listingsEtsyObservationShop listing memory.
etsy_api_listing_inventoryEtsyObservationListing inventory and offering memory.
etsy_api_receiptsEtsyObservationSales receipt observations.
etsy_api_transactionsEtsyObservationLine-level transaction observations.
etsy_api_payment_ledger_entriesEtsyObservationShop payment ledger observations.
etsy_agent_api_listing_updatesEtsyCommitment workflowGoverned listing updates.
etsy_agent_api_inventory_updatesEtsyCommitment workflowGoverned listing inventory updates.
etsy_api_shopsEtsyObservationShop configuration observations.
etsy_api_shop_sectionsEtsyObservationShop section observations.
etsy_api_shipping_profilesEtsyObservationShipping profile observations.
etsy_api_reviewsEtsyObservationShop and listing review observations.
View 11 create_spec calls

etsy_api_listings

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

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

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

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

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

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

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

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

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

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

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

finance collection v1.0.0 Bill.com

Bill.com finance specs for vendors, bills, payments, customers, invoices, and governed AP setup/payment actions.

Direct systems
Bill.com
Coverage
Extended
Coverage notes
Covers AP, AR, organization/user setup, funding accounts, vendor credits, webhook events, and Spend & Expense card/budget/transaction objects.
Next objects
chart_of_accounts; classes; departments; attachments; approvals; purchase_orders
Omitted
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
Payment commitments cite the bill observation they intend to pay; Vendor update proposals cite the latest vendor setup observation

Specs

Spec segmentDirect systemDomainPurpose
bill_com_api_vendorsBill.comObservationVendor setup observations.
bill_com_api_billsBill.comObservationAP bill observations.
bill_com_api_paymentsBill.comObservationPayment lifecycle observations.
bill_com_api_customersBill.comObservationAR customer observations.
bill_com_api_invoicesBill.comObservationAR invoice observations.
bill_com_agent_api_bill_paymentsBill.comCommitment workflowGoverned AP payment packets.
bill_com_agent_api_vendor_updatesBill.comCommitment workflowGoverned vendor setup updates.
bill_com_api_organizationsBill.comObservationOrganization setup observations.
bill_com_api_usersBill.comObservationUser and permission observations.
bill_com_api_funding_accountsBill.comObservationFunding account observations.
bill_com_api_vendor_creditsBill.comObservationVendor credit observations.
bill_com_api_webhook_eventsBill.comObservationWebhook event observations.
bill_com_spend_expense_budgetsBill.comObservationSpend budget observations.
bill_com_spend_expense_cardsBill.comObservationSpend card observations.
bill_com_spend_expense_transactionsBill.comObservationSpend transaction observations.
View 15 create_spec calls

bill_com_api_vendors

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

billing finance collection v1.0.0 Stripe

Stripe billing and payments specs for customers, products/prices, subscriptions, invoices, payment intents, refunds, payouts, disputes, and governed billing actions.

Direct systems
Stripe
Coverage
Extended
Coverage notes
Covers billing, payments, checkout, discounts, payment methods, settlement, disputes, events, and governed refund/subscription changes.
Next objects
accounts; transfers; application_fees; payment_links; quotes; tax_rates; entitlements
Omitted
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
Refund proposals cite the payment observation they intend to refund; Subscription change proposals cite the current subscription observation

Specs

Spec segmentDirect systemDomainPurpose
stripe_api_customersStripeObservationBilling customer observations.
stripe_api_products_pricesStripeObservationProduct and price catalog observations.
stripe_api_subscriptionsStripeObservationSubscription lifecycle observations.
stripe_api_invoicesStripeObservationInvoice lifecycle observations.
stripe_api_payment_intentsStripeObservationPaymentIntent lifecycle observations.
stripe_api_refundsStripeObservationRefund observations.
stripe_api_payoutsStripeObservationPayout observations.
stripe_api_disputesStripeObservationDispute observations.
stripe_agent_api_refund_proposalsStripeCommitment workflowGoverned refund proposals.
stripe_agent_api_subscription_changesStripeCommitment workflowGoverned subscription changes.
stripe_api_checkout_sessionsStripeObservationCheckout Session lifecycle observations.
stripe_api_chargesStripeObservationCharge observations.
stripe_api_balance_transactionsStripeObservationBalance transaction observations.
stripe_api_credit_notesStripeObservationCredit note observations.
stripe_api_coupons_promotion_codesStripeObservationCoupon and promotion-code observations.
stripe_api_payment_methodsStripeObservationPayment method observations.
stripe_api_eventsStripeObservationWebhook/event observations.
View 17 create_spec calls

stripe_api_customers

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commerce billing collection v1.0.0 Square

Square POS and commerce specs for catalog objects, orders, payments, refunds, customers, inventory counts, and governed catalog/refund actions.

Direct systems
Square
Coverage
Extended
Coverage notes
Covers POS commerce, locations, catalog, inventory, payments, refunds, invoices, subscriptions, disputes, payouts, gift cards, team, and bookings.
Next objects
loyalty_accounts; cash_drawers; shifts; wage_settings; terminal_checkouts; bank_accounts
Omitted
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
Catalog update proposals cite the latest catalog object observation; Refund proposals cite the payment observation they intend to refund

Specs

Spec segmentDirect systemDomainPurpose
square_api_catalog_objectsSquareObservationCatalog object observations.
square_api_ordersSquareObservationOrder lifecycle observations.
square_api_paymentsSquareObservationPayment observations.
square_api_refundsSquareObservationRefund observations.
square_api_customersSquareObservationCustomer profile observations.
square_api_inventory_countsSquareObservationInventory count observations.
square_agent_api_catalog_updatesSquareCommitment workflowGoverned catalog updates.
square_agent_api_refund_proposalsSquareCommitment workflowGoverned refund proposals.
square_api_locationsSquareObservationLocation observations.
square_api_invoicesSquareObservationInvoice observations.
square_api_subscriptionsSquareObservationSubscription observations.
square_api_disputesSquareObservationDispute observations.
square_api_payoutsSquareObservationPayout observations.
square_api_gift_cardsSquareObservationGift card observations.
square_api_team_membersSquareObservationTeam member observations.
square_api_bookingsSquareObservationBooking observations.
View 16 create_spec calls

square_api_catalog_objects

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

operations billing collection v1.0.0 Toast

Toast restaurant operations specs for restaurants, menus, orders, payments, employees, time entries, and governed order/tip updates where supported.

Direct systems
Toast
Coverage
Core
Coverage notes
Covers restaurant setup, menus, orders, payments, employees, labor/time entries, discounts, dining/service areas, jobs, and cash movement.
Next objects
menu_availability; prep_stations; gift_cards; loyalty; house_accounts; kitchen_timings
Omitted
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
Order update proposals cite the current order observation; Tip adjustment proposals cite the current payment observation

Specs

Spec segmentDirect systemDomainPurpose
toast_api_restaurantsToastObservationRestaurant setup observations.
toast_api_menusToastObservationMenu hierarchy observations.
toast_api_ordersToastObservationGuest order observations.
toast_api_paymentsToastObservationOrder payment observations.
toast_api_employeesToastObservationEmployee observations.
toast_api_time_entriesToastObservationLabor time-entry observations.
toast_agent_api_order_updatesToastCommitment workflowGoverned order updates where supported.
toast_agent_api_tip_adjustmentsToastCommitment workflowGoverned tip adjustments where supported.
toast_api_discountsToastObservationDiscount observations.
toast_api_dining_optionsToastObservationDining option observations.
toast_api_service_areasToastObservationService area observations.
toast_api_jobsToastObservationLabor job observations.
toast_api_cash_entriesToastObservationCash entry observations.
toast_api_cash_depositsToastObservationCash deposit observations.
View 14 create_spec calls

toast_api_restaurants

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

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

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

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

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

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

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

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

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

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

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

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

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

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

finance billing collection v1.0.0 QuickBooks

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.

Direct systems
QuickBooks
Coverage
Extended
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.
Next objects
estimates; statements; budgets; reports; recurring_transactions; payment_methods; terms; exchange_rates
Omitted
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
Invoice update proposals cite the current QuickBooks invoice observation; Bill update proposals cite the current QuickBooks bill observation; Journal-entry proposals cite existing journal entries or related accounting observations; Customer master-data updates cite current customer observations; Vendor master-data updates cite current vendor observations

Specs

Spec segmentDirect systemDomainPurpose
quickbooks_api_company_infoQuickBooksObservationCompany setup observations.
quickbooks_api_preferencesQuickBooksObservationCompany preference observations.
quickbooks_api_accountsQuickBooksObservationChart of accounts observations.
quickbooks_api_customersQuickBooksObservationCustomer master-data observations.
quickbooks_api_vendorsQuickBooksObservationVendor master-data observations.
quickbooks_api_employeesQuickBooksObservationEmployee reference observations.
quickbooks_api_itemsQuickBooksObservationProduct and service item observations.
quickbooks_api_tax_codesQuickBooksObservationTax code observations.
quickbooks_api_classes_departmentsQuickBooksObservationClass and department observations.
quickbooks_api_invoicesQuickBooksObservationAR invoice observations.
quickbooks_api_paymentsQuickBooksObservationCustomer payment observations.
quickbooks_api_sales_receiptsQuickBooksObservationSales receipt observations.
quickbooks_api_credit_memosQuickBooksObservationCustomer credit memo observations.
quickbooks_api_refund_receiptsQuickBooksObservationCustomer refund receipt observations.
quickbooks_api_billsQuickBooksObservationAP bill observations.
quickbooks_api_bill_paymentsQuickBooksObservationBill payment observations.
quickbooks_api_vendor_creditsQuickBooksObservationVendor credit observations.
quickbooks_api_purchasesQuickBooksObservationPurchase and expense observations.
quickbooks_api_purchase_ordersQuickBooksObservationPurchase order observations.
quickbooks_api_depositsQuickBooksObservationDeposit observations.
quickbooks_api_transfersQuickBooksObservationTransfer observations.
quickbooks_api_journal_entriesQuickBooksObservationJournal entry observations.
quickbooks_api_time_activitiesQuickBooksObservationTime activity observations.
quickbooks_api_attachmentsQuickBooksObservationAttachment observations.
quickbooks_api_change_eventsQuickBooksObservationChange Data Capture observations.
quickbooks_agent_api_invoice_updatesQuickBooksCommitment workflowGoverned invoice updates.
quickbooks_agent_api_bill_updatesQuickBooksCommitment workflowGoverned bill updates.
quickbooks_agent_api_journal_entry_proposalsQuickBooksCommitment workflowGoverned journal entry proposals.
quickbooks_agent_api_customer_vendor_updatesQuickBooksCommitment workflowGoverned customer/vendor updates.
View 29 create_spec calls

quickbooks_api_company_info

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

finance operations collection v1.0.0 NetSuite

NetSuite ERP specs for subsidiaries, accounting dimensions, customers, vendors, items, AR/AP transactions, inventory movement, journal entries, custom records, and governed ERP updates.

Direct systems
NetSuite
Coverage
Extended
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.
Next objects
cash_sales; customer_deposits; work_orders; assembly_builds; opportunities; estimates; support_cases; file_cabinet_documents
Omitted
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
Sales-order update proposals cite the current NetSuite sales order observation; Vendor-bill update proposals cite the current vendor bill observation; Journal-entry proposals cite existing journal entries or related accounting observations; Item master-data updates cite current item observations; Customer master-data updates cite current customer observations; Vendor master-data updates cite current vendor observations; Inventory adjustment proposals cite current inventory-item observations

Specs

Spec segmentDirect systemDomainPurpose
netsuite_api_subsidiariesNetSuiteObservationSubsidiary and entity-scope observations.
netsuite_api_accountsNetSuiteObservationChart of accounts observations.
netsuite_api_departmentsNetSuiteObservationDepartment dimension observations.
netsuite_api_classesNetSuiteObservationClass dimension observations.
netsuite_api_locationsNetSuiteObservationLocation dimension observations.
netsuite_api_customersNetSuiteObservationCustomer master-data observations.
netsuite_api_vendorsNetSuiteObservationVendor master-data observations.
netsuite_api_employeesNetSuiteObservationEmployee reference observations.
netsuite_api_itemsNetSuiteObservationItem master-data observations.
netsuite_api_inventory_itemsNetSuiteObservationInventory quantity observations.
netsuite_api_sales_ordersNetSuiteObservationSales order observations.
netsuite_api_invoicesNetSuiteObservationAR invoice observations.
netsuite_api_customer_paymentsNetSuiteObservationCustomer payment observations.
netsuite_api_credit_memosNetSuiteObservationCustomer credit memo observations.
netsuite_api_return_authorizationsNetSuiteObservationReturn authorization observations.
netsuite_api_vendor_billsNetSuiteObservationAP vendor bill observations.
netsuite_api_vendor_paymentsNetSuiteObservationVendor payment observations.
netsuite_api_vendor_creditsNetSuiteObservationVendor credit observations.
netsuite_api_purchase_ordersNetSuiteObservationPurchase order observations.
netsuite_api_item_receiptsNetSuiteObservationReceiving observations.
netsuite_api_item_fulfillmentsNetSuiteObservationFulfillment observations.
netsuite_api_inventory_adjustmentsNetSuiteObservationInventory adjustment observations.
netsuite_api_transfer_ordersNetSuiteObservationTransfer order observations.
netsuite_api_depositsNetSuiteObservationDeposit observations.
netsuite_api_expense_reportsNetSuiteObservationExpense report observations.
netsuite_api_journal_entriesNetSuiteObservationJournal entry observations.
netsuite_api_custom_recordsNetSuiteObservationTenant custom-record observations.
netsuite_agent_api_sales_order_updatesNetSuiteCommitment workflowGoverned sales order updates.
netsuite_agent_api_vendor_bill_updatesNetSuiteCommitment workflowGoverned vendor bill updates.
netsuite_agent_api_journal_entry_proposalsNetSuiteCommitment workflowGoverned journal entry proposals.
netsuite_agent_api_item_updatesNetSuiteCommitment workflowGoverned item master-data updates.
netsuite_agent_api_customer_vendor_updatesNetSuiteCommitment workflowGoverned customer/vendor updates.
netsuite_agent_api_inventory_adjustment_proposalsNetSuiteCommitment workflowGoverned inventory adjustment proposals.
View 33 create_spec calls

netsuite_api_subsidiaries

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

crm operations collection v1.0.0 Salesforce

Salesforce CRM specs for accounts, contacts, leads, opportunities, cases, campaigns, activities, products, quotes, orders, contracts, assets, custom objects, change events, and governed CRM updates.

Direct systems
Salesforce
Coverage
Extended
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.
Next objects
files_content_documents; knowledge_articles; queues_groups; territories; forecasts; opportunity_splits; custom_metadata; managed_package_objects
Omitted
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
Account update proposals cite the current account observation; Contact update proposals cite the current contact observation; Lead update proposals cite the current lead observation; Opportunity update proposals cite the current opportunity observation; Case update proposals cite the current case observation; Campaign member update proposals cite the current campaign member observation

Specs

Spec segmentDirect systemDomainPurpose
salesforce_api_accountsSalesforceObservationAccount and company observations.
salesforce_api_contactsSalesforceObservationContact observations.
salesforce_api_leadsSalesforceObservationLead qualification observations.
salesforce_api_opportunitiesSalesforceObservationPipeline opportunity observations.
salesforce_api_opportunity_contact_rolesSalesforceObservationBuying committee role observations.
salesforce_api_casesSalesforceObservationSupport case observations.
salesforce_api_campaignsSalesforceObservationMarketing campaign observations.
salesforce_api_campaign_membersSalesforceObservationCampaign response observations.
salesforce_api_tasksSalesforceObservationSales and service task observations.
salesforce_api_eventsSalesforceObservationMeeting and calendar activity observations.
salesforce_api_productsSalesforceObservationProduct catalog observations.
salesforce_api_pricebook_entriesSalesforceObservationPricebook pricing observations.
salesforce_api_quotesSalesforceObservationQuote observations.
salesforce_api_quote_line_itemsSalesforceObservationQuote line item observations.
salesforce_api_ordersSalesforceObservationSales order observations.
salesforce_api_order_itemsSalesforceObservationOrder item observations.
salesforce_api_contractsSalesforceObservationContract observations.
salesforce_api_assetsSalesforceObservationInstalled asset observations.
salesforce_api_entitlementsSalesforceObservationSupport entitlement observations.
salesforce_api_usersSalesforceObservationUser and owner-routing observations.
salesforce_api_custom_objectsSalesforceObservationTenant custom-object observations.
salesforce_api_change_eventsSalesforceObservationCRM change event observations.
salesforce_agent_api_account_updatesSalesforceCommitment workflowGoverned account updates.
salesforce_agent_api_contact_lead_updatesSalesforceCommitment workflowGoverned contact/lead updates.
salesforce_agent_api_opportunity_updatesSalesforceCommitment workflowGoverned opportunity updates.
salesforce_agent_api_case_updatesSalesforceCommitment workflowGoverned case updates.
salesforce_agent_api_campaign_member_updatesSalesforceCommitment workflowGoverned campaign member updates.
View 27 create_spec calls

salesforce_api_accounts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

crm operations collection v1.0.0 HubSpot

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.

Direct systems
HubSpot
Coverage
Extended
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.
Next objects
deals_splits; orders; invoices; payments; feedback_submissions; conversations; playbooks; workflows; marketing_email_assets
Omitted
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
Company update proposals cite the current company observation; Contact update proposals cite the current contact observation; Deal update proposals cite the current deal observation; Ticket update proposals cite the current ticket observation; Association update proposals cite the current association observation

Specs

Spec segmentDirect systemDomainPurpose
hubspot_api_contactsHubSpotObservationContact observations.
hubspot_api_companiesHubSpotObservationCompany observations.
hubspot_api_dealsHubSpotObservationDeal pipeline observations.
hubspot_api_ticketsHubSpotObservationSupport ticket observations.
hubspot_api_leadsHubSpotObservationLead observations.
hubspot_api_productsHubSpotObservationProduct catalog observations.
hubspot_api_line_itemsHubSpotObservationLine item observations.
hubspot_api_quotesHubSpotObservationQuote observations.
hubspot_api_pipelinesHubSpotObservationPipeline and stage observations.
hubspot_api_ownersHubSpotObservationOwner and assignment observations.
hubspot_api_associationsHubSpotObservationCRM association observations.
hubspot_api_listsHubSpotObservationList membership observations.
hubspot_api_marketing_eventsHubSpotObservationMarketing event observations.
hubspot_api_formsHubSpotObservationForm definition observations.
hubspot_api_form_submissionsHubSpotObservationForm submission observations.
hubspot_api_callsHubSpotObservationCall engagement observations.
hubspot_api_emailsHubSpotObservationEmail engagement observations.
hubspot_api_meetingsHubSpotObservationMeeting engagement observations.
hubspot_api_notesHubSpotObservationNote engagement observations.
hubspot_api_tasksHubSpotObservationTask engagement observations.
hubspot_api_custom_objectsHubSpotObservationTenant custom-object observations.
hubspot_api_property_definitionsHubSpotObservationProperty schema observations.
hubspot_api_webhook_eventsHubSpotObservationWebhook event observations.
hubspot_agent_api_company_updatesHubSpotCommitment workflowGoverned company updates.
hubspot_agent_api_contact_updatesHubSpotCommitment workflowGoverned contact updates.
hubspot_agent_api_deal_updatesHubSpotCommitment workflowGoverned deal updates.
hubspot_agent_api_ticket_updatesHubSpotCommitment workflowGoverned ticket updates.
hubspot_agent_api_association_updatesHubSpotCommitment workflowGoverned association updates.
View 28 create_spec calls

hubspot_api_contacts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

project management operations collection v1.0.0 Jira

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.

Direct systems
Jira
Coverage
Core
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.
Next objects
filters; dashboards; permission_schemes; screens; automation_rules; service_management_requests; assets; deployments; development_information
Omitted
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
Issue creation proposals cite the target project observation; Issue update proposals cite the current issue observation; Issue transition proposals cite the current issue observation; Issue transition proposals can cite workflow observations for allowed status movement; Comment proposals cite the issue they are intended to update

Specs

Spec segmentDirect systemDomainPurpose
jira_api_projectsJiraObservationProject observations.
jira_api_issuesJiraObservationIssue/work item observations.
jira_api_issue_fieldsJiraObservationIssue field schema observations.
jira_api_issue_typesJiraObservationIssue type observations.
jira_api_statusesJiraObservationStatus observations.
jira_api_workflowsJiraObservationWorkflow observations.
jira_api_issue_commentsJiraObservationIssue comment observations.
jira_api_issue_attachmentsJiraObservationIssue attachment observations.
jira_api_issue_worklogsJiraObservationIssue worklog observations.
jira_api_issue_linksJiraObservationIssue relationship observations.
jira_api_versionsJiraObservationVersion and release observations.
jira_api_componentsJiraObservationComponent observations.
jira_api_usersJiraObservationUser and assignment observations.
jira_software_api_boardsJiraObservationBoard observations.
jira_software_api_sprintsJiraObservationSprint observations.
jira_software_api_epicsJiraObservationEpic observations.
jira_api_webhook_eventsJiraObservationJira webhook event observations.
jira_agent_api_issue_create_proposalsJiraCommitment workflowGoverned issue creation proposals.
jira_agent_api_issue_updatesJiraCommitment workflowGoverned issue updates.
jira_agent_api_issue_transitionsJiraCommitment workflowGoverned issue transitions.
jira_agent_api_comment_updatesJiraCommitment workflowGoverned comment updates.
View 21 create_spec calls

jira_api_projects

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

project management operations collection v1.0.0 Linear

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.

Direct systems
Linear
Coverage
Core
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.
Next objects
roadmaps; views; integrations; triage_responsibilities; relations; reactions; sla_statuses; github_pull_requests
Omitted
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
Issue creation proposals cite the target team observation; Issue update proposals cite the current issue observation; Project update proposals cite the current project observation; Comment proposals cite the issue they are intended to update

Specs

Spec segmentDirect systemDomainPurpose
linear_api_organizationsLinearObservationWorkspace organization observations.
linear_api_teamsLinearObservationTeam observations.
linear_api_usersLinearObservationUser and assignment observations.
linear_api_workflow_statesLinearObservationWorkflow state observations.
linear_api_issuesLinearObservationIssue observations.
linear_api_issue_commentsLinearObservationIssue comment observations.
linear_api_issue_attachmentsLinearObservationIssue attachment observations.
linear_api_issue_labelsLinearObservationIssue label observations.
linear_api_projectsLinearObservationProject observations.
linear_api_project_updatesLinearObservationProject update observations.
linear_api_milestonesLinearObservationMilestone observations.
linear_api_cyclesLinearObservationCycle observations.
linear_api_initiativesLinearObservationInitiative observations.
linear_api_documentsLinearObservationDocument observations.
linear_api_customersLinearObservationCustomer observations.
linear_api_customer_requestsLinearObservationCustomer request observations.
linear_api_webhook_eventsLinearObservationLinear webhook event observations.
linear_agent_api_issue_create_proposalsLinearCommitment workflowGoverned issue creation proposals.
linear_agent_api_issue_updatesLinearCommitment workflowGoverned issue updates.
linear_agent_api_project_updatesLinearCommitment workflowGoverned project updates.
linear_agent_api_comment_updatesLinearCommitment workflowGoverned comment updates.
View 21 create_spec calls

linear_api_organizations

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

operations collection v1.0.0 ServiceNow

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.

Direct systems
ServiceNow
Coverage
Core
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.
Next objects
service_mapping; business_applications; asset_management; configuration_item_changes; service_portfolio; major_incidents; on_call_schedules; custom_app_tables
Omitted
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
Incident creation proposals can cite impacted configuration item observations; Incident update proposals cite the current incident observation; Change request proposals cite current change observations when updating existing changes; Request update proposals cite the current request observation; Knowledge update proposals cite the current knowledge article observation

Specs

Spec segmentDirect systemDomainPurpose
servicenow_api_incidentsServiceNowObservationIncident observations.
servicenow_api_problemsServiceNowObservationProblem observations.
servicenow_api_change_requestsServiceNowObservationChange request observations.
servicenow_api_change_tasksServiceNowObservationChange task observations.
servicenow_api_requestsServiceNowObservationService request observations.
servicenow_api_requested_itemsServiceNowObservationRequested item observations.
servicenow_api_catalog_tasksServiceNowObservationCatalog task observations.
servicenow_api_catalog_itemsServiceNowObservationCatalog item observations.
servicenow_api_approvalsServiceNowObservationApproval observations.
servicenow_api_cmdb_configuration_itemsServiceNowObservationCMDB configuration item observations.
servicenow_api_cmdb_relationshipsServiceNowObservationCMDB relationship observations.
servicenow_api_service_offeringsServiceNowObservationService offering observations.
servicenow_api_sla_tasksServiceNowObservationSLA task observations.
servicenow_api_knowledge_articlesServiceNowObservationKnowledge article observations.
servicenow_api_attachmentsServiceNowObservationAttachment observations.
servicenow_api_usersServiceNowObservationUser observations.
servicenow_api_groupsServiceNowObservationGroup observations.
servicenow_api_departmentsServiceNowObservationDepartment observations.
servicenow_api_companiesServiceNowObservationCompany observations.
servicenow_api_journal_entriesServiceNowObservationJournal entry observations.
servicenow_api_webhook_eventsServiceNowObservationServiceNow event observations.
servicenow_agent_api_incident_create_proposalsServiceNowCommitment workflowGoverned incident creation proposals.
servicenow_agent_api_incident_updatesServiceNowCommitment workflowGoverned incident updates.
servicenow_agent_api_change_request_proposalsServiceNowCommitment workflowGoverned change request proposals.
servicenow_agent_api_request_updatesServiceNowCommitment workflowGoverned service request updates.
servicenow_agent_api_knowledge_updatesServiceNowCommitment workflowGoverned knowledge article updates.
View 26 create_spec calls

servicenow_api_incidents

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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_analytics_measurement_library

marketing commerce collection v1.0.0 Google Analytics

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.

Direct systems
Google Analytics
Coverage
Core
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.
Next objects
attribution_reports; funnel_reports; cohort_reports; user_permissions; google_ads_links; bigquery_links; data_retention_settings; measurement_protocol_secrets
Omitted
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
Audience update proposals cite the current audience observation; Key event update proposals cite the current key event observation; Custom definition proposals can cite current custom dimension observations; Custom definition proposals can cite current custom metric observations

Specs

Spec segmentDirect systemDomainPurpose
google_analytics_api_accountsGoogle AnalyticsObservationGA4 account observations.
google_analytics_api_propertiesGoogle AnalyticsObservationGA4 property observations.
google_analytics_api_data_streamsGoogle AnalyticsObservationData stream observations.
google_analytics_api_events_reportGoogle AnalyticsObservationEvent report observations.
google_analytics_api_page_reportGoogle AnalyticsObservationPage and screen report observations.
google_analytics_api_acquisition_reportGoogle AnalyticsObservationTraffic acquisition observations.
google_analytics_api_ecommerce_reportGoogle AnalyticsObservationEcommerce report observations.
google_analytics_api_key_eventsGoogle AnalyticsObservationKey event observations.
google_analytics_api_audiencesGoogle AnalyticsObservationAudience observations.
google_analytics_api_custom_dimensionsGoogle AnalyticsObservationCustom dimension observations.
google_analytics_api_custom_metricsGoogle AnalyticsObservationCustom metric observations.
google_analytics_api_realtime_snapshotsGoogle AnalyticsObservationRealtime snapshot observations.
google_analytics_agent_api_audience_updatesGoogle AnalyticsCommitment workflowGoverned audience updates.
google_analytics_agent_api_key_event_updatesGoogle AnalyticsCommitment workflowGoverned key event updates.
google_analytics_agent_api_custom_definition_updatesGoogle AnalyticsCommitment workflowGoverned custom definition updates.
View 15 create_spec calls

google_analytics_api_accounts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commerce marketing collection v1.0.0 Google Merchant Center

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.

Direct systems
Google Merchant Center
Coverage
Core
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.
Next objects
checkout_settings; order_tracking_signals; css_programs; product_studio_text_suggestions; product_studio_images; account_relationships; user_access; regional_shipping_services
Omitted
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
Product input update proposals cite submitted product input observations; Product input update proposals can cite product issue observations; Inventory update proposals can cite local inventory observations; Inventory update proposals can cite regional inventory observations; Promotion update proposals cite current promotion observations; Data source update proposals cite current data source observations

Specs

Spec segmentDirect systemDomainPurpose
google_merchant_center_api_accountsGoogle Merchant CenterObservationMerchant account observations.
google_merchant_center_api_account_issuesGoogle Merchant CenterObservationAccount issue observations.
google_merchant_center_api_productsGoogle Merchant CenterObservationProcessed product observations.
google_merchant_center_api_product_inputsGoogle Merchant CenterObservationProduct input observations.
google_merchant_center_api_product_issuesGoogle Merchant CenterObservationProduct issue observations.
google_merchant_center_api_data_sourcesGoogle Merchant CenterObservationData source observations.
google_merchant_center_api_file_uploadsGoogle Merchant CenterObservationFile upload health observations.
google_merchant_center_api_local_inventoriesGoogle Merchant CenterObservationLocal inventory observations.
google_merchant_center_api_regional_inventoriesGoogle Merchant CenterObservationRegional inventory observations.
google_merchant_center_api_promotionsGoogle Merchant CenterObservationPromotion observations.
google_merchant_center_api_performance_reportGoogle Merchant CenterObservationShopping performance observations.
google_merchant_center_api_competitive_visibilityGoogle Merchant CenterObservationCompetitive visibility observations.
google_merchant_center_api_conversion_sourcesGoogle Merchant CenterObservationConversion source observations.
google_merchant_center_api_programsGoogle Merchant CenterObservationShopping program observations.
google_merchant_center_api_return_policiesGoogle Merchant CenterObservationReturn policy observations.
google_merchant_center_api_shipping_settingsGoogle Merchant CenterObservationShipping settings observations.
google_merchant_center_api_product_reviewsGoogle Merchant CenterObservationProduct review observations.
google_merchant_center_api_merchant_reviewsGoogle Merchant CenterObservationMerchant review observations.
google_merchant_center_agent_api_product_input_updatesGoogle Merchant CenterCommitment workflowGoverned product input updates.
google_merchant_center_agent_api_inventory_updatesGoogle Merchant CenterCommitment workflowGoverned inventory updates.
google_merchant_center_agent_api_promotion_updatesGoogle Merchant CenterCommitment workflowGoverned promotion updates.
google_merchant_center_agent_api_data_source_updatesGoogle Merchant CenterCommitment workflowGoverned data source updates.
View 22 create_spec calls

google_merchant_center_api_accounts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

marketing operations collection v1.0.0 Google Search Console

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.

Direct systems
Google Search Console
Coverage
Core
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.
Next objects
rich_result_type_details; video_indexing_findings; page_experience_findings; removal_requests; manual_actions; mobile_usability_findings
Omitted
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
Sitemap submission requests cite the target site property observation; URL inspection requests cite the target site property observation; URL inspection requests can cite page indexing findings that triggered the inspection

Specs

Spec segmentDirect systemDomainPurpose
google_search_console_api_sitesGoogle Search ConsoleObservationSearch Console site observations.
google_search_console_api_search_analyticsGoogle Search ConsoleObservationSearch analytics observations.
google_search_console_api_url_inspection_resultsGoogle Search ConsoleObservationURL inspection result observations.
google_search_console_api_sitemap_submissionsGoogle Search ConsoleObservationSitemap submission observations.
google_search_console_api_page_indexing_findingsGoogle Search ConsoleObservationPage indexing finding observations.
google_search_console_api_enhancement_findingsGoogle Search ConsoleObservationEnhancement finding observations.
google_search_console_api_search_performance_opportunitiesGoogle Search ConsoleObservationSearch performance opportunity observations.
google_search_console_agent_api_sitemap_submission_requestsGoogle Search ConsoleCommitment workflowGoverned sitemap submission requests.
google_search_console_agent_api_url_inspection_requestsGoogle Search ConsoleCommitment workflowGoverned URL inspection requests.
View 9 create_spec calls

google_search_console_api_sites

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

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

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

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

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

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

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

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

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

marketing operations collection v1.0.0 Google Business Profile

Google Business Profile specs for accounts, locations, location insights, reviews, local posts, media, questions, answers, categories, attributes, verifications, notifications, and governed local profile updates.

Direct systems
Google Business Profile
Coverage
Core
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.
Next objects
food_menus; service_lists; booking_links; health_provider_attributes; insurance_networks; customer_media_review; bulk_location_quality
Omitted
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
Location update proposals cite current location observations; Review reply proposals cite the review observation; Local post update proposals cite current post observations when updating existing posts; Media update proposals cite current media observations when updating metadata; Question answer proposals cite the customer question observation

Specs

Spec segmentDirect systemDomainPurpose
google_business_profile_api_accountsGoogle Business ProfileObservationBusiness Profile account observations.
google_business_profile_api_locationsGoogle Business ProfileObservationLocation observations.
google_business_profile_api_location_insightsGoogle Business ProfileObservationLocation insight observations.
google_business_profile_api_reviewsGoogle Business ProfileObservationReview observations.
google_business_profile_api_local_postsGoogle Business ProfileObservationLocal post observations.
google_business_profile_api_mediaGoogle Business ProfileObservationMedia observations.
google_business_profile_api_questionsGoogle Business ProfileObservationQuestion observations.
google_business_profile_api_answersGoogle Business ProfileObservationAnswer observations.
google_business_profile_api_categoriesGoogle Business ProfileObservationCategory observations.
google_business_profile_api_attributesGoogle Business ProfileObservationAttribute observations.
google_business_profile_api_verificationsGoogle Business ProfileObservationVerification observations.
google_business_profile_api_notificationsGoogle Business ProfileObservationNotification observations.
google_business_profile_agent_api_location_updatesGoogle Business ProfileCommitment workflowGoverned location updates.
google_business_profile_agent_api_review_repliesGoogle Business ProfileCommitment workflowGoverned review replies.
google_business_profile_agent_api_local_post_updatesGoogle Business ProfileCommitment workflowGoverned local post updates.
google_business_profile_agent_api_media_updatesGoogle Business ProfileCommitment workflowGoverned media updates.
google_business_profile_agent_api_question_answersGoogle Business ProfileCommitment workflowGoverned question answers.
View 17 create_spec calls

google_business_profile_api_accounts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commerce marketing collection v1.0.0 TikTok Shop

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.

Direct systems
TikTok Shop
Coverage
Core
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.
Next objects
category_attributes; product_size_charts; global_seller_shops; creator_affiliate_orders; customer_service_messages; shipping_provider_services; shop_performance_scores
Omitted
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
Product update proposals cite current TikTok Shop product observations; SKU price update proposals cite current SKU observations; Inventory update proposals cite current inventory observations; Fulfillment update proposals cite current order observations; Return/refund proposals cite current return observations; Promotion update proposals cite current promotion observations

Specs

Spec segmentDirect systemDomainPurpose
tiktok_shop_api_shopsTikTok ShopObservationTikTok Shop setup observations.
tiktok_shop_api_productsTikTok ShopObservationTikTok Shop product observations.
tiktok_shop_api_skusTikTok ShopObservationTikTok Shop SKU and offer observations.
tiktok_shop_api_inventory_levelsTikTok ShopObservationTikTok Shop inventory observations.
tiktok_shop_api_warehousesTikTok ShopObservationTikTok Shop warehouse observations.
tiktok_shop_api_ordersTikTok ShopObservationTikTok Shop order observations.
tiktok_shop_api_order_linesTikTok ShopObservationTikTok Shop order line observations.
tiktok_shop_api_fulfillmentsTikTok ShopObservationTikTok Shop fulfillment observations.
tiktok_shop_api_returnsTikTok ShopObservationTikTok Shop return observations.
tiktok_shop_api_refundsTikTok ShopObservationTikTok Shop refund observations.
tiktok_shop_api_settlementsTikTok ShopObservationTikTok Shop settlement observations.
tiktok_shop_api_statement_transactionsTikTok ShopObservationTikTok Shop statement transaction observations.
tiktok_shop_api_promotionsTikTok ShopObservationTikTok Shop promotion observations.
tiktok_shop_api_product_issuesTikTok ShopObservationTikTok Shop product issue observations.
tiktok_shop_api_affiliate_contentTikTok ShopObservationTikTok Shop affiliate content observations.
tiktok_shop_api_webhook_eventsTikTok ShopObservationTikTok Shop event observations.
tiktok_shop_agent_api_product_updatesTikTok ShopCommitment workflowGoverned TikTok Shop product updates.
tiktok_shop_agent_api_sku_price_updatesTikTok ShopCommitment workflowGoverned TikTok Shop SKU price updates.
tiktok_shop_agent_api_inventory_updatesTikTok ShopCommitment workflowGoverned TikTok Shop inventory updates.
tiktok_shop_agent_api_fulfillment_updatesTikTok ShopCommitment workflowGoverned TikTok Shop fulfillment updates.
tiktok_shop_agent_api_return_refund_updatesTikTok ShopCommitment workflowGoverned TikTok Shop return/refund updates.
tiktok_shop_agent_api_promotion_updatesTikTok ShopCommitment workflowGoverned TikTok Shop promotion updates.
View 22 create_spec calls

tiktok_shop_api_shops

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

marketing commerce collection v1.0.0 TikTok Ads Ad platforms

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.

Direct systems
TikTok Ads; Ad platforms
Coverage
Core
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.
Next objects
lead_forms; instant_pages; brand_safety_settings; creative_insights; video_assets; split_tests; business_center_assets; shop_ads_extended_reporting
Omitted
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
Campaign budget proposals cite current campaign observations; Campaign status proposals cite current campaign observations; Ad group bid proposals cite current ad group observations; Creative update proposals cite current creative observations; Audience proposals cite current audience observations when updating existing audiences; Catalog product proposals cite current catalog product observations

Specs

Spec segmentDirect systemDomainPurpose
tiktok_ads_api_advertisersTikTok Ads, Ad platformsObservationTikTok Ads advertiser observations.
tiktok_ads_api_campaignsTikTok Ads, Ad platformsObservationTikTok Ads campaign observations.
tiktok_ads_api_ad_groupsTikTok Ads, Ad platformsObservationTikTok Ads ad group observations.
tiktok_ads_api_adsTikTok Ads, Ad platformsObservationTikTok Ads ad observations.
tiktok_ads_api_creativesTikTok Ads, Ad platformsObservationTikTok Ads creative observations.
tiktok_ads_api_spark_postsTikTok Ads, Ad platformsObservationTikTok Spark post observations.
tiktok_ads_api_catalogsTikTok Ads, Ad platformsObservationTikTok Ads catalog observations.
tiktok_ads_api_catalog_productsTikTok Ads, Ad platformsObservationTikTok Ads catalog product observations.
tiktok_ads_api_product_setsTikTok Ads, Ad platformsObservationTikTok Ads product set observations.
tiktok_ads_api_pixelsTikTok Ads, Ad platformsObservationTikTok Ads pixel observations.
tiktok_ads_api_eventsTikTok Ads, Ad platformsObservationTikTok Ads event observations.
tiktok_ads_api_audiencesTikTok Ads, Ad platformsObservationTikTok Ads audience observations.
tiktok_ads_api_performance_metricsTikTok Ads, Ad platformsObservationTikTok Ads performance observations.
tiktok_ads_api_product_performanceTikTok Ads, Ad platformsObservationTikTok product performance observations.
tiktok_ads_api_commentsTikTok Ads, Ad platformsObservationTikTok Ads comment observations.
tiktok_ads_agent_api_campaign_budget_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads campaign budget updates.
tiktok_ads_agent_api_campaign_status_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads campaign status updates.
tiktok_ads_agent_api_ad_group_bid_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads ad group bid updates.
tiktok_ads_agent_api_creative_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads creative updates.
tiktok_ads_agent_api_audience_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads audience updates.
tiktok_ads_agent_api_catalog_product_updatesTikTok Ads, Ad platformsCommitment workflowGoverned TikTok Ads catalog product updates.
View 21 create_spec calls

tiktok_ads_api_advertisers

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

reconciliation commerce operations collection v1.0.0 Commerce reconciliation

Commerce reconciliation specs for comparing customers, catalog presence, product content, prices, offers, inventory, orders, fulfillment, policy, payouts, campaigns, and storefront observations across systems.

Direct systems
Commerce reconciliation
Related systems
Website storefront; Shopify; Etsy; TikTok Shop; Amazon Selling Partner; Google Merchant Center; HubSpot; Stripe; Square
Coverage
Core
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.
Next objects
customer_merge_commitments; canonical_product_master; content_approval_workflow; cross-system freshness expectations; automated issue routing; reconciliation run summaries
Omitted
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
Catalog findings can cite Shopify product observations; Catalog findings can cite TikTok Shop product observations; Catalog findings can cite Amazon listing observations; Product content findings can cite rendered website product-page observations; Product content findings can cite Merchant Center product observations; Product content findings can cite Amazon catalog item observations; Price findings can cite visible website offer observations; Price findings can cite TikTok Shop SKU observations; Price findings can cite Amazon offer and pricing observations; Inventory findings can cite Shopify inventory observations; Inventory findings can cite TikTok Shop inventory observations; Inventory findings can cite Amazon FBA inventory observations; Customer identity findings can cite HubSpot contact observations; Order sync findings can cite TikTok Shop order observations; Order sync findings can cite Amazon order observations; Order sync findings can cite HubSpot deal observations; Marketplace policy findings can cite Amazon listing issue observations; Promotion and campaign findings can cite HubSpot campaign observations; Promotion and campaign findings can cite HubSpot campaign performance observations; Settlement findings can cite HubSpot payment observations; Settlement findings can cite HubSpot invoice observations; Settlement findings can cite Stripe payout observations

Specs

Spec segmentDirect systemDomainPurpose
website_storefront_product_pagesWebsite storefrontWebsite observationRendered product-page observations.
website_storefront_product_offersWebsite storefrontWebsite observationVisible offer and price observations.
website_storefront_structured_dataWebsite storefrontWebsite observationStructured data observations.
website_storefront_collection_pagesWebsite storefrontWebsite observationCollection page observations.
website_storefront_checkout_availabilityWebsite storefrontWebsite observationCheckout availability observations.
commerce_customer_identity_reconciliationCommerce reconciliationReconciliationCustomer identity reconciliation findings.
commerce_catalog_presence_reconciliationCommerce reconciliationReconciliationCatalog presence reconciliation findings.
commerce_product_content_reconciliationCommerce reconciliationReconciliationProduct content reconciliation findings.
commerce_price_offer_reconciliationCommerce reconciliationReconciliationPrice and offer reconciliation findings.
commerce_inventory_availability_reconciliationCommerce reconciliationReconciliationInventory availability reconciliation findings.
commerce_order_sync_reconciliationCommerce reconciliationReconciliationOrder sync reconciliation findings.
commerce_fulfillment_tracking_reconciliationCommerce reconciliationReconciliationFulfillment tracking reconciliation findings.
commerce_marketplace_policy_reconciliationCommerce reconciliationReconciliationMarketplace policy reconciliation findings.
commerce_settlement_payout_reconciliationCommerce reconciliationReconciliationSettlement and payout reconciliation findings.
commerce_promotion_campaign_reconciliationCommerce reconciliationReconciliationPromotion and campaign reconciliation findings.
View 15 create_spec calls

website_storefront_product_pages

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

commerce operations finance collection v1.0.0 Amazon Selling Partner

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.

Direct systems
Amazon Selling Partner
Coverage
Core
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.
Next objects
vendor_direct_fulfillment; inbound_fba_shipments; brand_analytics_reports; customer_feedback; messaging; seller_wallet; replenishment; data_kiosk_queries
Omitted
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
Listing update proposals cite current listing observations; Listing update proposals can cite listing issue observations; Price update proposals cite current offer and pricing observations; Inventory update proposals cite current merchant inventory observations; Fulfillment update proposals cite current order observations; Feed submission packets cite feed job observations when replaying or following up; A+ content proposals cite current A+ content observations

Specs

Spec segmentDirect systemDomainPurpose
amazon_sp_api_seller_accountsAmazon Selling PartnerObservationAmazon seller account observations.
amazon_sp_api_marketplacesAmazon Selling PartnerObservationAmazon marketplace observations.
amazon_sp_api_catalog_itemsAmazon Selling PartnerObservationAmazon catalog item observations.
amazon_sp_api_listings_itemsAmazon Selling PartnerObservationAmazon listing observations.
amazon_sp_api_listing_issuesAmazon Selling PartnerObservationAmazon listing issue observations.
amazon_sp_api_listing_restrictionsAmazon Selling PartnerObservationAmazon listing restriction observations.
amazon_sp_api_offers_pricingAmazon Selling PartnerObservationAmazon offer and pricing observations.
amazon_sp_api_product_fees_estimatesAmazon Selling PartnerObservationAmazon product fee estimate observations.
amazon_sp_api_fba_inventoryAmazon Selling PartnerObservationAmazon FBA inventory observations.
amazon_sp_api_merchant_inventoryAmazon Selling PartnerObservationAmazon merchant inventory observations.
amazon_sp_api_supply_sourcesAmazon Selling PartnerObservationAmazon supply source observations.
amazon_sp_api_ordersAmazon Selling PartnerObservationAmazon order observations.
amazon_sp_api_order_itemsAmazon Selling PartnerObservationAmazon order item observations.
amazon_sp_api_shipmentsAmazon Selling PartnerObservationAmazon shipment observations.
amazon_sp_api_returnsAmazon Selling PartnerObservationAmazon return observations.
amazon_sp_api_financial_eventsAmazon Selling PartnerObservationAmazon financial event observations.
amazon_sp_api_settlement_reportsAmazon Selling PartnerObservationAmazon settlement report observations.
amazon_sp_api_reportsAmazon Selling PartnerObservationAmazon report job observations.
amazon_sp_api_feedsAmazon Selling PartnerObservationAmazon feed job observations.
amazon_sp_api_notificationsAmazon Selling PartnerObservationAmazon notification observations.
amazon_sp_api_a_plus_contentAmazon Selling PartnerObservationAmazon A+ content observations.
amazon_sp_agent_api_listing_updatesAmazon Selling PartnerCommitment workflowGoverned Amazon listing updates.
amazon_sp_agent_api_price_updatesAmazon Selling PartnerCommitment workflowGoverned Amazon price updates.
amazon_sp_agent_api_inventory_updatesAmazon Selling PartnerCommitment workflowGoverned Amazon inventory updates.
amazon_sp_agent_api_fulfillment_updatesAmazon Selling PartnerCommitment workflowGoverned Amazon fulfillment updates.
amazon_sp_agent_api_feed_submissionsAmazon Selling PartnerCommitment workflowGoverned Amazon feed submissions.
amazon_sp_agent_api_a_plus_content_updatesAmazon Selling PartnerCommitment workflowGoverned Amazon A+ content updates.
View 27 create_spec calls

amazon_sp_api_seller_accounts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

marketing commerce collection v1.0.0 Amazon Ads Ad platforms

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.

Direct systems
Amazon Ads; Ad platforms
Coverage
Core
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.
Next objects
sponsored_tv; amazon_marketing_cloud_queries; brand_metrics; attribution_reports; creative_assets; recommendations; campaign_optimization_rules; bulk_operation_jobs
Omitted
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
Budget proposals can cite Sponsored Products campaign observations; Budget proposals can cite budget recommendation observations; Campaign status proposals can cite Sponsored Brands campaign observations; Bid proposals can cite keyword observations; Bid proposals can cite target observations; Keyword or target proposals can cite search term observations; Negative target proposals can cite search term observations; Creative proposals cite current creative observations

Specs

Spec segmentDirect systemDomainPurpose
amazon_ads_api_profilesAmazon Ads, Ad platformsObservationAmazon Ads profile observations.
amazon_ads_api_portfoliosAmazon Ads, Ad platformsObservationAmazon Ads portfolio observations.
amazon_ads_api_sponsored_products_campaignsAmazon Ads, Ad platformsObservationSponsored Products campaign observations.
amazon_ads_api_sponsored_brands_campaignsAmazon Ads, Ad platformsObservationSponsored Brands campaign observations.
amazon_ads_api_sponsored_display_campaignsAmazon Ads, Ad platformsObservationSponsored Display campaign observations.
amazon_ads_api_ad_groupsAmazon Ads, Ad platformsObservationAmazon Ads ad group observations.
amazon_ads_api_product_adsAmazon Ads, Ad platformsObservationAmazon product ad observations.
amazon_ads_api_keywordsAmazon Ads, Ad platformsObservationAmazon Ads keyword observations.
amazon_ads_api_targetsAmazon Ads, Ad platformsObservationAmazon Ads target observations.
amazon_ads_api_negative_targetsAmazon Ads, Ad platformsObservationAmazon Ads negative target observations.
amazon_ads_api_creativesAmazon Ads, Ad platformsObservationAmazon Ads creative observations.
amazon_ads_api_storesAmazon Ads, Ad platformsObservationAmazon Store observations.
amazon_ads_api_audiencesAmazon Ads, Ad platformsObservationAmazon Ads audience observations.
amazon_ads_api_search_termsAmazon Ads, Ad platformsObservationAmazon search term observations.
amazon_ads_api_performance_metricsAmazon Ads, Ad platformsObservationAmazon Ads performance observations.
amazon_ads_api_product_performanceAmazon Ads, Ad platformsObservationAmazon Ads product performance observations.
amazon_ads_api_budget_recommendationsAmazon Ads, Ad platformsObservationAmazon Ads budget recommendation observations.
amazon_ads_api_dsp_campaignsAmazon Ads, Ad platformsObservationAmazon DSP campaign observations.
amazon_ads_api_dsp_ad_groupsAmazon Ads, Ad platformsObservationAmazon DSP ad group observations.
amazon_ads_api_marketing_stream_eventsAmazon Ads, Ad platformsObservationAmazon Marketing Stream event observations.
amazon_ads_agent_api_campaign_budget_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads campaign budget updates.
amazon_ads_agent_api_campaign_status_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads campaign status updates.
amazon_ads_agent_api_bid_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads bid updates.
amazon_ads_agent_api_keyword_target_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads keyword and target updates.
amazon_ads_agent_api_negative_target_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads negative target updates.
amazon_ads_agent_api_creative_updatesAmazon Ads, Ad platformsCommitment workflowGoverned Amazon Ads creative updates.
View 26 create_spec calls

amazon_ads_api_profiles

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

marketing crm collection v1.0.0 HubSpot

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.

Direct systems
HubSpot
Coverage
Core
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.
Next objects
blog_posts; cms_pages; content_memberships; forms_v3_deep_fields; lead_scoring_rules; campaign_budget_plans; ads_audience_syncs; marketing_reports
Omitted
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
Campaign update proposals cite current campaign observations; Email update proposals cite current marketing email observations; Workflow update proposals cite current workflow observations; List update proposals cite current list observations from the CRM shelf; Campaign asset association proposals cite current campaign asset observations

Specs

Spec segmentDirect systemDomainPurpose
hubspot_marketing_api_campaignsHubSpotObservationMarketing campaign observations.
hubspot_marketing_api_campaign_assetsHubSpotObservationCampaign asset observations.
hubspot_marketing_api_campaign_performanceHubSpotObservationCampaign performance observations.
hubspot_marketing_api_emailsHubSpotObservationMarketing email observations.
hubspot_marketing_api_email_eventsHubSpotObservationMarketing email event observations.
hubspot_marketing_api_email_performanceHubSpotObservationMarketing email performance observations.
hubspot_marketing_api_landing_pagesHubSpotObservationLanding page observations.
hubspot_marketing_api_ctasHubSpotObservationCTA observations.
hubspot_marketing_api_tracking_urlsHubSpotObservationTracking URL observations.
hubspot_marketing_api_workflowsHubSpotObservationWorkflow automation observations.
hubspot_marketing_api_workflow_enrollmentsHubSpotObservationWorkflow enrollment observations.
hubspot_marketing_api_social_postsHubSpotObservationSocial post observations.
hubspot_marketing_api_ad_campaignsHubSpotObservationHubSpot ad campaign observations.
hubspot_marketing_api_webhook_eventsHubSpotObservationMarketing webhook event observations.
hubspot_marketing_agent_api_campaign_updatesHubSpotCommitment workflowGoverned campaign updates.
hubspot_marketing_agent_api_email_updatesHubSpotCommitment workflowGoverned marketing email updates.
hubspot_marketing_agent_api_workflow_updatesHubSpotCommitment workflowGoverned workflow updates.
hubspot_marketing_agent_api_list_updatesHubSpotCommitment workflowGoverned list updates.
hubspot_marketing_agent_api_asset_association_updatesHubSpotCommitment workflowGoverned campaign asset association updates.
View 19 create_spec calls

hubspot_marketing_api_campaigns

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

billing finance crm collection v1.0.0 HubSpot

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.

Direct systems
HubSpot
Coverage
Core
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.
Next objects
orders; payment_processing_fees; refunds; commerce_reports; tax_settings; buyer_checkout_sessions; subscription_invoice_runs; stripe_processor_links
Omitted
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
Invoice update proposals cite current invoice observations; Subscription update proposals cite current subscription observations; Payment link update proposals cite current payment link observations; Revenue record proposals cite current deal observations from the CRM shelf; Revenue record proposals can cite current payment observations

Specs

Spec segmentDirect systemDomainPurpose
hubspot_commerce_api_invoicesHubSpotObservationInvoice observations.
hubspot_commerce_api_invoice_line_itemsHubSpotObservationInvoice line item observations.
hubspot_commerce_api_paymentsHubSpotObservationPayment observations.
hubspot_commerce_api_payment_linksHubSpotObservationPayment link observations.
hubspot_commerce_api_subscriptionsHubSpotObservationSubscription observations.
hubspot_commerce_api_subscription_line_itemsHubSpotObservationSubscription line item observations.
hubspot_commerce_api_payment_schedulesHubSpotObservationPayment schedule observations.
hubspot_commerce_api_discounts_fees_taxesHubSpotObservationDiscount, fee, and tax observations.
hubspot_commerce_api_revenue_eventsHubSpotObservationRevenue event observations.
hubspot_commerce_api_webhook_eventsHubSpotObservationCommerce webhook event observations.
hubspot_commerce_agent_api_invoice_updatesHubSpotCommitment workflowGoverned invoice updates.
hubspot_commerce_agent_api_subscription_updatesHubSpotCommitment workflowGoverned subscription updates.
hubspot_commerce_agent_api_payment_link_updatesHubSpotCommitment workflowGoverned payment link updates.
hubspot_commerce_agent_api_revenue_record_updatesHubSpotCommitment workflowGoverned revenue record updates.
View 14 create_spec calls

hubspot_commerce_api_invoices

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

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

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

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

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

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

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

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

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

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

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

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

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

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

finance treasury reconciliation collection v1.0.0 Financial institutions Treasury

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.

Direct systems
Financial institutions; Treasury
Coverage
Core
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.
Next objects
bank-admin entitlement exports; merchant deposit detail; debt schedules; investment balances; intercompany transfers; fraud decision files; bank confirmation letters
Omitted
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
Positive-pay commitments cite the bank account reference they target; Check clearing observations can be compared to issued positive-pay commitments; ACH returns and notices of change cite the original ACH payment commitment where available; Wire status observations cite the approved wire payment commitment where available; Cash forecasts can cite current bank balance observations; Cash forecasts can cite intraday transaction observations; Bank reconciliation findings cite bank transaction observations; Bank reconciliation findings cite bank balance observations; Bank reconciliation findings can cite QuickBooks deposit observations; Bank reconciliation findings can cite QuickBooks bill payment observations; Bank reconciliation findings can cite NetSuite deposit observations; Bank reconciliation findings can cite Stripe balance transaction observations; Bank reconciliation findings can cite Square payout observations

Specs

Spec segmentDirect systemDomainPurpose
bank_account_masterFinancial institutions, TreasuryReferenceBank account reference memory.
bank_cash_balancesFinancial institutions, TreasuryObservationCash balance observations.
bank_statement_transactionsFinancial institutions, TreasuryObservationBank transaction observations.
bank_intraday_transactionsFinancial institutions, TreasuryObservationIntraday cash movement observations.
bank_lockbox_remittance_itemsFinancial institutions, TreasuryObservationLockbox remittance observations.
bank_deposit_advicesFinancial institutions, TreasuryObservationDeposit batch observations.
bank_check_clearing_observationsFinancial institutions, TreasuryObservationCheck clearing observations.
bank_positive_pay_issue_commitmentsFinancial institutions, TreasuryCommitment workflowPositive-pay issue and void commitments.
bank_ach_payment_commitmentsFinancial institutions, TreasuryCommitment workflowACH payment commitments.
bank_ach_return_noc_observationsFinancial institutions, TreasuryObservationACH return and notice-of-change observations.
bank_wire_payment_commitmentsFinancial institutions, TreasuryCommitment workflowWire payment commitments.
bank_wire_status_observationsFinancial institutions, TreasuryObservationWire status observations.
bank_account_analysis_feesFinancial institutions, TreasuryObservationBank fee observations.
treasury_cash_forecast_snapshotsTreasury, Financial institutionsPlanningCash forecast snapshots.
treasury_bank_reconciliation_findingsTreasury, Financial institutionsReconciliationBank-to-book reconciliation findings.
View 15 create_spec calls

bank_account_master

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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": []
  }
}$$));