ServiceCatalogImportRowDto
A single service parsed from an uploaded services catalog CSV, ready for user review.
Returned by the analyze endpoint; the RowId is the key used in the import selections.
Properties
| Name | Type | Description |
|---|---|---|
| rowId | string | Stable key for this row within the file: the Ignition #ID, the native Code, |
Stable key for this row within the file: the Ignition #ID, the native Code, | ||
| action | string | What importing this row will do: "Create", "Update" (native row whose Code matches |
What importing this row will do: "Create", "Update" (native row whose Code matches | ||
| name | string | The service name |
The service name | ||
| description | string | Plain-text service description (HTML from the source file is stripped) |
Plain-text service description (HTML from the source file is stripped) | ||
| categoryCode | string | The mapped service category code (falls back to Other when the source value is missing or unrecognised) |
The mapped service category code (falls back to Other when the source value is missing or unrecognised) | ||
| vatRate | enum | Standard Reduced Zero Exempt OutOfScope |
Standard Reduced Zero Exempt OutOfScope | ||
| pricing | array of ServiceCatalogPricingEntryDto | The pricing options parsed from the row, one per billing frequency. |
The pricing options parsed from the row, one per billing frequency. | ||
| setupFee | number | One-off setup fee, when present in the file (native format only) |
One-off setup fee, when present in the file (native format only) | ||
| minPrice | number | Minimum of an Ignition "price range" row — display hint only, the default price uses this value |
Minimum of an Ignition "price range" row — display hint only, the default price uses this value | ||
| maxPrice | number | Maximum of an Ignition "price range" row — display hint only |
Maximum of an Ignition "price range" row — display hint only | ||
| priceType | string | The raw Ignition price type ("fixed", "price range", "included"); null for native rows |
The raw Ignition price type ("fixed", "price range", "included"); null for native rows | ||
| isArchived | boolean | Whether the source row is archived/inactive |
Whether the source row is archived/inactive | ||
| hasServiceTerms | boolean | Whether the row carries service terms HTML that will become a content block |
Whether the row carries service terms HTML that will become a content block | ||
| serviceTermsGroup | integer | 1-based group index shared by rows whose service terms are identical |
1-based group index shared by rows whose service terms are identical | ||
| hasProposalContent | boolean | Whether the row carries proposal content HTML that will become a content block |
Whether the row carries proposal content HTML that will become a content block | ||
| proposalContentGroup | integer | 1-based group index shared by rows whose proposal content is identical |
1-based group index shared by rows whose proposal content is identical | ||
| isDuplicate | boolean | Whether a create row's name matches an existing service (case-insensitive) — |
Whether a create row's name matches an existing service (case-insensitive) — | ||
| defaultSelected | boolean | Whether the row should be pre-ticked in the review grid |
Whether the row should be pre-ticked in the review grid | ||
| skipReason | string | Why the row cannot be imported (e.g. "Missing service name", "Invalid price"); null for usable rows |
Why the row cannot be imported (e.g. "Missing service name", "Invalid price"); null for usable rows | ||
JSON Example
{
"rowId": "string",
"action": "string",
"name": "string",
"description": "string",
"categoryCode": "string"
}