jas- / MLIB-Inventory-Server

RESTFul API for management of computing inventory assets

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MLIB-Inventory-Server

Introduction

Restful service for handling computer asset management.

Download

It is best to clone this repo like so git clone --recursive https://github.com/jas-/MLIB-Inventory-Server.git

Installation

To install simply run the ./install file located within the 'install' folder

Virtual Host

An example...

<VirtualHost *:80>
    ServerName inventory.dev
    DocumentRoot /var/www/html/MLIB-Inventory-Server/public
    SetEnv APPLICATION_ENV "development"
    <Directory /var/www/html/MLIB-Inventory-Server/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog /var/log/httpd/inventory_error
    CustomLog /var/log/httpd/inventory_log common
</VirtualHost>

MLIB-Inventory-Server RESTFul API

This document serves as a guide during installation, configuration and implementation of the provided API for all asset record management functionality.

This project works as the server component to the Marriott Library Information Services inventory management service. The offical project page can be found @ github.com/jas-/MLIB-Inventory-Server

Project details

The MLIB-Inventory-Server RESTFul API was developed to provide an easy to use inventory asset management service. It does this by providing an easy to implement API for any programming language that supports the HTTP protocol.

Download

This project allows for two methods of downloading, the GIT method (recommended) or the manual method. Please read on for details of each.

Using GIT

<p>
  A <a href="" target="_blank">git</a> client is the prefered method of
  installation as all dependencies will be setup and installed.

  <pre class="prettyprint lang-sh linenums prettyprinted">
    <code class="language-sh">

shell> git clone --recursive https://github.com/jas-/MLIB-Inventory-Server.git

Manual Installation

<p>
  Installing manually is not recommended however can be accomplished fairly
  easily by downloading the source of this project @
  <a href="https://github.com/jas-/MLIB-Inventory-Server/archive/master.zip" target="_blank">
  MLIB-Inventory-Server.zip</a>.

  <pre class="prettyprint lang-sh linenums prettyprinted">
    <code class="language-sh">

shell> unzip2 master.zip

<p>
  Once you have downloaded the project you must extract it in a publicly
  accessible area of your web server.
</p>

<p>
  This project uses the Zend Framework which will need to be downloaded and
  installed into the <i>/path/to/MLIB-Inventory-Server/vendor/ZF2</i>
  folder. You can download the framework @
  <a href="https://github.com/zendframework/zf2/archive/master.zip" target="_blank">Zend Framework 2</a>
</p>

Installation

Once you have downloaded or used git to install the base files we will now need to install the project.

Details

<p>
  Installation performs the following operations:
  <ol>
    <li>New database creation</li>
    <li>New accounts:
      <ul>
        <li>Administrative account (Read & Write privileges)</li>
        <li>Read Only account (Read only privileges)</li>
      </ul>
    </li>
    <li>Database table creation</li>
    <li>Foreign key constraints for relational tables</li>
    <li>Views for non-authenticated use</li>
    <li>Stored procedures for all database operations</li>
    <li>Application configuration based on user input</li>
  </ol>
</p>

Installation tool

<p>
  In order for the installation to be quite painless an installer is
  included with the project. Please note that currently, becuase there is
  only one version released that should be considered 'beta' no method
  for updating database schema objects exists so you will want to ensure
  a good working backup has been created prior to running the installer.

  <pre class="prettyprint lang-sh linenums prettyprinted">
    <code class="language-sh">

shell> bash install/install

Post installation

<p>
  Due to the cross origin resource sharing same origin restrictions if you
  have setup the MLIB-Inventory (mobile web client) to access this
  service you must add that URL to the whitelist (if installed on a
  separate domain) to ensure proper functionality.
</p>

<p>
  Using a stored procedure (created during the installation process), simply
  issue the following command on the database.

  <pre class="prettyprint lang-sh linenums prettyprinted">
    <code class="language-sh">

shell> mysql -u <username> -p <dbname> -e 'CALL CorsAddUpdate("<appName>", "<FQDN>", "<IP>")'

API

This API will allow management of records through a common end point per record type.

Below is a list of the available end points and a description of the record type.

Models

<p>
  Manage Models records. Below are the details of the available fields
  per Models record. <i>* Important: Computer, Monitor & RMA records all require an existing, matching model entry</i>

  <ol>
    <li><i>Model</i> - (Required) The model number associated with the montitor</li>
    <li><i>Notes</i> - (Optional) Any notes associated with the model</li>
    <li><i>Description</i> - (Optional) Any description information assocated with model</li>
  </ol>
