Resourcly boms API

The boms API from Resourcly — 8 operation(s) for boms.

Operations 9

GET /boms List BOMs
POST /boms/import Import BOM from CSV/XLSX
POST /boms/preview Preview BOM file
GET /boms/{id} Get BOM
DELETE /boms/{id} Delete BOM
GET /boms/{id}/deletion-preview Preview permanent BOM deletion
GET /boms/{id}/lines Get BOM lines (lazy tree loading)
DELETE /boms/{id}/permanent Permanently delete an archived BOM
GET /boms/{id}/raw-rows Get dynamic BOM raw rows

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-boms-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-boms-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: API for document processing, item similarity search, and analytics.
  title: Resourcly analytics Boms 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: boms
paths:
  /boms:
    get:
      security:
      - BearerAuth: []
      description: Returns a paginated list of BOMs for the authenticated business
      tags:
      - boms
      summary: List BOMs
      parameters:
      - description: Page number
        name: page
        in: query
        schema:
          type: integer
          default: 1
      - description: Items per page
        name: page_size
        in: query
        schema:
          type: integer
          default: 20
          maximum: 100
      - description: Filter by business node
        name: business_node_id
        in: query
        schema:
          type: string
      - description: Filter by BOM name (substring) or BOM id
        name: search
        in: query
        schema:
          type: string
      - description: Filter by status. Omit for active BOMs (excludes archived); pass 'archived' for archived BOMs
        name: status
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /boms/import:
    post:
      security:
      - BearerAuth: []
      description: Uploads a spreadsheet file and creates a BOM with parsed lines
      tags:
      - boms
      summary: Import BOM from CSV/XLSX
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: BOM spreadsheet (XLSX or CSV)
                  format: binary
                name:
                  type: string
                  description: BOM name
                version:
                  type: string
                  default: '"1.0"'
                  description: BOM version
                business_node_id:
                  type: string
                  description: Business node ID (leaf organizational unit) the BOM belongs to
                mapping:
                  type: string
                  description: Column mapping JSON
              required:
              - file
              - name
              - business_node_id
  /boms/preview:
    post:
      security:
      - BearerAuth: []
      description: Parses a spreadsheet and returns preview rows with a default empty column mapping
      tags:
      - boms
      summary: Preview BOM file
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: BOM spreadsheet (XLSX or CSV)
                  format: binary
                max_rows:
                  type: integer
                  default: 10
                  description: Maximum preview rows
              required:
              - file
  /boms/{id}:
    get:
      security:
      - BearerAuth: []
      description: Returns BOM metadata (without lines). Use GET /boms/{id}/lines to fetch lines lazily.
      tags:
      - boms
      summary: Get BOM
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
    delete:
      security:
      - BearerAuth: []
      description: Soft-deletes a BOM by setting status to archived
      tags:
      - boms
      summary: Delete BOM
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
  /boms/{id}/deletion-preview:
    get:
      security:
      - BearerAuth: []
      description: 'Returns the impact of permanently deleting an archived BOM: line count and how many of the items it created are safe to delete (no documents, not ERP-linked, not used by another active BOM). The BOM must be archived.'
      tags:
      - boms
      summary: Preview permanent BOM deletion
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
  /boms/{id}/lines:
    get:
      security:
      - BearerAuth: []
      description: Returns direct children of a parent line, or root-level lines when parent_id is omitted. Supports pagination.
      tags:
      - boms
      summary: Get BOM lines (lazy tree loading)
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      - description: Parent line ID (omit for root lines)
        name: parent_id
        in: query
        schema:
          type: string
      - description: Page number
        name: page
        in: query
        schema:
          type: integer
          default: 1
      - description: Items per page
        name: page_size
        in: query
        schema:
          type: integer
          default: 100
          maximum: 500
      - description: Substring match on part number or description across all tree levels (returns a flat list, ignores parent_id)
        name: search
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
  /boms/{id}/permanent:
    delete:
      security:
      - BearerAuth: []
      description: Starts an asynchronous permanent delete of an archived BOM. The BOM is moved to status 'deleting' immediately and returns 202; a background worker then removes its lines, comparisons, and the BOM row, and deletes the items it created that are safe to remove (no documents attached, not ERP-linked, not referenced by another active BOM). This cannot be undone. The BOM must be 'archived'; a BOM already 'deleting' returns 409.
      tags:
      - boms
      summary: Permanently delete an archived BOM
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ErrorResponse'
  /boms/{id}/raw-rows:
    get:
      security:
      - BearerAuth: []
      description: Returns a page of a dynamic (raw_import) BOM's original rows with all columns.
      tags:
      - boms
      summary: Get dynamic BOM raw rows
      parameters:
      - description: BOM ID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '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'
components:
  schemas:
    models.ErrorResponse:
      type: object
      properties:
        code:
          type: string
        details: {}
        error:
          type: string
  securitySchemes:
    BearerAuth:
      description: 'Firebase JWT token. Format: "Bearer {token}"'
      type: apiKey
      name: Authorization
      in: header