# BorderguruApi.ProductsApi

All URIs are relative to *http://localhost:9090*

Method | HTTP request | Description
------------- | ------------- | -------------
[**createProduct**](ProductsApi.md#createProduct) | **POST** /products | Creates a new product in the database
[**deleteProductById**](ProductsApi.md#deleteProductById) | **DELETE** /products/{productId} | Deletes a product by id
[**getProductById**](ProductsApi.md#getProductById) | **GET** /products/{productId} | Returns a product by id
[**listCompanySummariesByProduct**](ProductsApi.md#listCompanySummariesByProduct) | **GET** /products/{productId}/companies | Returns a list of all companies that bought a certain product
[**listProducts**](ProductsApi.md#listProducts) | **GET** /products | Returns a list of all products
[**updateProduct**](ProductsApi.md#updateProduct) | **PUT** /products/{productId} | Updates an existing product


<a name="createProduct"></a>
# **createProduct**
> Product createProduct(product)

Creates a new product in the database

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var product = new BorderguruApi.CreateProductBody(); // CreateProductBody | Product data


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.createProduct(product, callback);
```

### Parameters

Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
 **product** | [**CreateProductBody**](CreateProductBody.md)| Product data | 

### Return type

[**Product**](Product.md)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: application/json
 - **Accept**: application/json

<a name="deleteProductById"></a>
# **deleteProductById**
> deleteProductById(productId)

Deletes a product by id

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var productId = "productId_example"; // String | Products unique id


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully.');
  }
};
apiInstance.deleteProductById(productId, callback);
```

### Parameters

Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
 **productId** | **String**| Products unique id | 

### Return type

null (empty response body)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: application/json
 - **Accept**: 

<a name="getProductById"></a>
# **getProductById**
> Product getProductById(productId)

Returns a product by id

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var productId = "productId_example"; // String | Products unique id


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.getProductById(productId, callback);
```

### Parameters

Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
 **productId** | **String**| Products unique id | 

### Return type

[**Product**](Product.md)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: Not defined
 - **Accept**: application/json

<a name="listCompanySummariesByProduct"></a>
# **listCompanySummariesByProduct**
> [CompanySummary] listCompanySummariesByProduct(productId)

Returns a list of all companies that bought a certain product

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var productId = "productId_example"; // String | Products unique id


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.listCompanySummariesByProduct(productId, callback);
```

### Parameters

Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
 **productId** | **String**| Products unique id | 

### Return type

[**[CompanySummary]**](CompanySummary.md)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: Not defined
 - **Accept**: application/json

<a name="listProducts"></a>
# **listProducts**
> [Product] listProducts()

Returns a list of all products

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.listProducts(callback);
```

### Parameters
This endpoint does not need any parameter.

### Return type

[**[Product]**](Product.md)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: Not defined
 - **Accept**: application/json

<a name="updateProduct"></a>
# **updateProduct**
> Product updateProduct(productId, product)

Updates an existing product

### Example
```javascript
var BorderguruApi = require('borderguru_api');

var apiInstance = new BorderguruApi.ProductsApi();

var productId = "productId_example"; // String | Products unique id

var product = new BorderguruApi.UpdateProductBody(); // UpdateProductBody | Product data


var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
apiInstance.updateProduct(productId, product, callback);
```

### Parameters

Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
 **productId** | **String**| Products unique id | 
 **product** | [**UpdateProductBody**](UpdateProductBody.md)| Product data | 

### Return type

[**Product**](Product.md)

### Authorization

No authorization required

### HTTP request headers

 - **Content-Type**: application/json
 - **Accept**: application/json

