{
  "opencollection": "1.0.0",
  "info": {
    "name": "Resourcly analytics boms API",
    "version": "1.0.0"
  },
  "items": [
    {
      "info": {
        "name": "boms",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List BOMs",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/boms",
            "params": [
              {
                "name": "page",
                "value": "",
                "type": "query",
                "description": "Page number"
              },
              {
                "name": "page_size",
                "value": "",
                "type": "query",
                "description": "Items per page"
              },
              {
                "name": "business_node_id",
                "value": "",
                "type": "query",
                "description": "Filter by business node"
              },
              {
                "name": "search",
                "value": "",
                "type": "query",
                "description": "Filter by BOM name (substring) or BOM id"
              },
              {
                "name": "status",
                "value": "",
                "type": "query",
                "description": "Filter by status. Omit for active BOMs (excludes archived); pass 'archived' for archived BOMs"
              }
            ]
          },
          "docs": "Returns a paginated list of BOMs for the authenticated business"
        },
        {
          "info": {
            "name": "Import BOM from CSV/XLSX",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/boms/import"
          },
          "docs": "Uploads a spreadsheet file and creates a BOM with parsed lines"
        },
        {
          "info": {
            "name": "Preview BOM file",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/boms/preview"
          },
          "docs": "Parses a spreadsheet and returns preview rows with a default empty column mapping"
        },
        {
          "info": {
            "name": "Get BOM",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/boms/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              }
            ]
          },
          "docs": "Returns BOM metadata (without lines). Use GET /boms/{id}/lines to fetch lines lazily."
        },
        {
          "info": {
            "name": "Delete BOM",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/boms/:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              }
            ]
          },
          "docs": "Soft-deletes a BOM by setting status to archived"
        },
        {
          "info": {
            "name": "Preview permanent BOM deletion",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/boms/:id/deletion-preview",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              }
            ]
          },
          "docs": "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."
        },
        {
          "info": {
            "name": "Get BOM lines (lazy tree loading)",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/boms/:id/lines",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              },
              {
                "name": "parent_id",
                "value": "",
                "type": "query",
                "description": "Parent line ID (omit for root lines)"
              },
              {
                "name": "page",
                "value": "",
                "type": "query",
                "description": "Page number"
              },
              {
                "name": "page_size",
                "value": "",
                "type": "query",
                "description": "Items per page"
              },
              {
                "name": "search",
                "value": "",
                "type": "query",
                "description": "Substring match on part number or description across all tree levels (returns a flat list, ignores parent_id)"
              }
            ]
          },
          "docs": "Returns direct children of a parent line, or root-level lines when parent_id is omitted. Supports pagination."
        },
        {
          "info": {
            "name": "Permanently delete an archived BOM",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/boms/:id/permanent",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              }
            ]
          },
          "docs": "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."
        },
        {
          "info": {
            "name": "Get dynamic BOM raw rows",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/boms/:id/raw-rows",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "BOM ID"
              }
            ]
          },
          "docs": "Returns a page of a dynamic (raw_import) BOM's original rows with all columns."
        }
      ]
    }
  ],
  "bundled": true
}