</p>

<div id="api-models-list">
  <h3>List models <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To list all available models:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /model

  <p>
    Response example:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "591", "Model": "6200", "Notes": "", "Description": "" }, { "Id": "734", "Model": "6350", "Notes": "", "Description": "" }, /* ... */ ]

<div id="api-models-search">
  <h3>Search models <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To search all available models (* is the wildcard):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /model/96*

  <h4>Response example(s):</h4>

  <p>A successful response when searching for Models asset records
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "id": "590", "model": "965", "description": "", "notes": "" }, /* ... */ ]

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to search specified records' }

<div id="api-models-add">
  <h3>Add models <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To add a new models:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

POST /model

  <p>
    Serialized data (see <a href="#api-models">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

model=<model-number>

  <h4>Response example(s):</h4>

  <p>A successful response when adding a Models asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Models record sucessfully add' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "model": "Model value is invalid" } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to add specified record' }

<!-- Models Update -->
<div id="api-models-update">
  <h3>Update models <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To update an existing Models record:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

PUT /model/<record-id>

  <p>
    Serialized data (see <a href="#api-models">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

model=<model-number>&eowd=<eowd-date>&opd=<opd-date>

  <h4>Response example(s):</h4>

  <p>A successful response when updating a Models asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully updated record' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "model": "Model value is invalid" } }

  <p>No changes occured message
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ warning: 'No changes to models record occured' }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting models record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Could not edit record' }

<!-- Models Delete -->
<div id="api-models-delete">
  <h3>Delete models <span><a href="#toc">&#8593;</a></span></h3>
  <p>
    Example usage of removing Models records.
  </p>

  <h4>Usage example <span><a href="#toc">&#8593;</a></span></h4>
  <p>
    To remove an existing models:
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

DELETE /model/<record-id>

  <h4>Response example(s):</h4>
  <p>
    A successful response when removing a Models asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully deleted record' }

  <p>
    Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting models record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to delete specified record' }

Computers

<p>
  Manage Computers records. Below are the details of the available fields
  per Computers record.

  <ol>
    <li><i>Hostname</i> - (Optional) The unique identifier associated with the computer</li>
    <li><i>Model</i> - (Optional) The model number associated with the montitor (see <a href="#api-models">models</a>)</li>
    <li><i>SKU</i> - (Required) The SKU number</li>
    <li><i>UUIC</i> - (Optional) The UUIC number</li>
    <li><i>Serial</i> - (Required) The serial number</li>
    <li><i>EOWD</i> - (Optional) The end of warranty date</li>
    <li><i>OPD</i> - (Optional) The original purchase date</li>
    <li><i>Notes</i> - (Optional) Any notes associated with the model</li>
    <li><i>Description</i> - (Optional) Any description information assocated with model</li>
  </ol>
</p>

<div id="api-computers-list">
  <h3>List computers <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To list all available computers:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /computer

  <p>
    Response example:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "1779", "Hostname": "abc-123xyu123", "Model": "965", "SKU": "123", "UUIC": "123", "Serial": "123", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, { "Id": "1572", "Hostname": "ACQ-01", "Model": "6200", "SKU": "017043", "UUIC": "034755", "Serial": "090705", "EOWD": "2013-06-20", "OPD": "2009-06-01", "Notes": "", "Description": "" }, /* ... */ ]

<div id="api-computers-search">
  <h3>Search computers <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To search all available computers (* is the wildcard):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /computer/GRPC-1*

  <h4>Response example(s):</h4>

  <p>A successful response when searching for Computers asset records
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "1437", "Hostname": "GRPC-10", "Model": "970", "SKU": "016058", "UUIC": "040318", "Serial": "087957", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, { "Id": "1452", "Hostname": "GRPC-11", "Model": "970", "SKU": "016020", "UUIC": "040280", "Serial": "087933", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, /* ... */ ]

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to search specified records' }

<div id="api-computers-add">
  <h3>Add computers <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To add a new computers:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

