Resourcly Items API

The Items API from Resourcly — 15 operation(s) for items.

Operations 16

DELETE /items/{id}/hs-code Remove an item's HS code decision
POST /items/{id}/hs-code/override Overwrite an item's HS code
POST /items/{id}/hs-code/verify Verify an item's HS code
GET /items List items with pagination
POST /items/comparison-status/batch Get comparison review statuses for multiple item pairs
GET /items/similarity List items by similarity score range
GET /items/similarity-clusters List item clusters by AI classification
GET /items/similarity-counts Get similarity out-degree counts for items
GET /items/{id1}/compare/{id2} Compare two items side-by-side
GET /items/{id1}/compare/{id2}/ai-analysis Get AI-powered engineering analysis for two items
GET /items/{id1}/comparison-status/{id2} Get comparison review status for two items
PUT /items/{id1}/comparison-status/{id2} Update comparison review status for two items
GET /items/{id} Get item details
GET /items/{id}/source-url Get signed source document URL for an item
GET /items/{id}/visual-similar Get visually similar items
PUT /v1/items/{id}/preferred Mark an item as a preferred part

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/resourcly-items-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

resourcly-items-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: API for document processing, item similarity search, and analytics.
  title: Resourcly analytics Items API
  termsOfService: https://resourcly.com/terms
  contact:
    name: API Support
    email: support@resourcly.com
  license:
    name: Proprietary
  version: 1.0.0
servers:
- url: https://api.resourcly.com/v1
tags:
- name: Items
paths:
  /items/{id}/hs-code:
    delete:
      security:
      - BearerAuth: []
      description: Deletes the user's verified/override HS code decision for the item, reverting to AI suggestions.
      tags:
      - Items
      summary: Remove an item's HS code decision
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id}/hs-code/override:
    post:
      security:
      - BearerAuth: []
      description: Stores a user-corrected HS code for the item as a durable override that survives AI re-classification. Chapter/heading/subheading are derived from the code.
      tags:
      - Items
      summary: Overwrite an item's HS code
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ItemHSCode'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.HSCodeOverrideRequest'
        description: Corrected HS code + optional description/note
        required: true
  /items/{id}/hs-code/verify:
    post:
      security:
      - BearerAuth: []
      description: Marks an AI-suggested HS code as verified for the item. The decision persists and survives AI re-classification. If no suggestion_id is given, the highest-confidence suggestion is verified.
      tags:
      - Items
      summary: Verify an item's HS code
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ItemHSCode'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.HSCodeVerifyRequest'
        description: Suggestion to verify + optional note
  /items:
    get:
      security:
      - BearerAuth: []
      description: Returns a paginated list of all items the user has access to, ordered by creation date (newest first).
      tags:
      - Items
      summary: List items with pagination
      parameters:
      - description: Max results (default 50, max 100)
        name: limit
        in: query
        schema:
          type: integer
          default: 50
      - description: Pagination offset
        name: offset
        in: query
        schema:
          type: integer
          default: 0
      - description: Comma-separated business node UUIDs to filter by
        name: business_node_ids
        in: query
        schema:
          type: string
      - description: When true (default), return only items with at least one attached file (any type). Pass false to include items with no files.
        name: with_files
        in: query
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.ItemListResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/comparison-status/batch:
    post:
      security:
      - BearerAuth: []
      description: Returns review statuses for a batch of item pairs
      tags:
      - Items
      summary: Get comparison review statuses for multiple item pairs
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ComparisonStatusBatchResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.ComparisonStatusBatchRequest'
        description: Item pairs
        required: true
  /items/similarity:
    get:
      security:
      - BearerAuth: []
      description: Returns items that have at least one similarity relationship with a score
      tags:
      - Items
      summary: List items by similarity score range
      parameters:
      - description: Minimum similarity score (inclusive)
        name: min_score
        in: query
        required: true
        schema:
          type: number
      - description: Maximum similarity score (exclusive), 0 for no upper bound
        name: max_score
        in: query
        required: true
        schema:
          type: number
      - description: Max results (default 50, max 100)
        name: limit
        in: query
        schema:
          type: integer
          default: 50
      - description: Pagination offset
        name: offset
        in: query
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.SimilarityItemsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '503':
          description: Neo4j service not available
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/similarity-clusters:
    get:
      security:
      - BearerAuth: []
      description: Returns connected components of items linked by SIMILARITY edges whose
      tags:
      - Items
      summary: List item clusters by AI classification
      parameters:
      - description: AI classification value (e.g. duplicate, alternative)
        name: ai_classification
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handlers.SimilarityClustersResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '503':
          description: Neo4j service not available
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/similarity-counts:
    get:
      security:
      - BearerAuth: []
      description: Returns for each item ID how many unique other items it has a one-way SIMILARITY relationship to above the given threshold
      tags:
      - Items
      summary: Get similarity out-degree counts for items
      parameters:
      - description: Comma-separated item UUIDs
        name: ids
        in: query
        required: true
        schema:
          type: string
      - description: Minimum similarity score (default 0.70)
        name: threshold
        in: query
        schema:
          type: number
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: integer
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id1}/compare/{id2}:
    get:
      security:
      - BearerAuth: []
      description: Returns a detailed comparison of two items including specifications, similarity scores, and spec differences for side-by-side display
      tags:
      - Items
      summary: Compare two items side-by-side
      parameters:
      - description: First item ID
        name: id1
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - description: Second item ID
        name: id2
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ItemComparisonResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id1}/compare/{id2}/ai-analysis:
    get:
      security:
      - BearerAuth: []
      description: 'Returns a cached AI analysis or generates a new one using Claude.

        The analysis includes engineering verdict, side-by-side attribute comparison,

        and catalog management recommendations.'
      tags:
      - Items
      summary: Get AI-powered engineering analysis for two items
      parameters:
      - description: First item ID
        name: id1
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - description: Second item ID
        name: id2
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.AIItemComparisonResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id1}/comparison-status/{id2}:
    get:
      security:
      - BearerAuth: []
      description: Returns the review status (duplicate/alternative/rejected/pending) for a pair of items
      tags:
      - Items
      summary: Get comparison review status for two items
      parameters:
      - description: First item ID
        name: id1
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - description: Second item ID
        name: id2
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ComparisonStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
    put:
      security:
      - BearerAuth: []
      description: Sets the review status (duplicate/alternative/rejected) for a pair of items. Pass null status to reset to pending.
      tags:
      - Items
      summary: Update comparison review status for two items
      parameters:
      - description: First item ID
        name: id1
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - description: Second item ID
        name: id2
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ComparisonStatusResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.UpdateComparisonStatusRequest'
        description: Status update
        required: true
  /items/{id}:
    get:
      security:
      - BearerAuth: []
      description: Returns detailed information about an item including specifications, source document, and duplicate group info
      tags:
      - Items
      summary: Get item details
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ItemDetailsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id}/source-url:
    get:
      security:
      - BearerAuth: []
      description: Returns a short-lived signed URL to download the item's source document
      tags:
      - Items
      summary: Get signed source document URL for an item
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /items/{id}/visual-similar:
    get:
      security:
      - BearerAuth: []
      description: 'Finds items with visually similar document images using gemini-embedding-2 image embeddings.

        Compares up to 5 images from the item''s source document against all other document images.'
      tags:
      - Items
      summary: Get visually similar items
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - description: Max results (default 20, max 100)
        name: limit
        in: query
        schema:
          type: integer
          default: 20
      - description: Min similarity score 0-1 (default 0.3)
        name: threshold
        in: query
        schema:
          type: number
          default: 0.3
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.VisualSimilarResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '503':
          description: Visual search not available
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /v1/items/{id}/preferred:
    put:
      description: Sets or clears the preferred-part flag on an item. The flag is read-only everywhere else and can only be changed here.
      tags:
      - Items
      summary: Mark an item as a preferred part
      parameters:
      - description: Item ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ItemDetailsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/models.UpdateItemPreferredRequest'
        description: Preferred flag
        required: true
