Announcing: the World's First API for Makers
Written by Simon Arthur   
Friday, 24 September 2010

Image

I created Big Blue Saw based on the idea that inexpensive, customized manufactured parts should be more widely and more easily available to everyone. So I'm happy to announce today there is a new way to access Big Blue Saw's services.

I was recently contacted by the founders of a startup who wanted to add Big Blue Saw quoting to their website. (Watch the blog for details of the arrangement.) To do this, they needed a way to access Big Blue Saw's online quoting information. My solution was to create an easy to use web based API which gives them pricing and other data they can embed in their website.

Now the same API is available to everyone. Where and how it's useful will depend entirely on our users. Here are some suggested applications that make good use of the API:

  • A "Get Quote" button on a CAD drawing package that lets you instantly receive a price for the part you're designing.
  • A software package that helps waterjet shops quickly estimate quotes.
  • A price comparison website which allows customers to easily get competing quotes for custom parts, like Google Shopping does for consumer goods.
  • A website that lets you customize parts like, say, gears, electronic enclosures, or licence plate frames and gives you an instant quote for the price.

Image

Continue reading for the technical details of how it works.

Share | |

Technical Details

*This is an early testing (Alpha) release of the API, so be aware that details may change at any time.*

Here's the technical details of how it works: your client application sends a POST request to the Big Blue Saw website with a URL that looks some thing like this:

http://www.bigbluesaw.com/saw/index2.php?option=com_estimator&task=upload&step=10&api=1&material=XXX&thickness=YYY

Replace XXX with the material ID of the material you want to use and YYY with the thickness in inches of the part. The request should also contain a file in the form of a multipart form data upload of a DXF file with the "name" value set to "upload". The file must be formatted according to Big Blue Saw's guidelines for formatting vector files.

Current material IDs:

MaterialMaterial ID Available Thicknesses, Inch
Stainless Steel T-30430.06, 0.09, 0.12, 0.125, 0.1875, 0.25, 0.375, 0.5, 0.75
Acrylic Plastic, Clear40.06, 0.08, 0.118, 0.125, 0.177, 0.236, 0.25, 0.354, 0.472, 0.75
Polycarbonate Plastic, Clear50.06, 0.125, 0.1875, 0.25, 0.5, 0.75
Stainless Steel 31660.06, 0.12, 0.125, 0.25, 0.5, 0.75
Aluminum 606170.025, 0.032, 0.04, 0.05, 0.063, 0.08, 0.09, 0.1, 0.125, 0.1875, 0.25, 0.375, 0.5, 0.625, 0.75, 1
Chrome-Moly Steel 413080.125
Aluminum 505290.025, 0.08, 0.09, 0.125
Acetal Plastic, Black100.063, 0.125, 0.25
PETG Plastic, Clear110.02, 0.063, 0.0938, 0.125, 0.25
Acrylic, Toffee/White120.061
Acrylic, Kona/White130.061
Acrylic, Cinnamon Stick/White140.061
Acrylic, Cashew/Taupe150.061
Acrylic, Brushed Stainless Steel/Black160.061
Acrylic, Brushed Copper Penny/Black170.061
Acrylic, Brushed Antique Gold/Black180.061
Acrylic, Brushed Bright Nickel/Black190.118
Acrylic, Black/Clear200.136
Acrylic, White/Clear210.061
Acrylic, Navy Blue/Clear220.061
Acrylic, Tangerine/White230.061
Acrylic, Verde Green Marble/White240.061
Acrylic, Pumice/Black250.061
Acrylic, Green/White260.061
Acrylic, Blue/White270.118
Acrylic, Red/White280.061
Acrylic, Black/White290.061
Wood Laminate, Maple300.15
Wood Laminate, Walnut310.15
Uncoated Wood Laminate, Cedar320.18
Uncoated Wood Laminate, Birch330.23
Wood Laminate, Black340.27
EVA Foam, Orange350.22
EVA Foam, Blue360.22
EVA Foam, Red370.22
EVA Foam, Green380.22
EVA Foam, Yellow390.22
Red Oak400.15
Cherry410.15
Poplar420.15
Medium Density Fiberboard (MDF)430.25
Hardboard440.135
Stiff Acrylic Felt, Zebra450.04
Stiff Acrylic Felt, Pink460.06
Stiff Acrylic Felt, Kelly Green470.06
Stiff Acrylic Felt, Cheetah480.04
Stiff Acrylic Felt, Black490.04
Acrylic Felt, Sky Blue500.045
Acrylic Felt, Red510.045
Acrylic Felt, Brown520.045
Leather, Deertan Saddle Tan530.06
Leather, Premium Brown540.05
Adhesive Polyester Twill, Burnt Orange550.02
Adhesive Polyester Twill, Neon Pink560.02
Adhesive Polyester Twill, Black570.02
Adhesive Polyester Twill, Cream580.02
Adhesive Polyester Twill, Royal Blue590.02
Copper Alloy 110600.062, 0.125
UHMW-PE Plastic, White620.125
Polypropylene Plastic, White630.125
Acetal Plastic, White640.1875
ABS Plastic, Black650.25
Acrylic, Opaque Black660.118, 0.236
Flexible Engravable Acrylic, Silver/Black670.02
Cork Blend680.063
High Temperature Gasket690.031
Treated Paper Gasket700.016, 0.031
Clear P95 Acrylic710.118
Cold Finished Steel 1018720.125, 0.1875, 0.25, 0.3125, 0.375, 0.5, 0.625, 0.75, 0.875, 1
Cold Rolled Steel A366/1008730.0239, 0.0299, 0.0359, 0.048, 0.0598, 0.075, 0.09, 0.105, 0.12, 0.135
Hot Rolled Steel 1045740.25, 0.375, 0.5, 0.625, 0.75, 1
Hot Rolled Steel A36750.125, 0.1875, 0.25, 0.3125, 0.375, 0.5, 0.625, 0.75, 0.875, 1
Hot Rolled Steel A569/ASTM A1011760.06, 0.075, 0.105, 0.125, 0.135
Buna-N Rubber770.0313