POST /computer

  <p>
    Serialized data (see <a href="#api-computers">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<computer-name>&model=<model-number>&sku=<computer-sku>&serial=<computer-serial>&eowd=<computer-eowd>&eopd=<computer-opd>&notes=<computer-notes>

  <h4>Response example(s):</h4>

  <p>A successful response when adding a Computers asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Computers record sucessfully add' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "serial": "Serial value is invalid", "eowd": "EOWD value is invalid", "opd": "OPD value is invalid", "notes": "Notes value is invalid" } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to add specified record' }

<!-- Computers Update -->
<div id="api-computers-update">
  <h3>Update computers <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To update an existing Computers record:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

PUT /computers/<record-id>

  <p>
    Serialized data (see <a href="#api-computers">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<computer-name>&model=<model-number>&sku=<computer-sku>&serial=<computer-serial>&eowd=<computer-eowd>&eopd=<computer-opd>&notes=<computer-notes>

  <h4>Response example(s):</h4>

  <p>A successful response when updating a Computers asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully updated record' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "serial": "Serial value is invalid", "eowd": "EOWD value is invalid", "opd": "OPD value is invalid", "notes": "Notes value is invalid" } }

  <p>No changes occured message
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ warning: 'No changes to computers record occured' }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting computers record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Could not edit record' }

<!-- Computers Delete -->
<div id="api-computers-delete">
  <h3>Delete computers <span><a href="#toc">&#8593;</a></span></h3>
  <p>
    Example usage of removing Computers records.
  </p>

  <h4>Usage example <span><a href="#toc">&#8593;</a></span></h4>
  <p>
    To remove an existing computers:
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

DELETE /computers/<record-id>

  <h4>Response example(s):</h4>
  <p>
    A successful response when removing a Computers asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully deleted record' }

  <p>
    Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting computers record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to delete specified record' }

Monitors

<p>
  Manage Monitors records. Below are the details of the available fields
  per Monitors record.

  <ol>
    <li><i>Hostname</i> - (Optional) The unique identifier associated with the monitor</li>
    <li><i>Model</i> - (Optional) The model number associated with the montitor (see <a href="#api-models">models</a>)</li>
    <li><i>SKU</i> - (Required) The SKU number</li>
    <li><i>Serial</i> - (Required) The serial number</li>
    <li><i>EOWD</i> - (Optional) The end of warranty date</li>
    <li><i>OPD</i> - (Optional) The original purchase date</li>
    <li><i>Notes</i> - (Optional) Any notes associated with the model</li>
    <li><i>Description</i> - (Optional) Any description information assocated with model</li>
  </ol>
</p>

<div id="api-monitors-list">
  <h3>List monitors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To list all available monitors:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /monitor

  <p>
    Response example:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "478", "Hostname": "GRPC-01", "Model": "970", "SKU": "16250", "Serial": "ETLFA0W041115034C94323", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, { "Id": "491", "Hostname": "GRPC-02", "Model": "980", "SKU": "16720", "Serial": "ETLGQ0D053205019898514", "EOWD": "2015-07-01", "OPD": "2012-07-01", "Notes": "", "Description": "" }, /* ... */ ]

<div id="api-monitors-search">
  <h3>Search monitors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To search all available monitors (* is the wildcard):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /monitor/GRPC-1*

  <h4>Response example(s):</h4>

  <p>A successful response when searching for Monitors asset records
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "480", "Hostname": "GRPC-10", "Model": "970", "SKU": "16244", "Serial": "ETLFA0W041113116544323", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, { "Id": "494", "Hostname": "GRPC-11", "Model": "970", "SKU": "16252", "Serial": "ETLFA0W041115034B14323", "EOWD": "2013-06-02", "OPD": "2009-06-02", "Notes": "", "Description": "" }, /* ... */ ]

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to search specified records' }

<div id="api-monitors-add">
  <h3>Add monitors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To add a new monitors:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

POST /monitor

  <p>
    Serialized data (see <a href="#api-monitors">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<monitor-name>&model=<model-number>&sku=<monitor-sku>&serial=<monitor-serial>&eowd=<monitor-eowd>&eopd=<monitor-opd>&notes=<monitor-notes>

  <h4>Response example(s):</h4>

  <p>A successful response when adding a Monitors asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Monitors record sucessfully add' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "serial": "Serial value is invalid", "eowd": "EOWD value is invalid", "opd": "OPD value is invalid", "notes": "Notes value is invalid" } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to add specified record' }