components:
  schemas:
    handlers.ItemListResponse:
      type: object
      properties:
        business_id:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/services.ItemListEntry'
        limit:
          type: integer
        offset:
          type: integer
        total:
          type: integer
    models.ItemHSCode:
      type: object
      properties:
        chapter:
          description: First 2 digits
          type: string
        confidence_level:
          description: '"high"/"medium"/"low"; empty for override'
          type: string
        confidence_score:
          description: carried over when verified; nil for override
          type: number
        created_at:
          type: string
        decided_at:
          type: string
        decided_by:
          description: user email
          type: string
        heading:
          description: First 4 digits
          type: string
        hs_code:
          description: 6-10 digit HS/HTS code
          type: string
        hs_code_description:
          description: Description of the HS code
          type: string
        id:
          type: string
        item_id:
          type: string
        note:
          description: optional user note (esp. for overrides)
          type: string
        source:
          description: '"verified" or "override"'
          type: string
        source_suggestion_id:
          description: provenance of the verified suggestion
          type: string
        subheading:
          description: First 6 digits
          type: string
        updated_at:
          type: string
    models.SimilarityScores:
      type: object
      properties:
        additional_score:
          description: similarity over the other measurements (0-1)
          type: number
        exact_manufacturer_match:
          description: True if manufacturers match exactly
          type: boolean
        exact_part_number_match:
          description: Flags for exact/tolerance matches
          type: boolean
        fit:
          description: 'Two-stage compare (model_extraction tenant only): a SEPARATE additional score over the

            other part measurements (surface roughness, material, weight, bending radius), computed

            only when the important specs "fit". Deliberately NOT folded into WeightedTotal, so the

            primary score/classification is identical for every tenant.'
          type: boolean
        has_additional:
          description: an additional (other-measurements) score was computed
          type: boolean
        manufacturer_score:
          description: Manufacturer similarity (0-1)
          type: number
        part_number_score:
          description: Part number similarity (0-1)
          type: number
        specifications_score:
          description: Specifications similarity (0-1)
          type: number
        specs_within_tolerance:
          description: True if key specs (mass, dimensions) are within tolerance
          type: boolean
        title_score:
          description: Title semantic similarity (0-1)
          type: number
        weighted_total:
          description: Weighted total score (0-1)
          type: number
    services.SimilarityListItem:
      type: object
      properties:
        business_id:
          type: string
        internal_code:
          description: drawing internal code (Kacher-test); shown as the small identifier line
          type: string
        item_id:
          type: string
        manufacturer:
          type: string
        max_score:
          description: highest SIMILARITY score
          type: number
        part_number:
          type: string
        reviewed_count:
          description: human-validated matches for this item (model_extraction; 0 otherwise)
          type: integer
        similar_count:
          description: number of items above threshold
          type: integer
        title:
          type: string
    models.HSCodeAlternative:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
        reason_rejected:
          type: string
    models.HSCodeOverrideRequest:
      type: object
      properties:
        description:
          type: string
        hs_code:
          type: string
        note:
          type: string
    models.HSCodeVerifyRequest:
      type: object
      properties:
        note:
          type: string
        suggestion_id:
          type: string
    models.ErrorResponse:
      type: object
      properties:
        code:
          type: string
        details: {}
        error:
          type: string
    models.ComparisonStatusResponse:
      type: object
      properties:
        business_id:
          type: string
        created_at:
          type: string
        id:
          type: string
        item_id_1:
          type: string
        item_id_2:
          type: string
        reviewed_at:
          description: When the review was performed
          type: string
        reviewed_by:
          description: Business user ID who reviewed
          type: string
        status:
          description: '"pending", "duplicate", "alternative", "rejected"; with model_extraction also "interchangeable_variant", "superseded", "product_variant", "related_parts", "component_of"'
          type: string
        updated_at:
          type: string
    models.ComparisonStatusBatchResponse:
      type: object
      properties:
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/models.ComparisonStatusResponse'
    models.UpdateItemPreferredRequest:
      type: object
      properties:
        is_preferred:
          type: boolean
    models.AIAnalysisCatalogActions:
      type: object
      properties:
        notes_for_buyer:
          type: string
        primary_part:
          type: string
        secondary_part:
          type: string
        suggested_relationship_tag:
          type: string
    models.DataGovernanceConditionSpec:
      type: object
      properties:
        caseInsensitive:
          type: boolean
        comment:
          type: string
        count:
          type: integer
        countOp:
          type: string
        fieldId:
          type: string
        pattern:
          type: string
    models.AIItemComparisonResponse:
      type: object
      properties:
        analysis:
          description: Present when status == "ready"
          allOf:
          - $ref: '#/components/schemas/models.AIAnalysisResult'
        completion_tokens:
          type: integer
        created_at:
          type: string
        model:
          type: string
        prompt_tokens:
          type: integer
        status:
          description: '"ready", "unavailable"'
          type: string
    handlers.SimilarityItemsResponse:
      type: object
      properties:
        business_id:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/services.SimilarityListItem'
        limit:
          type: integer
        offset:
          type: integer
        total:
          type: integer
    models.ItemPair:
      type: object
      properties:
        item_id_1:
          type: string
        item_id_2:
          type: string
    models.UpdateComparisonStatusRequest:
      type: object
      properties:
        status:
          description: '"duplicate", "alternative", "rejected", or "pending" (resets to null in DB); with model_extraction also "interchangeable_variant", "superseded", "product_variant", "related_parts", "component_of"'
          type: string
    models.DocumentTable:
      type: object
      properties:
        headers:
          description: Table column headers
          type: array
          items:
            type: string
        id:
          description: Table UUID
          type: string
        page_number:
          description: Page number where table was found
          type: integer
        rows:
          description: Table data rows
          type: array
          items:
            type: array
            items:
              type: string
        table_index:
          description: Index of table on the page (0-based)
          type: integer
    models.VisualSimilarItem:
      type: object
      properties:
        classification:
          description: exact_duplicate, duplicate, alternative, different
          type: string
        image_signed_url:
          description: Time-limited signed HTTPS URL
          type: string
        item_id:
          type: string
        manufacturer:
          type: string
        part_number:
          type: string
        similarity_score:
          type: number
        source_filename:
          type: string
        title:
          type: string
    models.DataGovernanceStatementSpec:
      type: object
      properties:
        errorMessage:
          type: string
        expression:
          type: string
        severity:
          type: string
    models.AIAnalysisSimilarityScores:
      type: object
      properties:
        manufacturer_score:
          type: number
        part_number_score:
          type: number
        specifications_score:
          type: number
        system_classification:
          type: string
        system_weighted_total:
          type: number
        title_score:
          type: number
    models.AIAnalysisItemSummary:
      type: object
      properties:
        category:
          type: string
        manufacturer:
          type: string
        part_number:
          type: string
        title:
          type: string
    models.SuggestedCatalogAttribute:
      type: object
      properties:
        aliases:
          description: Alternative names / aliases for this property
          type: array
          items:
            type: string
        property_description:
          description: Human-readable descripti

# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/resourcly/refs/heads/main/openapi/resourcly-items-api-openapi.yml