If everything goes correctly, you will get an XML result that includes some basic information about the dimensions of the part, as well as the cost for making different quantities of the part with various machining techniques.

<quoteResponse>
<storedFileName>J1F1-A2B4-A0A0-A0A0-bfly-small.dxf</storedFileName>
<imageUrl>http://www.bigbluesaw.com/saw/comp...all.dxf</imageUrl>
  <size>
    <width unit="inches">1.800</width>
    <height unit="inches">1.950</height>
  </size>
  
    <material id="7">Aluminum 6061</material>
        <thickness unit="inches">0.25</thickness>
    <quoteList>
 <quote>
  <process>low-taper waterjet</process>
    <quantity min='1'  max='4'>100.5</quantity>
    <quantity min='5'  max='9'>20.1</quantity>
    <quantity min='10'  max='49'>12.66</quantity>
    <quantity min='50'  max='99'>9.22</quantity>
    <quantity min='100'  max='999'>8.87</quantity>
    <quantity min='1000'  max='999999'>8.55</quantity>
 </quote>
 <quote>
  <process>waterjet</process>
    <quantity min='1'  max='4'>81.1</quantity>
    <quantity min='5'  max='9'>16.22</quantity>
    <quantity min='10'  max='49'>10.21</quantity>
    <quantity min='50'  max='99'>7.43</quantity>
    <quantity min='100'  max='999'>7.15</quantity>
    <quantity min='1000'  max='999999'>6.9</quantity>
 </quote>
</quoteList>

If the system is unable to process the request into a quote for whatever reason, you will get a message with a list of <quoteError> items.

<quoteResponse>
<storedFileName>N9P8-C7Q0-A0A0-A0A0-bfly-small.dxf</storedFileName>
<imageUrl>http://www.bigbluesaw.com/saw/comp...fly-small.dxf</imageUrl>
  <size>
    <width unit="inches">1.800</width>
    <height unit="inches">1.950</height>
  </size>
  
 <quoteErrors>
   <quoteError>Unable to find stock for material 
       999999 and thickness 0.25.</quoteError>
 </quoteErrors>

</quoteResponse>

Sample code for accessing the API, in Java.

Let us know if you're planning any interesting projects using the API by posting here, or e-mailing us.

Share | |
Comments
Add New Search
John   |2010-09-24 22:10:32
Hot. I hope this gets the attention it deserves.
Big Blue Saw Administrator   |2010-09-25 00:06:04
Thanks. Please help spread the word. One easy way to do that is by clicking on
the new "Share" icons at the end of the article.
Brad  - Software Devloper   |2010-10-05 20:50:16
Admin,

I like the product but a couple of recommendations:

1. It appears
obvious you're hand-writing the XML document, not using either a native XML
document object of PHP or any formal formatting. That being said, please make
the following changes for flexibility:

a) Add the formal XML header in the file
to notify any parsers of the schema. (case-in-point, )

b) Remember to handle
content carefully in an XML file. You can't just push any data through an XML
tag and not expect failure. Specifically I'm referencing the url in the with
regards to the ampersand (and quite possibly your use of an anchor in the tag,
but not positive. (I recommend using http://validator.w3.org/#validate_by_input)


2. Can you please offer a better resource for gathering materials? Unless I
missed it, there was no easy way of looking up your material/thickness list
without just grabbing it from the "Choose material" page and examining
Brad  - Software Devloper   |2010-10-05 20:52:20
[continued...My apologies for back-to-back post]

the href in the URLs.

Other
than that, great job. I am pleased with the interface.

Kind Regards,
Brad
Big Blue Saw Administrator   |2010-10-06 01:14:09
Thanks for the useful feedback. I've made a couple changes based upon your
posts.

1. The XML is now well-formed, but with no schema. I think it's too
early in the process to worry about a schema when we don't know what types of
data the API clients will ultimately need.

2.The original post above has been
updated with an updated list of materials and their IDs. Maybe we need an API to
query for materials?
Brad  - Software Developer   |2010-10-06 01:28:43
Admin,

I tend to agree with you about an api for materials. Assuming you
already have the database back-end in place allowing clients full access to this
information on an up-to-date basis would be terrific. Also allows for binding to
controls (we or otherwise) with minimal effort.

And i may have overstepped with
scema but indeed "properly formatted" is a step in the right
direction.

Also, may i recommend the process name being an atribute of the
quote tag and not a node?

Thanks for you prompt replies.

Brad
Write comment
Name:
Email:
 
Website:
Title:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
Please enter the security code shown in the image.
 

Copyright 2005-2013 Big Blue Saw