<!-- Monitors Update -->
<div id="api-monitors-update">
  <h3>Update monitors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To update an existing Monitors record:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

PUT /monitors/<record-id>

  <p>
    Serialized data (see <a href="#api-monitors">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<monitor-name>&model=<model-number>&sku=<monitor-sku>&serial=<monitor-serial>&eowd=<monitor-eowd>&eopd=<monitor-opd>&notes=<monitor-notes>

  <h4>Response example(s):</h4>

  <p>A successful response when updating a Monitors asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully updated record' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "serial": "Serial value is invalid", "eowd": "EOWD value is invalid", "opd": "OPD value is invalid", "notes": "Notes value is invalid" } }

  <p>No changes occured message
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ warning: 'No changes to monitors record occured' }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting monitors record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Could not edit record' }

<!-- Monitors Delete -->
<div id="api-monitors-delete">
  <h3>Delete monitors <span><a href="#toc">&#8593;</a></span></h3>
  <p>
    Example usage of removing Monitors records.
  </p>

  <h4>Usage example <span><a href="#toc">&#8593;</a></span></h4>
  <p>
    To remove an existing monitors:
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

DELETE /monitors/<record-id>

  <h4>Response example(s):</h4>
  <p>
    A successful response when removing a Monitors asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully deleted record' }

  <p>
    Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting monitors record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to delete specified record' }

RMA

<p>
  Manage RMA records. Below are the details of the available fields
  per RMA record.

  <ol>
    <li><i>Date</i> - (Required) The date as YYYY-MM-DD</li>
    <li><i>Hostname</i> - (Required) The RMA hostname</li>
    <li><i>Model</i> - (Required) The model number (see <a href="#api-models">models</a>)</li>
    <li><i>SKU</i> - (Required) The SKU associated with the RMA</li>
    <li><i>UUIC</i> - (Optional) The UUIC associated with the RMA</li>
    <li><i>Serial</i> - (Required) The serial number associated with the RMA</li>
    <li><i>Part</i> - (Required) The part description</li>
    <li><i>Notes</i> - (Optional) Any additional notes associated with the RMA record</li>
  </ol>
</p>

<div id="api-rma-list">
  <h3>List rma <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To list all available rma:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /rma

  <p>
    Response example:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "1", "Problem": "0", "Date": "2014-04-15", "Hostname": "DIG-15", "Model": "6200", "SKU": "017034", "UUIC": "034746", "Serial": "090722", "Part": "Video", "Notes": "" }, { "Id": "2", "Problem": "1", "Date": "2014-02-11", "Hostname": "DIG-18", "Model": "6200", "SKU": "017037", "UUIC": "034742", "Serial": "090712", "Part": "Motherboard", "Notes": "" }, /* ... */ ]

<div id="api-rma-search">
  <h3>Search rma <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To search all available rma (* is the wildcard):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /rma/2014-04-*

  <h4>Response example(s):</h4>

  <p>A successful response when searching for RMA asset records
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "Id": "1", "Problem": "0", "Date": "2014-04-15", "Hostname": "DIG-15", "Model": "6200", "SKU": "017034", "UUIC": "034746", "Serial": "090722", "Part": "Video", "Notes": "" }, /* ... */ ]

  <p>Empty response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Whoopsie! No records found, perhaps a wildcard search may help (ex. computer-name*)" }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to search specified records' }

<div id="api-rma-add">
  <h3>Add rma <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To add a new rma:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

POST /rma

  <p>
    Serialized data (see <a href="#api-rma">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<machine-name>&model=<model-number>&sku=<machine-sku>&uuic=<machine-uuic>&serial=<machine-serial>&part=<part-description>&description=<Description>

  <h4>Response example(s):</h4>

  <p>A successful response when adding a RMA asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'RMA record sucessfully add' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "Serial": "Serial value is invalid", "Part": "Part value is invalid", "Description": "Description value is invalid", } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to add specified record' }

<!-- RMA Update -->
<div id="api-rma-update">
  <h3>Update rma <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To update an existing RMA record:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

