---
title: "Import an ERP inventory spreadsheet from data sources"
method: POST
path: "/datasources/import/erp"
tags: ["datasources"]
---

# Import an ERP inventory spreadsheet from data sources

`POST /datasources/import/erp`

Reads one spreadsheet from the data sources bucket by key and imports it as ERP inventory for the given business node

## Request body

- ModelsDataSourceImportErpRequest
  - `business_node_id` string
  - `key` string
  - `mapping` ModelsErpColumnMapping
    - `attributes` ModelsERPAttributeMapping[]
      - `label` string — human-friendly display name (AI-suggested, user-editable)
      - `source_column` string — exact header text in the uploaded file == metadata key
      - `type` string — "string" | "number" (display/format hint)
    - `description_columns` string[]
    - `primary_identifier_column` string
    - `purchase_price_column` string
    - `purchase_quantity_column` string
    - `secondary_identifier_column` string
    - `supplier_name_column` string
    - `supplier_number_column` string

## Response `200`

OK

- ModelsInventoryUploadResponse
  - `bucket_url` string
  - `column_mapping` ModelsInventoryUploadMapping
    - `attributes` ModelsERPAttributeMapping[] — Attributes carries every non-first-class column preserved from the upload (dynamic import). Empty for legacy uploads made before dynamic mapping.
      - `label` string — human-friendly display name (AI-suggested, user-editable)
      - `source_column` string — exact header text in the uploaded file == metadata key
      - `type` string — "string" | "number" (display/format hint)
    - `description_columns` string[]
    - `description_name` string
    - `primary_identifier_column` string
    - `primary_identifier_name` string — Name fields for human-friendly display and llm
    - `purchase_price_column` string
    - `purchase_price_name` string
    - `purchase_quantity_column` string
    - `purchase_quantity_name` string
    - `secondary_identifier_column` string
    - `secondary_identifier_name` string
    - `supplier_name_column` string
    - `supplier_name_name` string
    - `supplier_number_column` string
    - `supplier_number_name` string
  - `created_at` string
  - `id` string
  - `import_id` string
  - `ingested_count` integer
  - `item_count` integer

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `500` — Internal Server Error

---

[API](https://skmtc.net/resourcly/apis/resourcly-api.md) · [All operations](https://skmtc.net/resourcly/apis/resourcly-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/resourcly/resourcly-api/revisions/7f97d8cd0f1e/schema)
