---
title: "Mark an item as a preferred part"
method: PUT
path: "/v1/items/{id}/preferred"
tags: ["items"]
---

# Mark an item as a preferred part

`PUT /v1/items/{id}/preferred`

Sets or clears the preferred-part flag on an item. The flag is read-only everywhere else and can only be changed here.

## Path parameters

- `id` string, required

## Request body

- ModelsUpdateItemPreferredRequest
  - `is_preferred` boolean

## Response `200`

OK

- ModelsItemDetailsResponse
  - `additional_data` unknown
  - `bom` ModelsItemBomInfo
    - `identity` string — Identity is what this item is across the bills of materials you can access: "finished_good", "sub_assembly" or "component". Null when none of them contains this item.
  - `business_id` string — Business this item belongs to
  - `category` string — Product category
  - `created_at` string — Timestamps
  - `hs_code` ModelsItemHSCode
    - `chapter` string — First 2 digits
    - `confidence_level` string — "high"/"medium"/"low"; empty for override
    - `confidence_score` number — carried over when verified; nil for override
    - `created_at` string
    - `decided_at` string
    - `decided_by` string — user email
    - `heading` string — First 4 digits
    - `hs_code` string — 6-10 digit HS/HTS code
    - `hs_code_description` string — Description of the HS code
    - `id` string
    - `item_id` string
    - `note` string — optional user note (esp. for overrides)
    - `source` string — "verified" or "override"
    - `source_suggestion_id` string — provenance of the verified suggestion
    - `subheading` string — First 6 digits
    - `updated_at` string
  - `hs_code_suggestions` ModelsHSCodeSuggestion[] — HS code suggestions (customs classification) IMPORTANT: These are AI-generated SUGGESTIONS only. We do not provide binding tariff rulings. Final classification responsibility remains with the importer of record or their licensed customs broker.
    - `alternative_codes` ModelsHSCodeAlternative[]
      - `code` string
      - `description` string
      - `reason_rejected` string
    - `business_id` string
    - `chapter` string — First 2 digits
    - `completion_tokens` integer
    - `confidence_level` string — "high", "medium", "low"
    - `confidence_score` number — 0.0-1.0
    - `created_at` string
    - `heading` string — First 4 digits
    - `hs_code` string — 6-10 digit HS/HTS code
    - `hs_code_description` string — Official description
    - `id` string
    - `item_id` string
    - `key_factors` string[]
    - `model` string
    - `prompt_tokens` integer
    - `reasoning` string — AI explanation
    - `review_notes` string
    - `reviewed_at` string
    - `reviewed_by` string
    - `status` string — "suggested", "accepted", "rejected"
    - `subheading` string — First 6 digits
    - `updated_at` string
  - `id` string — Item identification
  - `is_preferred` boolean — Whether this item is flagged as a preferred part
  - `item_validation` ModelsItemValidationConfig
    - `conditions` ModelsDataGovernanceConditionSpec[]
      - `caseInsensitive` boolean
      - `comment` string
      - `count` integer
      - `countOp` string
      - `fieldId` string
      - `pattern` string
    - `statements` ModelsDataGovernanceStatementSpec[]
      - `errorMessage` string
      - `expression` string
      - `severity` string
  - `manufacturer` string — Manufacturer name
  - `part_number` string — Part number / MPN
  - `references` string[] — Reference identifiers (standards, cross-referenced part numbers, etc.)
  - `source_documents` ModelsSourceDocumentInfo[] — All linked source documents (from item_documents junction table)
    - `classification` string — Document classification (e.g. datasheet, technical_drawing)
    - `filename` string — Display filename (path prefix stripped)
    - `id` string — Document ID
    - `mesh_url` string — Signed URL for the GLB 3D preview mesh
    - `mime_type` string — MIME type (e.g. application/pdf, model/jt)
    - `status` string — Document processing status
    - `tables` ModelsDocumentTable[] — Extracted content from document
      - `headers` string[] — Table column headers
      - `id` string — Table UUID
      - `page_number` integer — Page number where table was found
      - `rows` array[] — Table data rows
        - string[]
      - `table_index` integer — Index of table on the page (0-based)
    - `url` string — Signed URL for document access
  - `spec_comparison` ModelsSpecComparisonRow[] — SpecComparison is a DISPLAY-ONLY section comparing the catalogue specification with what the extraction model read off the part's dimensioned drawing, present only when the seco_spec_compare dev feature is enabled for the business. It is rendered as its own table, separate from Specifications, which is untouched. It never feeds search, similarity, or any embedding — those read items.specifications and nothing else.
    - `catalogue_symbol` string
    - `catalogue_unit` string
    - `catalogue_value` string
    - `code` string — the catalogue's own short code (raw_key)
    - `detail` string — Detail explains how the state was reached, e.g. which reading agreed and whether a unit conversion and its rounding allowance were involved.
    - `name` string — display name (original_key), falls back to code
    - `predicted` ModelsSpecComparisonReading[]
      - `symbol` string — GD&T marker only (⌀, °, R), never a unit
      - `unit` string
      - `unit_system` string — "metric" | "inch" | ""
      - `value` string
    - `state` string — State is one of match, differ, only_catalogue, only_drawing, not_comparable. The two only_* states are the incomplete lines: one side has no value.
  - `spec_comparison_not_on_callout` integer — SpecComparisonNotOnCallout counts catalogue attributes the extraction model could read in principle but was never asked about on THIS item, because they do not appear on its callout illustration. Reported as one figure rather than as rows: a row for each would imply the model tried and failed, when it was never asked. Only meaningful alongside SpecComparison.
  - `specifications` ModelsMatchedSpec[] — Technical specifications
    - `canonical_name` string — Canonical attribute name (e.g., "input_voltage_max")
    - `canonical_unit` string — Catalog's expected unit (distinct from ucum_unit)
    - `confidence` number — Match confidence (0-1)
    - `count` string — Number of like features (e.g., "4" identical holes); model-extract part-analysis
    - `extracted_at` string — ISO 8601 timestamp when this spec was extracted
    - `match_method` string — How spec was matched to canonical name
    - `normalized_value` unknown
    - `original_key` string — Attribute name in English (translated from raw_key if non-English)
    - `original_unit` string — Original unit from document
    - `original_value` string — Value in English (translated from raw_value if non-English)
    - `page_number` integer — Page number in source document
    - `provisional_canonical` boolean — True when matched candidate has no confirmed canonical_name yet
    - `qualifier` string — Qualifier: min, max, typ, nominal
    - `qualifiers` string[] — Additional qualifiers (e.g., AC, DC)
    - `raw_key` string — Attribute name exactly as written in the document
    - `raw_value` string — Value exactly as written in the document
    - `registry_key_id` string — SHA-1 key_id from spec_key_registry
    - `rejected_match` string — LLM's suggestion when confidence was too low
    - `similarity_relevant` boolean — Model's per-spec flag for which features drive part matching (model-extract)
    - `source` string — Extraction source: llm, form_field, table
    - `source_document_id` string — Provenance: tracks which document and pipeline produced this attribute
    - `source_pipeline` string — Pipeline that produced this spec: mistral-ocr, technical-drawing, cad-worker, manual
    - `suggested_canonical` ModelsSuggestedCatalogAttribute
      - `aliases` string[] — Alternative names / aliases for this property
      - `property_description` string — Human-readable description of the property
      - `property_name` string — Suggested canonical property name
      - `unit` string — Suggested unit for the property
      - `value_examples` string[] — Example values for this property
      - `value_type` string — Expected value type (scalar, range, etc.)
    - `symbol` string — GD&T or engineering symbol (e.g., ⌀, ⊥, Ra)
    - `tolerance` string — Tolerance as written (e.g., "±0.1", "DIN ISO 2768-mk"); model-extract part-analysis
    - `ucum_unit` string — UCUM unit derived from original_unit by spec-worker
    - `value_type` string — Value type: scalar, range, vector, categorical, text
  - `three_d_specs` unknown
  - `title` string — Item title/description
  - `updated_at` string

## Other responses

- `400` — Bad Request
- `404` — Not Found

---

[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)