PUT /rma/<record-id>

  <p>
    Serialized data (see <a href="#api-rma">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

hostname=<machine-name>&model=<model-number>&sku=<machine-sku>&uuic=<machine-uuic>&serial=<machine-serial>&part=<part-description>&description=<Description>

  <h4>Response example(s):</h4>

  <p>A successful response when updating a RMA asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully updated record' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ "error": "Given parameters did meet validation requirements", "details": { "hostname": "Hostname value is invalid", "model": "Model value is invalid", "sku": "SKU value is invalid", "uuic": "UUIC value is invalid", "Serial": "Serial value is invalid", "Part": "Part value is invalid", "Description": "Description value is invalid", } }

  <p>No changes occured message
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ warning: 'No changes to rma record occured' }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting rma record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Could not edit record' }

<!-- RMA Delete -->
<div id="api-rma-delete">
  <h3>Delete rma <span><a href="#toc">&#8593;</a></span></h3>
  <p>
    Example usage of removing RMA records.
  </p>

  <h4>Usage example <span><a href="#toc">&#8593;</a></span></h4>
  <p>
    To remove an existing rma:
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

DELETE /rma/<record-id>

  <h4>Response example(s):</h4>
  <p>
    A successful response when removing a RMA asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully deleted record' }

  <p>
    Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting rma record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to delete specified record' }

CORS

<p>
  Manage CORS records. Below are the details of the available fields
  per CORS record.

  <ol>
    <li><i>Application</i> - (Required) The unique identifier associated with the
      allowed application</li>
    <li><i>URL</i> - (Required) The FQDN of the referring application</li>
    <li><i>IP</i> - (Required) The IP of the referring application</li>
  </ol>
</p>

<div id="api-cors-list">
  <h3>List cors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To list all available cors:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /cors

  <p>
    Response example:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "id": "1", "application": "resource-name", "url": "http://fqdn.of.resource-name", "ip": "192.1.2.10" }, { "id": "2", "application": "another-name", "url": "http://fqdn.of.another-name", "ip": "192.1.2.115" }, /* ... */ ]

<div id="api-cors-search">
  <h3>Search cors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To search all available cors (* is the wildcard):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

GET /cors/resource*

  <h4>Response example(s):</h4>

  <p>A successful response when searching for CORS asset records
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

[ { "id": "1", "application": "resource-name", "url": "http://fqdn.of.resource-name", "ip": "192.1.2.10" }, /* ... */ ]

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to search specified records' }

<div id="api-cors-add">
  <h3>Add cors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To add a new cors:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

POST /cors

  <p>
    Serialized data (see <a href="#api-cors">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

application=<application-name>&url=<FQDN>&ip=<ip-address>

  <h4>Response example(s):</h4>

  <p>A successful response when adding a CORS asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'CORS record sucessfully add' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { application: 'Application value is invalid' url: 'URL value is invalid' ip: 'IP value is invalid' } }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to add specified record' }

<!-- CORS Update -->
<div id="api-cors-update">
  <h3>Update cors <span><a href="#toc">&#8593;</a></span></h3>

  <p>
    To update an existing CORS record:

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

PUT /cors/<record-id>

  <p>
    Serialized data (see <a href="#api-corss">required fields</a>):

    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

application=<application-name>&url=<FQDN>&ip=<ip-address>

  <h4>Response example(s):</h4>

  <p>A successful response when updating a CORS asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully updated record' }

  <p>Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { application: 'Application value is invalid' url: 'URL value is invalid' ip: 'IP value is invalid' } }

  <p>No changes occured message
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ warning: 'No changes to cors record occured' }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting cors record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Could not edit record' }

<!-- CORS Delete -->
<div id="api-cors-delete">
  <h3>Delete cors <span><a href="#toc">&#8593;</a></span></h3>
  <p>
    Example usage of removing CORS records.
  </p>

  <h4>Usage example <span><a href="#toc">&#8593;</a></span></h4>
  <p>
    To remove an existing cors:
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-sh">

DELETE /cors/<record-id>

  <h4>Response example(s):</h4>
  <p>
    A successful response when removing a CORS asset record
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ success: 'Successfully deleted record' }

  <p>
    Invalid parameters response
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Given parameters did meet validation requirements', details: { id: 'ID value is invalid' } }

  <p>Database record didn't exist
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Whoops, an error occured while deleting cors record' }

  <p>Generic error
    <pre class="prettyprint lang-sh linenums prettyprinted">
      <code class="language-js">

{ error: 'Unable to delete specified record' }

About

RESTFul API for management of computing inventory assets

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:PHP 91.7%Language:Shell 7.0%Language:CSS 1.3%