# blackduck-api

> Bluck Duck API for Node

Latest version **1.0.15** (published 2021-06-12) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install blackduck-api
pnpm add blackduck-api
yarn add blackduck-api
bun add blackduck-api
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.15 |
| Published | 2021-06-12 |
| First published | 2020-06-27 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 56.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | David Johansson |
| Maintainers | ddjohn |
| Keywords | BlackDuck, Vulnerability |

## Links

- npm: https://www.npmjs.com/package/blackduck-api
- Repository: https://github.com/ddjohn/blackduck-api.js
- Homepage: https://github.com/ddjohn/blackduck-api.js#readme
- Issues: https://github.com/ddjohn/blackduck-api.js/issues
- npm.io page: https://npm.io/package/blackduck-api

## Dependencies (6)

- [got](https://npm.io/package/got.md) ^11.3.0
- [debug](https://npm.io/package/debug.md) ^4.1.1
- [mocha](https://npm.io/package/mocha.md) ^8.2.0
- [sinon](https://npm.io/package/sinon.md) ^9.0.2
- [lodash](https://npm.io/package/lodash.md) ^4.17.15
- [smtp-client](https://npm.io/package/smtp-client.md) ^0.3.1

## Recent versions

- 1.0.15 (latest) — 2021-06-12
- 1.0.14 — 2020-11-14
- 1.0.13 — 2020-10-23
- 1.0.12 — 2020-07-17
- 1.0.11 — 2020-07-02
- 1.0.10 — 2020-07-01
- 1.0.9 — 2020-07-01
- 1.0.8 — 2020-07-01
- 1.0.7 — 2020-06-29
- 1.0.6 — 2020-06-29
- 1.0.5 — 2020-06-29
- 1.0.4 — 2020-06-29
- 1.0.3 — 2020-06-28
- 1.0.2 — 2020-06-28
- 1.0.1 — 2020-06-27
- … 1 more at https://npm.io/package/blackduck-api/versions

## README

# bluckduck-api.js
Black Duck API for Node

## Introduction

### Using this package

```javascript
$ mkdir test && cd test
$ npm init
$ vim package.json
Add: "type":"module"
$ npm install -s blackduck-api
$ cat > test.js
import { BlackDuckAPI, BlackDuckReports } from 'blackduck-api';
const bd = new BlackDuckAPI('http://blackduck.company.com/api', 'your_api_token');
bd.getBearer().then((bearer) => {
	console.log(bearer);
});
CTRL+D
$ node test.js                                 -- or --
$ node --experimental-modules test.js          -- if you skipped the type:module step --

```

### What is supported?
- [x] List users, roles, projects, versions, components, bomcomponents and custom fields
- [x] Create/delete of a project, version and component
- [X] Simple reports for users, roles, projects, versions, components and bomcomponents


## Porcelain API

### Introduction
This table is an overview on supported functionality:

BlackDuck Type | Available Functions                                                     | Reports                                    |
-------------- | ------------------------------------------------------------------------|--------------------------------------------|
user           | users_object = listUsers(query, filter)                                 | usersReport(users_object)                  |
role           | roles_object = listRoles(query, filter)                                 | rolesReport(roles_object)                  |
project        | result = createProject(name)                                            |                                            |
project        | result = deleteProject(name)                                            |                                            |
project        | projects_object = listProjects(query, filter)                           | projectsReport(projects_object)            |
version        | result = createVersion(project_object, name)                            |                                            |
version        | result = deleteVersion(project_object, name)                            |                                            |
version        | versions_object = listVersions(project_object, query, filter)           | versionsReport(versions_object)            |
component      | components_object = listComponents(version_object, query, filter)       | componentssReport(components_object)       |
bom            | bomcomponents_object = listBomComponents(version_object, query, filter) | bomComponentssReport(bomcomponents_object) |
customfield    | fileds_object = getCustomFields(project_object, query, filter)          |                                            |

### Authenticate to Black Duck Server

Create a authentication token in the Black Duck server.

> getBearer()

Example:

```javascript
import { BlackDuckAPI } from 'blackduck-api';

const bd = new BlackDuckAPI("http://blackduck.company.com/api", "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef==");
bd.getBearer().then((bearer) => {
    log('Authenticated: ');
});
```

### General
All APIs returns:
* [[obj1}, ..., {objn}]] - query matched one or more objects
* [] - query matched nothing
* null - the request was rejected

To get detailed debug messages set the following environment varianle:
> $ export DEBUG=index.js

### Quering Projects
List projects
> getProjects(filter)

Filter:
* empty filter: list all
* available filters: name,projectTier,projectOwner 

Example:

```javascript
...
bd.getBearer().then((bearer) => {

    bd.getProjects('').then((projects) => {
        console.log(projects);
    });
});
```

### Quering versions
List versions
> getVersions(project_object, filter))

Filter:
* empty filter: list all
* available filters: versionName,nickname,phase  

Example:

```javascript
    bd.getProjects('name:someproject').then((projects) => {

        bd.getVersions(projects[0], '').then((versions) =>  {
            console.log(versions);
        });
    });
});
```

### Quering components
List components
> getComponents(version_object, filter))

Filter:
* empty filter: list all
* available filters: componentName,versionName 

Example:

```javascript
    bd.getProjects('name:someproject').then((projects) => {

        bd.getVersions(projects[0], 'versioName:someversion').then((versions) =>  {

            bd.getComponents(versions[0], '').then((components) => {
                console.log(compoenents)
            });
        });
    });
```

### Quering bill-of-materia
List BOM components
> getBomComponents(version_object, filter))

Filter:
* empty - no filter, list all
* componentName:component - search for a specific component 

Example:

```javascript
    bd.getProjects('name:someproject').then((projects) => {

        bd.getVersions(projects[0], 'versioName:someversion').then((versions) =>  {

            bd.getBomComponents(versions[0], '').then((components) => {
                console.log(compoenents)
            });
        });
    });
```

### Quering Users
List users
> getUsers(filter)

Filter:
* empty - no filter, list all

Example:

```
...javascript
bd.getBearer().then((bearer) => {

    bd.getUsers('').then((users) => {
        console.log(users);
    });
});
```

### Quering Roles
List roles
> getRoles(filter)

Filter:
* empty - no filter, list all

Example:

```javascript
...
bd.getBearer().then((bearer) => {

    bd.getRoles('').then((roles) => {
        console.log(roles);
    });
});
```

### Report Helpers

Some simpler reports are available to get started.

Example:
```javascript
import { BlackDuckAPI, BlackDuckReports } from 'blackduck-api.js';

const bd = new BlackDuckAPI(.., ...);

bd.getBearer().then((bearer) => {
    bd.getProjects('').then((projects) => {
        BlackDuckReports.projectReports(projects);
    });
});
```

Print projects:
> BlackDuckReports.projectsReports(projects);
```
 =================================================================================================== 
| total:1   | NAME                                     | DATE                     | USER            |
|---------------------------------------------------------------------------------------------------|
| project   | project1                                 | 2020-06-25T14:58:26.967Z | user10          |
| project   | project2                                 | 2020-06-25T14:58:26.967Z | user10          |
| project   | project3                                 | 2020-06-25T14:58:26.967Z | user11          |
 =================================================================================================== 
```

Print versions:
> BlackDuckReports.versionsReports(versions);
```
 ============================================================================================ 
| total:1   | NAME            | DATE                     | USER            | PHASE           |
|--------------------------------------------------------------------------------------------|
| version   | default         | 2020-06-25T14:58:26.969Z | user10          | DEVELOPMENT     |
| version   | android         | 2020-06-25T14:58:26.969Z | user10          | DEVELOPMENT     |
| version   | windows         | 2020-06-25T14:58:26.969Z | user11          | DEVELOPMENT     |
| version   | default         | 2020-06-25T14:58:26.969Z | user12          | DEVELOPMENT     |
 ============================================================================================ 
```

Print components:
> BlackDuckReports.componentsReports(components);

Print bill-of-materias:
> BlackDuckReports.componentsBomReports(bomcomponents);

Print users:
> BlackDuckReports.usersReports(users);
```
 =========================================================================================================================== 
| total:9   | NAME                 | FIRSTNAME            | LASTNAME             | EMAIL                                    |
|---------------------------------------------------------------------------------------------------------------------------|
| users     | user10               | Peter                | Karlsson             | peter.karlsson@gmail.com                 |
| users     | user11               | Sten                 | Nilsson              | sten.nilsson@gmail.com                   |
| users     | user12               | Helge                | Pettersson           | helge.pettersson@gmail.com               |
| users     | user13               | Alexandra            | Svensson             | alexandra.svensson@gmail.com             |
 =========================================================================================================================== 
```

Print roles:
> BlackDuckReports.rolesBomReports(roles);
```
 ===================================================================================================================== 
| total:8   | NAME                 | DESCRIPTION                                                                      |
|---------------------------------------------------------------------------------------------------------------------|
| roles     | Component Manager    | This role can create, update and delete custom components.                       |
| roles     | Global Code Scanner  | This user can run code scans and map them to any project.                        |
| roles     | Global Project Vi... | This role has read only access to all projects.                                  |
| roles     | License Manager      | Ability to create/modify/delete licenses.                                        |
| roles     | Policy Manager       | Ability to create/modify/delete policies.                                        |
| roles     | Project Creator      | This role can create projects/versions and edit their settings.                  |
| roles     | Super User           | This role has access to all user and project data. This person can create/mod... |
| roles     | System Administrator | This role will have access to system settings like the registration key, jobs... |
 ===================================================================================================================== 
```

---
_Source: https://npm.io/package/blackduck-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
