{
  "schema_version": "helix-feishu-approval-definition-v1",
  "flow_key": "data_access_service_account_grant",
  "name": "Helix BigQuery Service Account Access Request",
  "description": "Approves Helix-originated GCP Service Account read access to BigQuery datasets.",
  "deploy_mode": "manual_feishu_admin",
  "origin": "helix_only",
  "accept_external_origin": false,
  "callback_path": "/api/v1/approval/feishu/callback",
  "form_widgets": [
    {"canonical_field": "request_summary", "custom_id": "dax_sa_request_summary", "label": "Request summary", "type": "textarea", "required": true},
    {"canonical_field": "requested_access", "custom_id": "dax_sa_requested_access", "label": "Access to grant", "type": "textarea", "required": true},
    {"canonical_field": "dataset_list", "custom_id": "dax_sa_dataset_list", "label": "Datasets", "type": "textarea", "required": true},
    {"canonical_field": "business_reason", "custom_id": "dax_sa_business_reason", "label": "Business reason", "type": "textarea", "required": true},
    {"canonical_field": "detail_url", "custom_id": "dax_sa_detail_url", "label": "Open in Helix", "type": "input", "required": true}
  ],
  "approval_process": {
    "recommended_nodes": [
      {"key": "data_owner_review", "label": "Dataset owner review", "sequence": 1, "approver_source": "helix_resource_owner", "feishu_node_id": "data_owner_review", "instance_payload_field": "node_approver_open_id_list"}
    ]
  },
  "feishu_v4_api_contract": {
    "endpoint": "/open-apis/approval/v4/approvals?user_id_type=open_id&department_id_type=open_department_id",
    "update_existing_definition": "Include approval_code in the POST body to update an existing disposable/test definition; omit approval_code to create a new definition.",
    "approval_name_key": "@i18n@approval_name",
    "description_key": "@i18n@description",
    "form_content_source": "Build form.form_content from form_widgets with id=custom_id, type, required, and name=i18n_keys.form_widgets[canonical_field].",
    "i18n_keys": {
      "form_widgets": {
        "request_summary": "@i18n@request_summary",
        "requested_access": "@i18n@requested_access",
        "dataset_list": "@i18n@dataset_list",
        "business_reason": "@i18n@business_reason",
        "detail_url": "@i18n@detail_url"
      },
      "nodes": {
        "data_owner_review": "@i18n@data_owner_review"
      }
    },
    "i18n_resources": [
      {
        "locale": "en-US",
        "is_default": true,
        "texts": [
          {"key": "@i18n@approval_name", "value": "Helix BigQuery Service Account Access Request"},
          {"key": "@i18n@description", "value": "Approves Helix-originated GCP Service Account read access to BigQuery datasets."},
          {"key": "@i18n@request_summary", "value": "Request summary"},
          {"key": "@i18n@requested_access", "value": "Access to grant"},
          {"key": "@i18n@dataset_list", "value": "Datasets"},
          {"key": "@i18n@business_reason", "value": "Business reason"},
          {"key": "@i18n@detail_url", "value": "Open in Helix"},
          {"key": "@i18n@data_owner_review", "value": "Dataset owner review"}
        ]
      },
      {
        "locale": "zh-CN",
        "is_default": false,
        "texts": [
          {"key": "@i18n@approval_name", "value": "Helix BigQuery 服务账号访问申请"},
          {"key": "@i18n@description", "value": "审批由 Helix 发起的 GCP Service Account BigQuery 数据集只读访问。"},
          {"key": "@i18n@request_summary", "value": "申请摘要"},
          {"key": "@i18n@requested_access", "value": "拟授予的访问"},
          {"key": "@i18n@dataset_list", "value": "数据集"},
          {"key": "@i18n@business_reason", "value": "业务用途"},
          {"key": "@i18n@detail_url", "value": "在 Helix 打开"},
          {"key": "@i18n@data_owner_review", "value": "数据集负责人审批"}
        ]
      },
      {
        "locale": "ja-JP",
        "is_default": false,
        "texts": [
          {"key": "@i18n@approval_name", "value": "Helix BigQuery サービスアカウントアクセス申請"},
          {"key": "@i18n@description", "value": "Helix 起点の GCP サービスアカウントによる BigQuery データセット読み取りを承認します。"},
          {"key": "@i18n@request_summary", "value": "申請概要"},
          {"key": "@i18n@requested_access", "value": "付与するアクセス"},
          {"key": "@i18n@dataset_list", "value": "データセット"},
          {"key": "@i18n@business_reason", "value": "業務理由"},
          {"key": "@i18n@detail_url", "value": "Helix で開く"},
          {"key": "@i18n@data_owner_review", "value": "データセット owner レビュー"}
        ]
      }
    ],
    "viewers": [{"viewer_type": "TENANT"}],
    "node_list": [
      {"id": "START"},
      {"id": "data_owner_review", "name": "@i18n@data_owner_review", "node_type": "OR", "approver": [{"type": "Free"}], "approver_chosen_multi": true},
      {"id": "END"}
    ],
    "instance_dynamic_approver_payload": {
      "node_approver_open_id_list": [
        {"key": "data_owner_review", "value": ["ou_xxx"]}
      ]
    }
  }
}
