List PCB Projects

List PCB Projects

Returns a list of all PCB projects you own, with brief details and URIs to access complete details about each project.

get

Retrieve a list of all PCB Projects


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_list": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "pcb_id": { "type": "string"},
          "pcb_name": { "type": "string"},
          "pcb_short": { "type": "string"},
          "created": { "type": "string"},
          "uri": { "type": "string"}
        }
      ]
    }
  }
}

Manage PCB Projects

post

Create a new PCB Project.

You can specify the name of the PCB project and the short description of the project using a single JSON object passed as the body of the request. Responds with the full object definition of the PCB upon successful creation.


Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "name": { "type": "string", "description": "The new name of the PCB"},
        "short": { "type": "string", "description": "The new short description of the PCB"}
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "pcb_id": {
          "description": "A unique identifier for the PCB",
          "type": "string"
          },
        "pcb_name": {
          "description": "Display name of the PCB",
          "type": "string"
          },
        "created": {
          "description": "The created date of the PCB Project",
          "type": "string"
          },
        "uri": {
          "description": "URI to access this resource directly",
          "type": "string"
          },
        "current_version": {
          "description": "The currently-selected version of the project (defaults to newest)",
          "type": "integer"
          },
        "current_status": {
          "description": "All currently-defined processing status codes for this PCB project",
          "type": "array",
          "minItems": 0,
          "items": { "type": "string"}
          },
        "manufacture_state": {
          "description": "This object describes the manufacturable state of the PCB project",
          "type": "object",
          "properties": {
            "manufacturable": { "type": "integer", "description": "0 if the PCB is not ready for manufacture, 1 if it is"},
            "errors": {
              "type": "object",
              "description": "An organized list of error types which may prevent manufacturing",
              "properties": {
                "placement": {
                  "type": "array",
                  "description": "Each item in the list is a part designator which is lacking placement data"
                },
                "gerber": {
                  "type": "array",
                  "description": "Each item in this array represents gerber layer(s) which must be present or not. Each element is an array, if there are multiple values in this array, it means that 'one of' these must be included.  For example, if an array element contains 'GBL' and 'GTL', it means you must upload at least one of the silkscreen layers.",
                  "properties": { "type": "array", "properties": { "type": "string" } }
                },
                "approval": {
                  "type": "integer",
                  "description": "0 if you have not approved rotation of components, 1 if you have."
                }
              }
            }
          }
        },  
        "board": {
          "description": "Facts about the physical PCB",
          "type": "object",
          "properties": {
            "area": {
              "type": "object",
              "description": "The area and size of the physical PCB",
              "properties": {
                "size": {
                  "type": "number",
                  "description": "The total size of the PCB in square inches"
                  },
                "dims": {
                  "type": "array",
                  "minItems": 2,
                  "items": { "type": "number"},
                  "description": "The X and Y dimensions of the PCB in inches"
                  }
                }
              },
             "standard_price": {
              "type": "object",
              "description": "A list of price points for standard PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },
             "custom_price": {
              "type": "object",
              "description": "A list of price points for custom PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },

            "customization_price":{
                "type": "object",
                "description": "A list of customization options and the prices associated with them.",
                "properties" : {
                   "gold_fingers":{
                      "type" : "number",
                      "description" : "The price of the gold fingers customization when selected."
                   },
                   "copper_weight":{  
                      "type" : "number",
                      "description" : "The price of the copper weight customization when selected."
                   },
                   "manufacturing":{  
                      "type" : "number",
                      "description" : "The price of the manufacturing customization when selected."
                   },
                   "impedance_control":{
                      "type" : "number",
                      "description" : "The price of the impedance control customization when selected."
                   }
                }
            },
            "specifications" : {
                "type" : "object",
                "description" : "A dictionary of manufacturing specifications for this board.",
                "properties" : {
                    "copper_weight" : {
                        "type" : "string",
                        "description" : "The copper weight of the board (1 ounce, 2 ounce)."
                    },
                    "gold_fingers" : {
                        "type" : "integer",
                        "description" : "1 if the PCB has gold fingers; 0 if it does not."
                    },
                    "impedance_control" : {
                        "type" : "integer",
                        "description" : "1 if the PCB requires impedance control; 0 if it does not."
                    },
                    "layer_count" : {
                        "type" : "integer",
                        "description" : "The layer count of the PCB."
                    },
                    "manufacturing" : {
                        "type" : "string",
                        "description" : "The manufacturing type of the board (Standard, Extended)."
                    },
                    "silkscreen_color" : {
                        "type" : "string",
                        "description" : "The silkscreen color of the board (any, red, green, blue, yellow, black, white)."
                    },
                    "soldermask_color" : {
                        "type" : "string",
                        "description" : "The soldermask color of the board (any, red, green, blue, yellow, black, white)."
                    }
                }
            }
          }}
       }
     }
    }
}

delete

Delete a PCB Project

When you delete a PCB project, you will no longer be able to access it, and orders referencing it may indicate that the associated PCB is "Deleted PCB"


URI Parameters

  • pcb_id: required (string)

HTTP status code 204

HTTP status code 404


get

Get Details about a PCB Project, Using the Newest Version

The full details about the PCB project will be returned when accessing this endpoint. Since there can be multiple versions of a PCB, retrieving only with pcb_id and without the pcb_version will return details about the newest version by default.

Included in the response will be details and access URIs for each specific version of the PCB project available.


URI Parameters

  • pcb_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "pcb_id": {
          "description": "A unique identifier for the PCB",
          "type": "string"
          },
        "pcb_name": {
          "description": "Display name of the PCB",
          "type": "string"
          },
        "created": {
          "description": "The created date of the PCB Project",
          "type": "string"
          },
        "uri": {
          "description": "URI to access this resource directly",
          "type": "string"
          },
        "current_version": {
          "description": "The currently-selected version of the project (defaults to newest)",
          "type": "integer"
          },
        "current_status": {
          "description": "All currently-defined processing status codes for this PCB project",
          "type": "array",
          "minItems": 0,
          "items": { "type": "string"}
          },
        "manufacture_state": {
          "description": "This object describes the manufacturable state of the PCB project",
          "type": "object",
          "properties": {
            "manufacturable": { "type": "integer", "description": "0 if the PCB is not ready for manufacture, 1 if it is"},
            "errors": {
              "type": "object",
              "description": "An organized list of error types which may prevent manufacturing",
              "properties": {
                "placement": {
                  "type": "array",
                  "description": "Each item in the list is a part designator which is lacking placement data"
                },
                "gerber": {
                  "type": "array",
                  "description": "Each item in this array represents gerber layer(s) which must be present or not. Each element is an array, if there are multiple values in this array, it means that 'one of' these must be included.  For example, if an array element contains 'GBL' and 'GTL', it means you must upload at least one of the silkscreen layers.",
                  "properties": { "type": "array", "properties": { "type": "string" } }
                },
                "approval": {
                  "type": "integer",
                  "description": "0 if you have not approved rotation of components, 1 if you have."
                }
              }
            }
          }
        },  
        "board": {
          "description": "Facts about the physical PCB",
          "type": "object",
          "properties": {
            "area": {
              "type": "object",
              "description": "The area and size of the physical PCB",
              "properties": {
                "size": {
                  "type": "number",
                  "description": "The total size of the PCB in square inches"
                  },
                "dims": {
                  "type": "array",
                  "minItems": 2,
                  "items": { "type": "number"},
                  "description": "The X and Y dimensions of the PCB in inches"
                  }
                }
              },
             "standard_price": {
              "type": "object",
              "description": "A list of price points for standard PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },
             "custom_price": {
              "type": "object",
              "description": "A list of price points for custom PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },

            "customization_price":{
                "type": "object",
                "description": "A list of customization options and the prices associated with them.",
                "properties" : {
                   "gold_fingers":{
                      "type" : "number",
                      "description" : "The price of the gold fingers customization when selected."
                   },
                   "copper_weight":{  
                      "type" : "number",
                      "description" : "The price of the copper weight customization when selected."
                   },
                   "manufacturing":{  
                      "type" : "number",
                      "description" : "The price of the manufacturing customization when selected."
                   },
                   "impedance_control":{
                      "type" : "number",
                      "description" : "The price of the impedance control customization when selected."
                   }
                }
            },
            "specifications" : {
                "type" : "object",
                "description" : "A dictionary of manufacturing specifications for this board.",
                "properties" : {
                    "copper_weight" : {
                        "type" : "string",
                        "description" : "The copper weight of the board (1 ounce, 2 ounce)."
                    },
                    "gold_fingers" : {
                        "type" : "integer",
                        "description" : "1 if the PCB has gold fingers; 0 if it does not."
                    },
                    "impedance_control" : {
                        "type" : "integer",
                        "description" : "1 if the PCB requires impedance control; 0 if it does not."
                    },
                    "layer_count" : {
                        "type" : "integer",
                        "description" : "The layer count of the PCB."
                    },
                    "manufacturing" : {
                        "type" : "string",
                        "description" : "The manufacturing type of the board (Standard, Extended)."
                    },
                    "silkscreen_color" : {
                        "type" : "string",
                        "description" : "The silkscreen color of the board (any, red, green, blue, yellow, black, white)."
                    },
                    "soldermask_color" : {
                        "type" : "string",
                        "description" : "The soldermask color of the board (any, red, green, blue, yellow, black, white)."
                    }
                }
            }
          }}
       }
     }
    }
}

HTTP status code 404


put

Update a PCB Project.

The PCB Name and Short strings are shared by all versions of a PCB project. Using this method, you can update one or both of these strings for the PCB project using a single JSON object.


URI Parameters

  • pcb_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "name": { "type": "string", "description": "The new name of the PCB"},
        "short": { "type": "string", "description": "The new short description of the PCB"}
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "pcb_id": {
          "description": "A unique identifier for the PCB",
          "type": "string"
          },
        "pcb_name": {
          "description": "Display name of the PCB",
          "type": "string"
          },
        "created": {
          "description": "The created date of the PCB Project",
          "type": "string"
          },
        "uri": {
          "description": "URI to access this resource directly",
          "type": "string"
          },
        "current_version": {
          "description": "The currently-selected version of the project (defaults to newest)",
          "type": "integer"
          },
        "current_status": {
          "description": "All currently-defined processing status codes for this PCB project",
          "type": "array",
          "minItems": 0,
          "items": { "type": "string"}
          },
        "manufacture_state": {
          "description": "This object describes the manufacturable state of the PCB project",
          "type": "object",
          "properties": {
            "manufacturable": { "type": "integer", "description": "0 if the PCB is not ready for manufacture, 1 if it is"},
            "errors": {
              "type": "object",
              "description": "An organized list of error types which may prevent manufacturing",
              "properties": {
                "placement": {
                  "type": "array",
                  "description": "Each item in the list is a part designator which is lacking placement data"
                },
                "gerber": {
                  "type": "array",
                  "description": "Each item in this array represents gerber layer(s) which must be present or not. Each element is an array, if there are multiple values in this array, it means that 'one of' these must be included.  For example, if an array element contains 'GBL' and 'GTL', it means you must upload at least one of the silkscreen layers.",
                  "properties": { "type": "array", "properties": { "type": "string" } }
                },
                "approval": {
                  "type": "integer",
                  "description": "0 if you have not approved rotation of components, 1 if you have."
                }
              }
            }
          }
        },  
        "board": {
          "description": "Facts about the physical PCB",
          "type": "object",
          "properties": {
            "area": {
              "type": "object",
              "description": "The area and size of the physical PCB",
              "properties": {
                "size": {
                  "type": "number",
                  "description": "The total size of the PCB in square inches"
                  },
                "dims": {
                  "type": "array",
                  "minItems": 2,
                  "items": { "type": "number"},
                  "description": "The X and Y dimensions of the PCB in inches"
                  }
                }
              },
             "standard_price": {
              "type": "object",
              "description": "A list of price points for standard PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },
             "custom_price": {
              "type": "object",
              "description": "A list of price points for custom PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },

            "customization_price":{
                "type": "object",
                "description": "A list of customization options and the prices associated with them.",
                "properties" : {
                   "gold_fingers":{
                      "type" : "number",
                      "description" : "The price of the gold fingers customization when selected."
                   },
                   "copper_weight":{  
                      "type" : "number",
                      "description" : "The price of the copper weight customization when selected."
                   },
                   "manufacturing":{  
                      "type" : "number",
                      "description" : "The price of the manufacturing customization when selected."
                   },
                   "impedance_control":{
                      "type" : "number",
                      "description" : "The price of the impedance control customization when selected."
                   }
                }
            },
            "specifications" : {
                "type" : "object",
                "description" : "A dictionary of manufacturing specifications for this board.",
                "properties" : {
                    "copper_weight" : {
                        "type" : "string",
                        "description" : "The copper weight of the board (1 ounce, 2 ounce)."
                    },
                    "gold_fingers" : {
                        "type" : "integer",
                        "description" : "1 if the PCB has gold fingers; 0 if it does not."
                    },
                    "impedance_control" : {
                        "type" : "integer",
                        "description" : "1 if the PCB requires impedance control; 0 if it does not."
                    },
                    "layer_count" : {
                        "type" : "integer",
                        "description" : "The layer count of the PCB."
                    },
                    "manufacturing" : {
                        "type" : "string",
                        "description" : "The manufacturing type of the board (Standard, Extended)."
                    },
                    "silkscreen_color" : {
                        "type" : "string",
                        "description" : "The silkscreen color of the board (any, red, green, blue, yellow, black, white)."
                    },
                    "soldermask_color" : {
                        "type" : "string",
                        "description" : "The soldermask color of the board (any, red, green, blue, yellow, black, white)."
                    }
                }
            }
          }}
       }
     }
    }
}

HTTP status code 404


post

Add a new version to a PCB project.

PCB project versions allow you to specify variants and changes to the gerber data, bill of materials, or placement data. Once you have created a new PCB version, you can then upload new files or create a new bill of materials under that PCB version.


URI Parameters

  • pcb_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_version": {
      "type": "object",
      "properties" : {
        "pcb_id": {
          "type": "string",
          "description": "The unique ID for the PCB project"
        },
        "uri": {
          "type": "string",
          "description": "The URL to access the PCB project"
        },
        "version": {
          "type": "number",
          "description": "The version of the PCB project"
        }        
      }
    }
  }

}

Example:

{
  "pcb_version": {
    "pcb_id": "ec315x",
    "uri": "/api/v2/pcb/ec315x/1",
    "version": 1
  }
}

get

Get Details about a PCB Project, Specifying which Version to Retrieve.

Like getting a single PCB, this method returns full PCB details. However, you can specify a version to retrieve rather than retrieving only the newest version.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb": {
      "type": "object",
      "properties": {
        "pcb_id": {
          "description": "A unique identifier for the PCB",
          "type": "string"
          },
        "pcb_name": {
          "description": "Display name of the PCB",
          "type": "string"
          },
        "created": {
          "description": "The created date of the PCB Project",
          "type": "string"
          },
        "uri": {
          "description": "URI to access this resource directly",
          "type": "string"
          },
        "current_version": {
          "description": "The currently-selected version of the project (defaults to newest)",
          "type": "integer"
          },
        "current_status": {
          "description": "All currently-defined processing status codes for this PCB project",
          "type": "array",
          "minItems": 0,
          "items": { "type": "string"}
          },
        "manufacture_state": {
          "description": "This object describes the manufacturable state of the PCB project",
          "type": "object",
          "properties": {
            "manufacturable": { "type": "integer", "description": "0 if the PCB is not ready for manufacture, 1 if it is"},
            "errors": {
              "type": "object",
              "description": "An organized list of error types which may prevent manufacturing",
              "properties": {
                "placement": {
                  "type": "array",
                  "description": "Each item in the list is a part designator which is lacking placement data"
                },
                "gerber": {
                  "type": "array",
                  "description": "Each item in this array represents gerber layer(s) which must be present or not. Each element is an array, if there are multiple values in this array, it means that 'one of' these must be included.  For example, if an array element contains 'GBL' and 'GTL', it means you must upload at least one of the silkscreen layers.",
                  "properties": { "type": "array", "properties": { "type": "string" } }
                },
                "approval": {
                  "type": "integer",
                  "description": "0 if you have not approved rotation of components, 1 if you have."
                }
              }
            }
          }
        },  
        "board": {
          "description": "Facts about the physical PCB",
          "type": "object",
          "properties": {
            "area": {
              "type": "object",
              "description": "The area and size of the physical PCB",
              "properties": {
                "size": {
                  "type": "number",
                  "description": "The total size of the PCB in square inches"
                  },
                "dims": {
                  "type": "array",
                  "minItems": 2,
                  "items": { "type": "number"},
                  "description": "The X and Y dimensions of the PCB in inches"
                  }
                }
              },
             "standard_price": {
              "type": "object",
              "description": "A list of price points for standard PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },
             "custom_price": {
              "type": "object",
              "description": "A list of price points for custom PCBs, organized by minimum quantity and price per unit at that quantity.",
              "properties" : {
                    "patternProperties": {
                        "^[0-9]+$": {
                            "type": "number",
                            "description" : "Layer count",
                            "patternProperties": {
                                "^[0-9]+$": {
                                    "type": "number",
                                    "description" : "Panel size",
                                    "patternProperties": {
                                        "^[0-9]+$": {
                                          "type": "number"
                                        }
                                    }
                                }
                            }

                        }
                    }
                }
              },

            "customization_price":{
                "type": "object",
                "description": "A list of customization options and the prices associated with them.",
                "properties" : {
                   "gold_fingers":{
                      "type" : "number",
                      "description" : "The price of the gold fingers customization when selected."
                   },
                   "copper_weight":{  
                      "type" : "number",
                      "description" : "The price of the copper weight customization when selected."
                   },
                   "manufacturing":{  
                      "type" : "number",
                      "description" : "The price of the manufacturing customization when selected."
                   },
                   "impedance_control":{
                      "type" : "number",
                      "description" : "The price of the impedance control customization when selected."
                   }
                }
            },
            "specifications" : {
                "type" : "object",
                "description" : "A dictionary of manufacturing specifications for this board.",
                "properties" : {
                    "copper_weight" : {
                        "type" : "string",
                        "description" : "The copper weight of the board (1 ounce, 2 ounce)."
                    },
                    "gold_fingers" : {
                        "type" : "integer",
                        "description" : "1 if the PCB has gold fingers; 0 if it does not."
                    },
                    "impedance_control" : {
                        "type" : "integer",
                        "description" : "1 if the PCB requires impedance control; 0 if it does not."
                    },
                    "layer_count" : {
                        "type" : "integer",
                        "description" : "The layer count of the PCB."
                    },
                    "manufacturing" : {
                        "type" : "string",
                        "description" : "The manufacturing type of the board (Standard, Extended)."
                    },
                    "silkscreen_color" : {
                        "type" : "string",
                        "description" : "The silkscreen color of the board (any, red, green, blue, yellow, black, white)."
                    },
                    "soldermask_color" : {
                        "type" : "string",
                        "description" : "The soldermask color of the board (any, red, green, blue, yellow, black, white)."
                    }
                }
            }
          }}
       }
     }
    }
}

HTTP status code 404


get

Retrieve a Quote for a PCB with a Specific Version.

Retrieves a quote for a PCB with a specific version, returning total price, unit parts/labor costs, and manufacturing specifications.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Query Parameters

  • layer_count: (integer)

    Provide a value of 2, 4, 6, or 8.

    Example:

    4
  • soldermask_color: (string)

    Provide a value of any, red, green, blue, yellow, black, or white.

    Example:

    any
  • silkscreen_color: (string)

    Provide a value of any, red, green, blue, yellow, black, or white.

    Example:

    any
  • impedance_control: (integer)

    Provide a value of 0 or 1.

  • copper_weight: (string)

    Provide a value of 1 ounce or 2 ounce.

    Example:

    1 ounce
  • manufacturing: (string)

    Provide a value of Standard or Extended.

    Example:

    Extended
  • quantity: (integer)

    Provide a value >= 1.

    Example:

    10

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "quote": {
      "type": "object",
      "properties": {
        "quantity": { 
            "type": "integer",
            "description": "The requested quantity of this PCB."
        },
        "total_price": {
            "type": "number",
            "description" : "The total price (total PCB price + customization price)"
        },
        "unit_pcb_price": {
            "type" : "number",
            "description" : "The unit PCB price."
        },
        "total_pcb_price": {
            "type" : "number",
            "description" : "The total PCB price."
        },
        "customization_price": {
            "type" : "object",
            "description" : "Prices for customization options.",
            "properties" : {
                "copper_weight" : {
                    "type" : "number",
                    "description" : "The copper weight customization price."
                },
                "manufacturing" : {
                    "type" : "number",
                    "description" : "The manufacturing customization price."
                },
                "impedance_control" : {
                    "type" : "number",
                    "description" : "The impedance control customization price."
                }
            }
        },
        "board": {
            "type" : "object",
            "description" : "The board dimensions and specifications.",
            "properties" : {
                "area" : {
                    "type" : "object",
                    "description" : "The board area as width/height and total area.",
                    "properties" : {
                        "dimensionss" : {
                            "type" : "object",
                            "description" : "The width and height of the PCB.",
                            "properties" : {
                                "width" : {
                                    "type" : "number",
                                    "description" : "The PCB width."
                                },
                                "height" : {
                                    "type" : "number",
                                    "description" : "The PCB height."
                                }
                            }
                        },
                        "size" : {
                            "type" : "number",
                            "description" : "The total area of the PCB."
                        }
                    }
                },
                "specifications" : {
                    "type" : "object",
                    "description" : "The manufacturing specifications used to quote the PCB.",
                    "properties" : {
                        "copper_weight" : {
                            "type" : "string",
                            "description" : "The copper weight of the board (1 ounce, 2 ounce)."
                        },
                        "gold_fingers" : {
                            "type" : "integer",
                            "description" : "1 if the PCB has gold fingers; 0 if it does not."
                        },
                        "impedance_control" : {
                            "type" : "integer",
                            "description" : "1 if the PCB requires impedance control; 0 if it does not."
                        },
                        "layer_count" : {                                                                                                                                                                                                                         "type" : "integer",
                            "description" : "The layer count of the PCB."
                        },
                        "manufacturing" : {
                            "type" : "string",
                            "description" : "The manufacturing type of the board (Standard, Extended)."
                        },
                        "silkscreen_color" : {
                            "type" : "string",
                            "description" : "The silkscreen color of the board (any, red, green, blue, yellow, black, white)."
                        },
                        "soldermask_color" : {
                            "type" : "string",
                            "description" : "The soldermask color of the board (any, red, green, blue, yellow, black, white)."
                        }
                    }
                }
            }
        }
      }
    }
  }
}

Example:

{
  "quote": {
    "customization_price": {
      "copper_weight": 0,
      "manufacturing": 0,
      "impedance_control": 0
    },
    "total_price": 720,
    "total_pcb_price": 720,
    "unit_pcb_price": 720,
    "quantity": 1,
    "board": {
      "specifications": {
        "silkscreen_color": "any",
        "manufacturing": "Standard",
        "layer_count": "8",
        "copper_weight": "1 ounce",
        "impedance_control": 0,
        "soldermask_color": "any"
      },
      "area": {
        "dimensions": {
          "width": 1.4,
          "height": 0.85
        },
        "size": 2.231736
      }
    }
  }
}

HTTP status code 400

Body

Type: application/json

Schema:


  {

    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "error": {
        "type": "object",
        "properties": {
          "code": {
            "description": "A unique error code",
            "type": "text"
          },
          "text": {
            "type": "array",
            "description": "List of error detail strings",
            "minItems": 0,
            "items": { "type": "string"}
          }
        }
      }
    }
  }

HTTP status code 404


get

Retrieve the PCB Bill of Materials for a Specific Version.

The bom key points to an array of bill of materials entries, one for each component listed on the board. Each element is an object that describes that component. While several of the object keys are obvious in their meaning, some require more detail:

populate

The populate key indicates whether you have specified that the particular instance of that component be populated on the board. By default, it is set to 1 (populate), unless you have unchecked the populate option for this component in the Bill of Materials view for the PCB in the user interface.This key having a value of 1 does not, however, ensure the part's population in assembly. The component must also have either a matched, selected, or house part associated with it.

selected_part, matched_part, house_part

These keys may point to either an empty object, or to an object identifying a part of the specified role.

A house_part is a part that we carry in-house and is automatically matched to your component by analyzing its value and footprint.

A matched_part is a market part that we automatically identified by matching the value of your component to an exact manufacturer part number.

Finally,selected_part is one of these things, in this order:

  • A part you searched for and selected
  • The house part that we automatically identified (will be identical to house_part)
  • The matched part we found on the market (will be identical to matched_part)
  • Empty object (you have not selected a part, and neither a matched nor house part were found)

    Effectively, selected_part will always have contents if either house_part or matched_part have contents. It may have contents when they don't, if you specified a part to use. A part cannot be populated unless selected_part has contents and the populate value is set to 1.

    With each returned part type, you will get a part_price object. This object contains a key for each available price break, which points to the unit cost per component at that price break. Please note, all instances of this part number that are selected are counted towards the price breaks. All pricing includes required overage and cost of acquisition. Choose the highest key equal to or lesser than the total quantity you want to consume to determine part purchase cost.

    In addition to part_price, there is a part_placement key which points to an object containing the labor charges, per unit, to place this part on a PCB. Each key is a price break, with each value being the labor charges per unit to place the part. Please note, all instances of this part number that are selected are counted towards the price breaks. Choose the highest key equal to or lesser than the total quantity you want to consume to determine part labor cost.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "bom": {
      "type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "pcb_id": {
              "type": "string",
              "description": "The id of the PCB this BoM element belongs to"
            },
            "version": {
              "type": "integer",
              "description": "The version of the PCB this BoM element belongs to"
            },
            "part": {
              "type": "string",
              "description": "The part designator for this BoM element"
            },
            "value": {
              "type": "string",
              "description": "The value provided for this BoM element"
            },
            "package": {
              "type": "string",
              "description": "The package provided for this BoM element"
            },
            "populate": {
              "type": "integer",
              "description": "Whether or not to place this BoM element, 1=place, 0=do not place"
            },
            "placement": {
              "type": "number",
              "description": "Whether placement and rotation information for this component has been approved"
            },
            "selected_part": {
              "type": "object",
              "description": "The part which has been selected to populate on the PCB for this BoM eleement",
              "properties": {"$ref": "schemas/BomPartRef.json"}
            },
            "matched_part": {
              "type": "object",
              "description": "A part which was automatically matched by searching the market for the value of this BoM element",
              "properties": {"$ref": "schemas/BomPartRef.json"}
            },
            "house_part": {
              "type": "object",
              "description": "A house part that was automatically determined to be compatible with this BoM element",
              "properties": {"$ref": "schemas/BomPartRef.json"}
            }
          }
        }
      ]
    },
    "rohs": {
      "type": "object",
      "description": "This object contains one key for each part designator, with boolean value indicating whether the part identified by that designator is known to be RoHS compliant"
      }
    }
}

Example:

{
  "bom": [
    {
      "pcb_id": "erg5az",
      "version": 1,
      "part": "R1",
      "value": "1.2K",
      "package": "R0402",
      "populate": 1,
      "placement": 1,
      "selected_part": {},
      "matched_part": {},
      "house_part": {
        "part_num": "MF-RES-0402-1.2K",
        "part_desc": "SMD 0402 Resistor 5% 1.2K",
        "part_datasheet": "http://macrofab.com/...",
        "part_attrs": {
          "resistance": "1.2K",
          "tolerance": "5%",
          "mounting type": "SMD",
          "number of pins": "2",
          "RoHS": "Compliant"
        },
        "part_price": {
          "1": 0.05,
          "5": 0.03,
          "10": 0.027,
          "100": 0.01
        },
        "part_placement: {
          "1": 0.00
        }
      }
    },
    {
      "pcb_id": "erg5az",
      "version": 1,
      "part": "R2",
      "value": "100K",
      "package": "R0402",
      "populate": 1,
      "placement": 1,
      "selected_part": {},
      "matched_part": {},
      "house_part": {
        "part_num": "MF-RES-0402-100K",
        "part_desc": "SMD 0402 Resistor 5% 100K",
        "part_datasheet": "http://macrofab.com/...",
        "part_attrs": {
          "resistance": "100K",
          "tolerance": "5%",
          "mounting type": "SMD",
          "number of pins": "2",
          "RoHS": "Compliant"
        },
        "part_price": {
          "1": 0.05,
          "5": 0.03,
          "10": 0.027,
          "100": 0.01
        },
        "part_placement: {
          "1": 0.00
        }
      }
    }
  ]
}

HTTP status code 404


post

Creates or replaces an entire bill of materials.

Using this endpoint, you can create an entirely new bill of materials.

  • row_num Required. The row number of the item. This value is zero-indexed and should increment by 1 for each item.

  • part Required. The part/designator (e.g. 'C1') for the item.

  • origin Required. The origin of this item. Valid values are market, consignment, inventory.

  • value The value (e.g. '1K') for the item.

  • package The package type (e.g. '0402') for the item.

  • populate Whether or not this part should be populated on the board, 0 = no, 1 = yes.

  • mpn The primary MPN of the part from the market to use for this item.

  • mpn1 A fallback MPN of the part from the market to use for this item.

  • mpn2 A fallback MPN of the part from the market to use for this item.

  • mpn3 A fallback MPN of the part from the market to use for this item.

You must specify row_num, part, and origin.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties" : {
    "bomItems" : {
      "type" : "array",
      "items" : [
        {
          "row_num" : { "type" : "string" },
          "part" : { "type" : "string" },
          "package" : { "type" : "string" },
          "device" : { "type" : "string" },
          "value" : { "type" : "string" },
          "mpn" : { "type" : "string" },
          "mpn1" : { "type" : "string" },
          "mpn2" : { "type" : "string" },
          "mpn3" : { "type" : "string" },
          "footprint" : { "type" : "string" },
          "selected_part" : { "type" : "string" },
          "origin" : { "type" : "string" },
          "populate" : { "type" : "string" }
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties" : {
    "bom" : {
      "type" : "object",
      "properties" : {
          "bom" : { 
            "type" : "array",
            "items" : [
                {
                  "row_num" : { "type" : "string", "description" : "The row number of the item." },
                  "part" : { "type" : "string", "description" : "The part/designator of the item." },
                  "package" : { "type" : "string", "description" : "The package of the item."  },
                  "device" : { "type" : "string", "description" : "The device of the item."  },
                  "value" : { "type" : "string", "description" : "The value of the item." },
                  "mpn" : { "type" : "string", "description" : "The MPN of the item." },
                  "mpn1" : { "type" : "string", "description" : "An alternate MPN for the item." },
                  "mpn2" : { "type" : "string", "description" : "An alternate MPN for the item." },
                  "mpn3" : { "type" : "string", "description" : "An alternate MPN for the item." },
                  "footprint" : { "type" : "string", "description" : "The footprint of the item." },
                  "selected_part" : { "type" : "string", "description" : "The selected part number of the item." },
                  "origin" : { "type" : "string", "description" : "The origin of the item." },
                  "populate" : { "type" : "string", "description" : "Whether or not to populate the item." }
                }
              ]
           },
          "rohs" : {
              "type" : "object",
              "properties" : {
                  "mpn" : {
                      "type" : "string",
                      "description" : "A part number (as key) and its associated RoHS enum (as value)."
                  }
              }
          }
       }
    }
  }
}

HTTP status code 404


put

Update a Specific Bill of Materials Item for a Version of a PCB Project

Using this endpoint, you can modify the attributes of an item in your bill of materials. Namely, you can change the following:

  • value The value (e.g. '1K') for the item.

  • package The package type (e.g. '0402') for the item.

  • populate Whether or not this part should be populated on the board, 0 = no, 1 = yes

  • selected_part The MPN of the part from the market to use for this BoM item

You must specify one or more of these keys, if you do not specify a key, it will not be changed.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)
  • designator: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "bom_item": {
      "type": "object",
      "properties": {
        "part": {
            "type": "string",
            "description": "The part designator for this BoM element"
          },
          "value": {
            "type": "string",
            "description": "The value provided for this BoM element"
          },
          "package": {
            "type": "string",
            "description": "The package provided for this BoM element"
          },
          "populate": {
            "type": "integer",
            "description": "Whether or not to place this BoM element, 1=place, 0=do not place"
          },
          "selected_part": {
            "type": "string",
            "description": "The part which has been selected to populate on the PCB for this BoM element"
          }
        }
      }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "bom_item": {
      "type": "object",
      "properties": {
        "part": {
            "type": "string",
            "description": "The part designator for this BoM element"
          },
          "value": {
            "type": "string",
            "description": "The value provided for this BoM element"
          },
          "package": {
            "type": "string",
            "description": "The package provided for this BoM element"
          },
          "populate": {
            "type": "integer",
            "description": "Whether or not to place this BoM element, 1=place, 0=do not place"
          },
          "selected_part": {
            "type": "string",
            "description": "The part which has been selected to populate on the PCB for this BoM element"
          }
        }
      }
  }
}

HTTP status code 404


get

Get Processing Status for a Specific PCB Version

The following potential status values are returned (new ones may be added in the future):

  • nofiles

    No files have been uploaded into this version of the project

  • eagleproc

    Eagle CAD file processing is occurring in the background

  • gerberproc

    Gerber file processing is occurring in the background

  • bomproc

    Bill of Materials processing is occurring in the background

  • error

    An error has occurred see /{pcb_id}/{pcb_version}/errors for more detail

Note that you cannot order a version of a PCB that currently returns a non-empty set of status codes. You must wait (or take necessary action) for the statuses to clear for a project before ordering.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "stringlist": {
      "type": "object",
      "properties": {
        "desc": {
          "type": "string",
          "description": "Type of items included in this list of text items"
        },
        "values": {
          "type": "array",
          "minItems": 0,
          "description": "String items returned",
          "items": { "type": "string"}
        }
      }
    }
  }
}

HTTP status code 404


get

Get Processing Errors for a Specific PCB Version

Returns a list of errors associated with the specific PCB version.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "stringlist": {
      "type": "object",
      "properties": {
        "desc": {
          "type": "string",
          "description": "Type of items included in this list of text items"
        },
        "values": {
          "type": "array",
          "minItems": 0,
          "description": "String items returned",
          "items": { "type": "string"}
        }
      }
    }
  }
}

HTTP status code 404


get

Get Manufacturing Notes for a Specific PCB Version

The manufacturing notes for a project are displayed to line technicians during the assembly of your order. These should be used to help provide clarification for inobvious parts, or to assist with identification.

Do not use manufacturing notes to override placement or rotation data!


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "stringlist": {
      "type": "object",
      "properties": {
        "desc": {
          "type": "string",
          "description": "Type of items included in this list of text items"
        },
        "values": {
          "type": "array",
          "minItems": 0,
          "description": "String items returned",
          "items": { "type": "string"}
        }
      }
    }
  }
}

HTTP status code 404


put

Update Manufacturing Notes for a Specific PCB Version

The manufacturing notes for a project are displayed to line technicians during the assembly of your order. These should be used to help provide clarification for inobvious parts, or to assist with identification.

Do not use manufacturing notes to override placement or rotation data!


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_notes": {
      "type": "object",
      "properties": {
        "notes": { "type": "string", "description": "Manufacturing Notes"}
      }
    }
  }
}

HTTP status code 204

HTTP status code 404


get

Get List of PCB Version Project Files

Returns a list of all files currently uploaded and recognized for the specified PCB project version.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "gerber_list": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "layer": { "type": "string"},
          "file_name": { "type": "string"},
          "bytes": { "type": "integer"},
          "created": { "type": "string"},
          "uri": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 404


get

Get List of PCB Version Files

Returns a list of all Gerber files currently uploaded and recognized for the specified PCB project version.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "gerber_list": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "layer": { "type": "string"},
          "file_name": { "type": "string"},
          "bytes": { "type": "integer"},
          "created": { "type": "string"},
          "uri": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 404


post

Add or Overwrite Project Files

Create, or update, one or more project files by providing their file data. You can provide more than one file at a time, but you are limited to a maximum of 10MB of data per request.

If the layer(s) provide already exist, they will be overwritten, otherwise they will be added.

For each provided file upload, the file name's extension will determine the layer being provided, and must be one of the following options:

  • gbl

    Bottom Copper

  • gbs

    Bottom Soldermask

  • gbo

    Bottom Silkscreen

  • gbp

    Bottom Paste

  • gtl

    Top Copper

  • gts

    Top Soldermask

  • gto

    Top Silkscreen

  • gtp

    Top Paste

  • bor

    Board Outline

  • xln

    Drill Excellon File (All drills are plated through holes)

For example, you would provide a filename like one of the following:

  • pcb.bor
  • MyProject.xln
  • AnyValidFileName.gtp

After your layers are uploaded, they will be processed as part of a complete set, including automatic trimming of design outside of the board outline. Check /pcb/{pcb_id}/{pcb_version}/status to determine whether or not processing is ongoing after upload.

Since gerber layers will be trimmed to the board outline after upload, this means that changes to the board outline that make it smaller or larger, without subsequent re-upload of the other gerber layers may result in a damaged board.

You should always re-upload your complete gerber layers after making changes to the board outline layer.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: multipart/form-data

Form Parameters
  • file: required (file)

    The file to upload

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "gerber_list": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "layer": { "type": "string"},
          "file_name": { "type": "string"},
          "bytes": { "type": "integer"},
          "created": { "type": "string"},
          "uri": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 400

Body

Type: application/json

Schema:


  {

    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "error": {
        "type": "object",
        "properties": {
          "code": {
            "description": "A unique error code",
            "type": "text"
          },
          "text": {
            "type": "array",
            "description": "List of error detail strings",
            "minItems": 0,
            "items": { "type": "string"}
          }
        }
      }
    }
  }

HTTP status code 404


get

Get a Specific Gerber Layer

Returns the raw (gerber) data associated with the gerber layer, if it exists.

Optionally, you can request a "preview image" which is an SVG representation of the gerber data.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)
  • file_name: required (string)

Query Parameters

  • Preview: (integer)

    Provide a value of 1 to return SVG instead of Gerber data

    Example:

    1

HTTP status code 200

Body

Type: text/plain

Type: application/svg+xml

HTTP status code 404


get

Retrieve Combined BoM and Placement Data

By Default, the Bill of Materials and Placement Data express the EDA-defined data about your board. This data is essential for the production of your PCB. Within this data is critical information about each component, it's X and Y center (in thousandths of an inch), and the pad width and height of the component (in thousandths of an inch).


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_xyrs": {
      "type": "array",
      "minItems": 1,
      "items": [
        {
          "designator": { "type": "string", "description": "The designator for the component"},
          "x_loc": { "type": "number", "description": "The center location (X) of the component, in thousandths of an inch"},
          "y_loc": { "type": "number", "description": "The center location (Y) of the component, in thousandths of an inch"},
          "rotation": { "type": "number", "description": "The rotation of the component, with 0 degrees indicating the locating pin is nearest to the top-left of the component looking from the top of the board"},
          "board_side": {"type": "number", "description": "1 = top, 2 = bottom"},
          "component_type": { "type": "number", "description": "1 = SMD, 2 = PTH"},
          "x_size": { "type": "number", "description": "The width of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "y_size": { "type": "number", "description": "The height of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "value": { "type": "string", "description": "The value for the part"},
          "footprint": { "type": "string", "description": "The name of the part footprint"}
        }
      ]
    }
  }
}

HTTP status code 404


post

Provide or Overwrite The XYRS Data for the PCB Version

By Default, the Bill of Materials and Placement Data express the EDA-defined data about your board. This data is essential for the production of your PCB. Within this data is critical information about each component, it's X and Y center (in thousandths of an inch), and the pad width and height of the component (in thousandths of an inch).

This method completely overwrites the existing XYRS data for the specified version of the PCB project, or provides the data if it does not exist.

You must provide for each component all of the following values:

  • designator
    • The unique designator for the component
    • e.g.: 'R1', 'C23', etc.
  • x_loc
    • The X-location of the center of the component, in thousandths of an inch
    • 0,0 location is the bottom-left of the PCB at the center of the board outline
    • e.g.: 1023, 59.5, etc.
  • y_loc
    • The Y-location of the center of the component, in thousandths of an inch
    • 0,0 location is the bottom-left of the PCB at the center of the board outline
    • e.g.: 1023, 59.5, etc.
  • rotation
    • The rotation of the component
    • Rotation is clockwise
    • Zero rotation (0) assumes that locating pin on the component is at or nearest to the top-left, 180 assumes bottom-right
  • board_side
    • Which side of the board the component is on
    • 1 = top, 2 = bottom
  • component_type
    • What type of component is this?
    • 1 = SMD, 2 = PTH
  • x_size
    • The width of a box which just contains all pads (e.g. the "pad width") in thousandths of an inch
    • This data is used to display the component on the placement tab in the UI
    • If you cannot extract this data from your EDA tool, specify any value which is neither too large nor too small to effectively manage rotation in the UI
  • y_size
    • The height of a box which just contains all pads (e.g. the "pad height") in thousandths of an inch
    • This data is used to display the component on the placement tab in the UI
    • If you cannot extract this data from your EDA tool, specify any value which is neither too large nor too small to effectively manage rotation in the UI
  • value
    • The component value
    • The system will automatically match this field for a manufacturer's part number and select that component if it is available on the market
      • To perform automatic matching, provide the exact part number, e.g. "FOO-12235.111/EX"
    • For parts such as resistors and capacitors, the system will automatically combine the value and footprint to search for "nearest compatible" house parts
  • footprint
    • The footprint for the part
    • e.g. "R0402", "C0603", "SOT-23-3", etc.

URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_xyrs": {
      "type": "array",
      "minItems": 1,
      "items": [
        {
          "designator": { "type": "string", "description": "The designator for the component"},
          "x_loc": { "type": "number", "description": "The center location (X) of the component, in thousandths of an inch"},
          "y_loc": { "type": "number", "description": "The center location (Y) of the component, in thousandths of an inch"},
          "rotation": { "type": "number", "description": "The rotation of the component, with 0 degrees indicating the locating pin is nearest to the top-left of the component looking from the top of the board"},
          "board_side": {"type": "number", "description": "1 = top, 2 = bottom"},
          "component_type": { "type": "number", "description": "1 = SMD, 2 = PTH"},
          "x_size": { "type": "number", "description": "The width of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "y_size": { "type": "number", "description": "The height of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "value": { "type": "string", "description": "The value for the part"},
          "footprint": { "type": "string", "description": "The name of the part footprint"}
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "pcb_xyrs": {
      "type": "array",
      "minItems": 1,
      "items": [
        {
          "designator": { "type": "string", "description": "The designator for the component"},
          "x_loc": { "type": "number", "description": "The center location (X) of the component, in thousandths of an inch"},
          "y_loc": { "type": "number", "description": "The center location (Y) of the component, in thousandths of an inch"},
          "rotation": { "type": "number", "description": "The rotation of the component, with 0 degrees indicating the locating pin is nearest to the top-left of the component looking from the top of the board"},
          "board_side": {"type": "number", "description": "1 = top, 2 = bottom"},
          "component_type": { "type": "number", "description": "1 = SMD, 2 = PTH"},
          "x_size": { "type": "number", "description": "The width of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "y_size": { "type": "number", "description": "The height of the entire area taken up by the pads of the component, in thousandths of an inch"},
          "value": { "type": "string", "description": "The value for the part"},
          "footprint": { "type": "string", "description": "The name of the part footprint"}
        }
      ]
    }
  }
}

HTTP status code 400

Body

Type: application/json

Schema:


  {

    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "error": {
        "type": "object",
        "properties": {
          "code": {
            "description": "A unique error code",
            "type": "text"
          },
          "text": {
            "type": "array",
            "description": "List of error detail strings",
            "minItems": 0,
            "items": { "type": "string"}
          }
        }
      }
    }
  }

HTTP status code 404


get

Get Placement Data for a PCB Project

Using this method, you can retrieve the placement data for all components used in a particular version of a PCB project.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "placements": {
      "type": "array",
      "items": [
        {
          "pcb_id": { "type": "string" },
          "part": { "type": "string" },
          "x_origin": { "type": "string" },
          "y_origin": { "type": "string" },
          "x_offset": { "type": "string" },
          "y_offset": { "type": "string" },
          "rotation": { "type": "string" },
          "rotation_offset": { "type": "string" },
          "flipped": { "type": "string" },
          "pad_width": { "type": "string" },
          "pad_height": { "type": "string" },
          "type": { "type": "string" },
          "side": { "type": "string" }
        }
      ]
    }
  }
}

HTTP status code 404


post

Update Part Placement Data for a PCB Project

Using this method, you can update the following attributes of placement for one or more parts:

  • x_origin The X center of the part, located from the bottom-left corner in thousandths of an inch (mils)
  • y_origin The Y center of the part, located from the bottom-left corner in thousandths of an inch (mils)
  • x_offset The offset to apply to the X center of the part, in thousandths of an inch (mils)
  • y_offset The offset to apply to the Y center of the part, in thousandths of an inch (mils)
  • rotation The rotation of the part
  • rotation_offset The offset (in degrees) to apply to the rotation of the part
  • pad_width The width of a bounding box that encompasses all pads on the part, in thousandths of an inch
  • pad_height The height of a bounding box that encompasses all pads on the part, in thousandths of an inch
  • type The type of the part 1 = SMD, 2 = PTH
  • side The side of the board 1= Top, 2 = Bottom

URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "placements": {
      "type": "array",
      "items": [
        {
          "part": { "type": "string" },
          "x_origin": { "type": "string" },
          "y_origin": { "type": "string" },
          "x_offset": { "type": "string" },
          "y_offset": { "type": "string" },
          "rotation": { "type": "string" },
          "rotation_offset": { "type": "string" },
          "flipped": { "type": "string" },
          "pad_width": { "type": "string" },
          "pad_height": { "type": "string" },
          "type": { "type": "string" },
          "side": { "type": "string" }
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "placements": {
      "type": "array",
      "items": [
        {
          "pcb_id": { "type": "string" },
          "part": { "type": "string" },
          "x_origin": { "type": "string" },
          "y_origin": { "type": "string" },
          "x_offset": { "type": "string" },
          "y_offset": { "type": "string" },
          "rotation": { "type": "string" },
          "rotation_offset": { "type": "string" },
          "flipped": { "type": "string" },
          "pad_width": { "type": "string" },
          "pad_height": { "type": "string" },
          "type": { "type": "string" },
          "side": { "type": "string" }
        }
      ]
    }
  }
}

HTTP status code 404


post

Approve Placement Data for a PCB Project You must approve placement data before a PCB project can be manufactured. If you make any changes to the BoM, or to placement data, you must re-approve placement again.


URI Parameters

  • pcb_id: required (string)
  • pcb_version: required (string)

Body

Type: text/plain

HTTP status code 200

HTTP status code 404


Find and List Parts

get

Get List of Available House Part Categories


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "part_categories": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "description": "A category definition",
        "additionalProperties": {
          "type": "object",
          "description": "Sub-category, Key is Sub-Category Name, Value is Sub-Category Description",
          "additionalProperties": { "type": "string"}
        }
      }
    }
  }
}

Get Part Details

get

Get Details for This Part Number, if Known


URI Parameters

  • part_number: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "part" : {
      "type": "object",
      "properties" : {
        "part_num": {"type": "string"},
        "part_desc": {"type": "string"},
        "part_class": { "type": "string"},
        "part_house": { "type": "integer", "description": "1 if House Part, 0 Otherwise"},
        "part_datasheet": { "type": "string"},
        "part_attrs": {
          "type": "object",
          "additionalProperties": { "type": "text"}
        },
        "part_price": {
          "patternProperties": {
            "^[0-9]*$": { "type": "number"}
          }
        }
      }
    }
  }
}

List all Products

get

List all Products


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "product_id": { "type": "string"},
          "user_id": { "type": "string"},
          "name": { "type": "string"},
          "summary": { "type": "string"},
          "description": { "type": "string"},
          "sku": { "type": "string"},
          "price": { "type": "string"},
          "sale_price": { "type": "string"},
          "tariff_code": { "type": "string"},
          "weight": { "type": "string"},
          "length": { "type": "string"},
          "width": { "type": "string"},
          "height": { "type": "string"},
          "pcb_id": { "type": "string"},
          "pcb_version": { "type": "string"},
          "created": { "type": "string"}
        }
      ]
    }
  }
}

Manage Products

post

Create a new Product

Basic information about the product must be included in the request:

  • name

    The name of the product, up to 256 characters.

  • sku

    A unique SKU for the product. The SKU will act as the identifier for the product when including this product in other products, or when fulfilling shipping requests.

  • price

    The unit cost of the product in USD.

  • weight

    The weight of the product in ounces.

  • length

  • width
  • height

    The dimensions of the product in inches.

After the product is created, the contents of the product can be defined through further API calls. If the product is a PCB, the PCB and version can be linked to the product using the /v2/product/:product/pcb/:pcb/:version endpoint. If the product should contain other items from inventory, including other products, the BoM can be specified using the /v2/product/:product/bom endpoints.


Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Product cost",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "product_id": {
          "description": "A unique identifier for the product",
          "type": "string"
        },
        "user_id": {
          "description": "The ID of the user that created the product",
          "type": "string"
        },
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Insured value of the product",
          "type": "string"
        },
        "sale_price": {
          "description": "Sale price of the product",
          "type": "string"
        },
        "tariff_code": {
          "description": "Harmonized tariff code",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        },
        "pcb_id": {
          "description": "Unique identifier of the PCB linked to the product (optional)",
          "type": "string"
        },
        "pcb_version": {
          "description": "Version of the PCB linked to the product (optional)",
          "type": "string"
        },
        "created": {
          "description": "The date the product was created",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 409


get

Get details about a specific Product


URI Parameters

  • product_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "product_id": {
          "description": "A unique identifier for the product",
          "type": "string"
        },
        "user_id": {
          "description": "The ID of the user that created the product",
          "type": "string"
        },
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Insured value of the product",
          "type": "string"
        },
        "sale_price": {
          "description": "Sale price of the product",
          "type": "string"
        },
        "tariff_code": {
          "description": "Harmonized tariff code",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        },
        "pcb_id": {
          "description": "Unique identifier of the PCB linked to the product (optional)",
          "type": "string"
        },
        "pcb_version": {
          "description": "Version of the PCB linked to the product (optional)",
          "type": "string"
        },
        "created": {
          "description": "The date the product was created",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 404


put

Update Product Details


URI Parameters

  • product_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Product cost",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "product_id": {
          "description": "A unique identifier for the product",
          "type": "string"
        },
        "user_id": {
          "description": "The ID of the user that created the product",
          "type": "string"
        },
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Insured value of the product",
          "type": "string"
        },
        "sale_price": {
          "description": "Sale price of the product",
          "type": "string"
        },
        "tariff_code": {
          "description": "Harmonized tariff code",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        },
        "pcb_id": {
          "description": "Unique identifier of the PCB linked to the product (optional)",
          "type": "string"
        },
        "pcb_version": {
          "description": "Version of the PCB linked to the product (optional)",
          "type": "string"
        },
        "created": {
          "description": "The date the product was created",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 404


delete

Delete a Product


URI Parameters

  • product_id: required (string)

Body

Type: text/plain

HTTP status code 204


get

View the BoM for a product


URI Parameters

  • product_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "product_bom_id": { "type": "string"},
          "part_num": { "type": "string"},
          "description": { "type": "string"},
          "count": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 404


post

Add an inventory item to the product BoM


URI Parameters

  • product_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom_entry": {
      "type": "object",
      "properties": {
        "inventory_item_id": {
          "description": "The inventory item ID to add to the product BoM",
          "type": "string"
        },
        "count": {
          "description": "The number of units of this inventory item to add to the product",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom": {
      "type": "object",
      "properties": {
        "product_bom_id": {
          "description": "A unique identifier for the product BoM entry",
          "type": "string"
        },
        "part_num": {
          "description": "The part number for the BoM entry",
          "type": "string"
        },
        "description": {
          "description": "A short description of the BoM entry",
          "type": "string"
        },
        "count": {
          "description": "The number of units of this part included in the product",
          "type": "string"
        }
      }
    }
  }
}

get

Get a product BoM entry


URI Parameters

  • product_id: required (string)
  • product_bom_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom": {
      "type": "object",
      "properties": {
        "product_bom_id": {
          "description": "A unique identifier for the product BoM entry",
          "type": "string"
        },
        "part_num": {
          "description": "The part number for the BoM entry",
          "type": "string"
        },
        "description": {
          "description": "A short description of the BoM entry",
          "type": "string"
        },
        "count": {
          "description": "The number of units of this part included in the product",
          "type": "string"
        }
      }
    }
  }
}

put

Update a product BoM entry


URI Parameters

  • product_id: required (string)
  • product_bom_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom_entry": {
      "type": "object",
      "properties": {
        "count": {
          "description": "The number of units of this inventory item to add to the product",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product_bom": {
      "type": "object",
      "properties": {
        "product_bom_id": {
          "description": "A unique identifier for the product BoM entry",
          "type": "string"
        },
        "part_num": {
          "description": "The part number for the BoM entry",
          "type": "string"
        },
        "description": {
          "description": "A short description of the BoM entry",
          "type": "string"
        },
        "count": {
          "description": "The number of units of this part included in the product",
          "type": "string"
        }
      }
    }
  }
}

delete

Delete a product BoM entry


URI Parameters

  • product_id: required (string)
  • product_bom_id: required (string)

HTTP status code 204


put

Link a PCB project to the product


URI Parameters

  • product_id: required (string)
  • pcb_id: required (string)
  • pcb_version: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "product_id": {
          "description": "A unique identifier for the product",
          "type": "string"
        },
        "user_id": {
          "description": "The ID of the user that created the product",
          "type": "string"
        },
        "name": {
          "description": "The short name of the product",
          "type": "string"
        },
        "summary": {
          "description": "A short summary of the product (optional)",
          "type": "string"
        },
        "description": {
          "description": "A long description of the product (optional)",
          "type": "string"
        },
        "sku": {
          "description": "The unique SKU for the product",
          "type": "string"
        },
        "price": {
          "description": "Insured value of the product",
          "type": "string"
        },
        "sale_price": {
          "description": "Sale price of the product",
          "type": "string"
        },
        "tariff_code": {
          "description": "Harmonized tariff code",
          "type": "string"
        },
        "weight": {
          "description": "Product weight",
          "type": "string"
        },
        "length": {
          "description": "Product length",
          "type": "string"
        },
        "width": {
          "description": "Product width",
          "type": "string"
        },
        "height": {
          "description": "Product height",
          "type": "string"
        },
        "pcb_id": {
          "description": "Unique identifier of the PCB linked to the product (optional)",
          "type": "string"
        },
        "pcb_version": {
          "description": "Version of the PCB linked to the product (optional)",
          "type": "string"
        },
        "created": {
          "description": "The date the product was created",
          "type": "string"
        }
      }
    }
  }
}

Manage Inventory Items

get

List Inventory Items


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "count": {
      "type": "string"
    },
    "items": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "item_id": { "type": "string" },
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" },
          "total_count": { "type": "string" },
          "total_value": { "type": "string" },
          "items": {
            "type": "array",
            "minItems": 0,
            "items": [
              {
                "type": { "type": "string" },
                "unit_value": { "type": "string" },
                "reserve_count": { "type": "string" },
                "created": { "type": "string" },
                "modified": { "type": "string" }
              }
            ]
          },
          "created": { "type": "string" }
        }
      ]
    }
  }
}

post

Add a new Inventory Item


Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "item": {
      "type": "object",
      "properties": {
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" }
        }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "item": {
      "type": "object",
      "minItems": 0,
      "properties": {
          "item_id": { "type": "string" },
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" },
          "total_count": { "type": "string" },
          "total_value": { "type": "string" },
          "items": {
            "type": "array",
            "minItems": 0,
            "items": [
              {
                "type": { "type": "string" },
                "unit_value": { "type": "string" },
                "reserve_count": { "type": "string" },
                "created": { "type": "string" },
                "modified": { "type": "string" }
              }
            ]
          },
          "created": { "type": "string" }
        }
    }
  }
}

get

Get an inventory item


URI Parameters

  • item_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "item": {
      "type": "object",
      "minItems": 0,
      "properties": {
          "item_id": { "type": "string" },
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" },
          "total_count": { "type": "string" },
          "total_value": { "type": "string" },
          "items": {
            "type": "array",
            "minItems": 0,
            "items": [
              {
                "type": { "type": "string" },
                "unit_value": { "type": "string" },
                "reserve_count": { "type": "string" },
                "created": { "type": "string" },
                "modified": { "type": "string" }
              }
            ]
          },
          "created": { "type": "string" }
        }
    }
  }
}

put

Update an inventory item


URI Parameters

  • item_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "item": {
      "type": "object",
      "properties": {
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" }
        }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "item": {
      "type": "object",
      "minItems": 0,
      "properties": {
          "item_id": { "type": "string" },
          "part_num": { "type": "string" },
          "internal_part_num": { "type": "string" },
          "description": { "type": "string" },
          "length": { "type": "string" },
          "width": { "type": "string" },
          "height": { "type": "string" },
          "total_count": { "type": "string" },
          "total_value": { "type": "string" },
          "items": {
            "type": "array",
            "minItems": 0,
            "items": [
              {
                "type": { "type": "string" },
                "unit_value": { "type": "string" },
                "reserve_count": { "type": "string" },
                "created": { "type": "string" },
                "modified": { "type": "string" }
              }
            ]
          },
          "created": { "type": "string" }
        }
    }
  }
}

List all Advance Shipment Notifications

get

List all Advance Shipment Notifications


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_requests": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "asn_request_id": { "type": "string"},
          "organization_id": { "type": "string"},
          "user_id": { "type": "string"},
          "order_id": { "type": "string"},
          "name": { "type": "string"},
          "carrier": { "type": "string"},
          "tracking_number": { "type": "string"},
          "status": { "type": "string"},
          "created": { "type": "string"}
        }
      ]
    }
  }
}

Manage Advance Shipment Notifications

post

Create a new Advance Shipment Notification

General ASN workflow:

  1. Create an Advance Shipping Notice, providing a friendly name for the ASN. The carrier and tracking_number do not yet need to be provided, but will need to be present before the ASN can be moved to the ready state.
  2. Attach the inventory items that will be part of the shipment.
  3. Purchase a shipping label through the carrier of your choice, and ship the parts to us with the ASN ID in the Attention field on the parcel's label.
  4. Update the ASN with the carrier, tracking_number, and a status of ready.

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request": {
      "type": "object",
      "properties": [
        {
          "organization_id": {
            "description": "The organization ID that owns the shipping request",
            "type": "string"
          },
          "name": {
            "description": "A friendly name for the shipping request",
            "type": "string"
          },
          "carrier": {
            "description": "The carrier chosen for the shipment",
            "type": "string"
          },
          "tracking_number": {
            "description": "The carrier tracking number",
            "type": "string"
          }
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request": {
      "type": "object",
      "properties": [
        {
          "asn_request_id": {
            "description": "A unique ID for the shipping request",
            "type": "string"
          },
          "organization_id": {
            "description": "The organization ID that owns the shipping request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the shipping request",
            "type": "string"
          },
          "order_id": {
            "description": "The order ID for the shipping request, once it has been ordered",
            "type": "string"
          },
          "name": {
            "description": "A friendly name for the shipping request",
            "type": "string"
          },
          "carrier": {
            "description": "The carrier chosen for the shipment",
            "type": "string"
          },
          "tracking_number": {
            "description": "The carrier tracking number",
            "type": "string"
          },
          "status": {
            "description": "The status of the shipping request: new, queued, complete",
            "type": "string"
          },
          "created": {
            "description": "",
            "type": "string"
          }
        }
      ]
    }
  }
}

get

Get details about an Advance Shipment Notification


URI Parameters

  • asn_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request": {
      "type": "object",
      "properties": [
        {
          "asn_request_id": {
            "description": "A unique ID for the shipping request",
            "type": "string"
          },
          "organization_id": {
            "description": "The organization ID that owns the shipping request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the shipping request",
            "type": "string"
          },
          "order_id": {
            "description": "The order ID for the shipping request, once it has been ordered",
            "type": "string"
          },
          "name": {
            "description": "A friendly name for the shipping request",
            "type": "string"
          },
          "carrier": {
            "description": "The carrier chosen for the shipment",
            "type": "string"
          },
          "tracking_number": {
            "description": "The carrier tracking number",
            "type": "string"
          },
          "status": {
            "description": "The status of the shipping request: new, queued, complete",
            "type": "string"
          },
          "created": {
            "description": "",
            "type": "string"
          }
        }
      ]
    }
  }
}

put

Update an Advance Shipment Notification


URI Parameters

  • asn_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request": {
      "type": "object",
      "properties": [
        {
          "asn_request_id": {
            "description": "A unique ID for the shipping request",
            "type": "string"
          },
          "organization_id": {
            "description": "The organization ID that owns the shipping request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the shipping request",
            "type": "string"
          },
          "order_id": {
            "description": "The order ID for the shipping request, once it has been ordered",
            "type": "string"
          },
          "name": {
            "description": "A friendly name for the shipping request",
            "type": "string"
          },
          "carrier": {
            "description": "The carrier chosen for the shipment",
            "type": "string"
          },
          "tracking_number": {
            "description": "The carrier tracking number",
            "type": "string"
          },
          "status": {
            "description": "The status of the shipping request: new, queued, complete",
            "type": "string"
          },
          "created": {
            "description": "",
            "type": "string"
          }
        }
      ]
    }
  }
}

get

Get list of Inventory Items in an Advance Shipment Notification


URI Parameters

  • asn_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request_parts": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "asn_part_id": { "type": "string"},
          "part_num": { "type": "string"},
          "unit_value": { "type": "string"},
          "unit_count": { "type": "string"}
        }
      ]
    }
  }
}

post

Add an Inventory Item to an Advance Shipment Notification


URI Parameters

  • asn_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request_part": {
      "type": "object",
      "properties": {
        "part_num": {
          "description": "The part number to be included in the shipment",
          "type": "string"
        },
        "unit_count": {
          "description": "The count of the inventory items included in the shipment",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request_parts": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "asn_part_id": { "type": "string"},
          "part_num": { "type": "string"},
          "unit_value": { "type": "string"},
          "unit_count": { "type": "string"}
        }
      ]
    }
  }
}

delete

Remove a part from an Advance Shipment Notification


URI Parameters

  • asn_id: required (string)
  • part_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "asn_request_parts": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "asn_part_id": { "type": "string"},
          "part_num": { "type": "string"},
          "unit_value": { "type": "string"},
          "unit_count": { "type": "string"}
        }
      ]
    }
  }
}

List all Fulfillment Requests

get

List all fulfillment requests


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

Manage Fulfillment Requests

post

Create a new Fulfillment Request

General product fulfillment workflow:

  1. Create a fulfillment request with the shipping address of the recipient. The address will be verified by the service, returning 200 if successful, or 400 if the address could not be validated.
  2. Add one or more products to the fulfillment request.
  3. Get a shipping quote to see the various shipping options.
  4. Create a fulfillment order, providing one or more fulfillment request IDs and their preferred shipping options.

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "customer_name": { "type": "string"},
          "company": { "type": "string"},
          "phone_number": { "type": "string"},
          "email": { "type": "string"},
          "po_number": { "type": "string"},
          "address1": { "type": "string"},
          "address2": { "type": "string"},
          "city": { "type": "string"},
          "state": { "type": "string"},
          "zip_code": { "type": "string"},
          "country": { "type": "string"},
          "status": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

HTTP status code 400


get

Get details about a Fulfillment Request


URI Parameters

  • request_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

put

Update details for a Fulfillment Request


URI Parameters

  • request_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "customer_name": { "type": "string"},
          "company": { "type": "string"},
          "phone_number": { "type": "string"},
          "email": { "type": "string"},
          "po_number": { "type": "string"},
          "address1": { "type": "string"},
          "address2": { "type": "string"},
          "city": { "type": "string"},
          "state": { "type": "string"},
          "zip_code": { "type": "string"},
          "country": { "type": "string"},
          "status": { "type": "string"}
        }
      ]
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

delete

Delete this Fulfillment Request


URI Parameters

  • request_id: required (string)

put

Verify the recipient address for the Fulfillment Request


URI Parameters

  • request_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

HTTP status code 400


post

Add a Product to this Fulfillment Request


URI Parameters

  • request_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_product": {
      "type": "object",
      "properties": {
        "product_id": {
          "description": "The ID of the product to be included in the shipment",
          "type": "string"
        },
        "count": {
          "description": "The number of this product to include in the shipment",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

delete

Remove this Product from this Request


URI Parameters

  • request_id: required (string)
  • product_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "fulfillment_request": {
      "type": "object",
      "properties": [
        {
          "fulfillment_request_id": {
            "description": "A unique ID for the fulfillment request",
            "type": "string"
          },
          "user_id": {
            "description": "The user who created the fulfillment request",
            "type": "string"
          },
          "customer_name": {
            "description": "Fulfillment recipient: customer name",
            "type": "string"
          },
          "company": {
            "description": "Fulfillment recipient: company name",
            "type": "string"
          },
          "phone_number": {
            "description": "Fulfillment recipient: phone number",
            "type": "string"
          },
          "email": {
            "description": "Fulfillment recipient: email address",
            "type": "string"
          },
          "po_number": {
            "description": "Fulfillment recipient: purchase order number",
            "type": "string"
          },
          "address1": {
            "description": "Fulfillment recipient: street address (line 1)",
            "type": "string"
          },
          "address2": {
            "description": "Fulfillment recipient: street address (line 2)",
            "type": "string"
          },
          "city": {
            "description": "Fulfillment recipient: city",
            "type": "string"
          },
          "state": {
            "description": "Fulfillment recipient: state or province",
            "type": "string"
          },
          "zip_code": {
            "description": "Fulfillment recipient: ZIP or postal code",
            "type": "string"
          },
          "country": {
            "description": "Fulfillment recipient: two-letter country code",
            "type": "string"
          },
          "verified": {
            "description": "Boolean flag that indicates whether address has been successfully validated",
            "type": "string"
          },
          "products": {
            "description": "List of products to be included in the shipment",
            "type": "array",
            "items": [
              {
                "fulfillment_product_id": { "type": "string"},
                "product_id": { "type": "string"},
                "sku": { "type": "string"},
                "length": { "type": "string"},
                "height": { "type": "string"},
                "width": { "type": "string"},
                "weight": { "type": "string"},
                "units_requested": { "type": "string"}
              }
            ]
          },
          "carrier": {
            "description": "The carrier used for shipping this request",
            "type": "string"
          },
          "service": {
            "description": "The service used for shipping this request",
            "type": "string"
          },
          "tracking": {
            "description": "The tracking number for the shipment",
            "type": "string"
          },
          "created": {
            "description": "The date the fulfillment request was created",
            "type": "string"
          }
        }
      ]
    }
  }
}

get

Get shipping quote and methods for this Request


URI Parameters

  • request_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "charges": {
      "type": "object",
      "properties": {
        "shipment": {
          "description": "The various shipping options, and associated costs, for the fulfillment order",
          "type": "array"
        },
        "labor": {
          "description": "The labor charges for the fulfillment order",
          "type": "string"
        }
      }
    }
  }
}

Retrieve List of Orders

get

Get a list of all orders


Query Parameters

  • Order Type: (string)

    Order type: pcb, fulfillment, consignment

    Example:

    pcb

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "orders": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "order_id": { "type": "string" },
          "user_id": { "type": "string" },
          "email": { "type": "string" },
          "expedite": { "type": "string" },
          "status": { "type": "string" },
          "invoice_total": { "type": "string" },  
          "type": { "type": "string" },
          "unit_count": { "type": "string" },
          "pcb_id": { "type": "string" },
          "name": { "type": "string" },
          "pcb_name": { "type": "string" },
          "pcb_version": { "type": "string" },
          "pcb_area": { "type": "string" },
          "created": { "type": "string" },
          "shipped" : { "type" : "string" },
          "shipment" : {
              "type" : "object",
              "minItems" : 0,
              "properties" : {
                  "actual_cost" : { "type" : "string" },
                  "carrier" : { "type" : "string" },
                  "created" : { "type" : "string" },
                  "delivered" : { "type" : "string" },
                  "flat_rate" : { "type" : "string" },
                  "label_png" : { "type" : "string" },
                  "label_zpl" : { "type" : "string" },
                  "order_id" : { "type" : "string" },
                  "quoted_cost" : { "type" : "string" },
                  "service" : { "type" : "string" },
                  "service_name" : { "type" : "string" },
                  "ship_status" : { "type" : "string" },
                  "shipped" : { "type" : "string" },
                  "signature_required" : { "type" : "string" },
                  "tracking" : { "type" : "string" }
              }
           }
        }
      ]
    }
  }
}

Manage Orders

post

Create an Order for a PCB Project

PCB order workflow:

  1. Create the order.
  2. If the shipping address was not specified upon order creation, update the order to include a shipping address.
  3. Request shipping quotes for the order.
  4. Set the shipping method for the order.
  5. Apply payments to the order using payment tokens. Any amount, up to the full order amount, can be applied in each API call. The order will not be shipped until payments totalling the full invoice amount have been applied.

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "pcb_id": {
          "description": "The PCB ID to be ordered",
          "type": "string"
        },
        "pcb_version": {
          "description": "The PCB version to be ordered",
          "type": "string"
        },
        "quantity": {
          "description": "The number of units to order",
          "type": "string"
        },
        "shipto": {
          "description": "The ID for the receiving address for the shipment",
          "type": "object",
          "properties": {
            "name": {
              "description": "Recipient name",
              "type": "string"
            },
            "company": {
              "description": "Company name",
              "type": "string"
            },
            "street": {
              "description": "Street address (line 1)",
              "type": "string"
            },
            "street_2": {
              "description": "Street address (line 2)",
              "type": "string"
            },
            "city": {
              "description": "City",
              "type": "string"
            },
            "state": {
              "description": "State/Province",
              "type": "string"
            },
            "postcode": {
              "description": "ZIP/Postal code",
              "type": "string"
            },
            "country": {
              "description": "2-Letter country code",
              "type": "string"
            },
            "phone": {
              "description": "Phone number",
              "type": "string"
            }
          }
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "order_id": {
          "description": "A unique identifier for the order",
          "type": "string"
        },
        "user_id": {
          "description": "The user who placed the order",
          "type": "string"
        },
        "email": {
          "description": "The email address of the user who placed the order",
          "type": "string"
        },
        "expedite": {
          "description": "Expedited order (boolean)",
          "type": "string"
        },
        "status": {
          "description": "Order status (quote, paid, reviewed, processing, shipped, cancelled)",
          "type": "string"
        },
        "invoice_total": {
          "description": "Total price for the order",
          "type": "string"
        },
        "type": {
          "description": "Order type (pcb, fulfillment, consignment)",
          "type": "string"
        },
        "unit_count": {
          "description": "Number of units in the order",
          "type": "string"
        },
        "pcb_id": {
          "description": "PCB orders: The PCB ID that was ordered",
          "type": "string"
        },
        "name": {
          "description": "PCB orders: The name of the PCB project",
          "type": "string"
        },
        "pcb_version": {
          "description": "PCB Orders: The PCB version that was ordered",
          "type": "string"
        },
        "pcb_area": {
          "description": "PCB Orders: The physical area of the PCB that was ordered",
          "type": "string"
        },
        "created": {
          "description": "The date the order was created",
          "type": "string"
        },
        "shipped": {
          "description": "The date the order was shipped",
          "type": "string"
        },
        "shipto": {
          "type": "object",
          "properties": {
            "name": { "type": "string"},
            "company": { "type": "string" },
            "street": { "type": "string", "description": "Street Address"},
            "street_2": { "type": "string"},
            "city": { "type": "string"},
            "state": { "type": "string"},
            "postcode": { "type": "string"},
            "country": { "type": "string", "description": "2-Letter ISO Code for Country"},
            "phone": { "type": "string"}
          }
        }
      }
    }
  }
}

post

Create an Order for one or more Fulfillment Requests


Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "fulfillment_requests": {
          "type": "array",
          "items": [
            {
              "fulfillment_request_id": {
                "type": "string",
                "description": "The fulfillment request ID to add to the order"
              },
              "carrier": {
                "type": "string",
                "description": "The carrier to use for the fulfillment request, obtained from the fulfillment quote"
              },
              "service": {
                "type": "string",
                "description": "The shipping service to use for the fulfillment request, obtained from the fulfillment quote"
              },
              "shipment_id": {
                "type": "string",
                "description": "The shipment ID from the fulfillment quote"
              },
              "rate_id": {
                "type": "string",
                "description": "The rate ID from the fulfillment quote"
              }
            }
          ]
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "order_id": {
          "description": "A unique identifier for the order",
          "type": "string"
        },
        "user_id": {
          "description": "The user who placed the order",
          "type": "string"
        },
        "email": {
          "description": "The email address of the user who placed the order",
          "type": "string"
        },
        "expedite": {
          "description": "Expedited order (boolean)",
          "type": "string"
        },
        "status": {
          "description": "Order status (quote, paid, reviewed, processing, shipped, cancelled)",
          "type": "string"
        },
        "invoice_total": {
          "description": "Total price for the order",
          "type": "string"
        },
        "type": {
          "description": "Order type (pcb, fulfillment, consignment)",
          "type": "string"
        },
        "unit_count": {
          "description": "Number of units in the order",
          "type": "string"
        },
        "pcb_id": {
          "description": "PCB orders: The PCB ID that was ordered",
          "type": "string"
        },
        "name": {
          "description": "PCB orders: The name of the PCB project",
          "type": "string"
        },
        "pcb_version": {
          "description": "PCB Orders: The PCB version that was ordered",
          "type": "string"
        },
        "pcb_area": {
          "description": "PCB Orders: The physical area of the PCB that was ordered",
          "type": "string"
        },
        "created": {
          "description": "The date the order was created",
          "type": "string"
        },
        "shipped": {
          "description": "The date the order was shipped",
          "type": "string"
        },
        "shipto": {
          "type": "object",
          "properties": {
            "name": { "type": "string"},
            "company": { "type": "string" },
            "street": { "type": "string", "description": "Street Address"},
            "street_2": { "type": "string"},
            "city": { "type": "string"},
            "state": { "type": "string"},
            "postcode": { "type": "string"},
            "country": { "type": "string", "description": "2-Letter ISO Code for Country"},
            "phone": { "type": "string"}
          }
        }
      }
    }
  }
}

get

Get details about a specific order


URI Parameters

  • order_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "order_id": {
          "description": "A unique identifier for the order",
          "type": "string"
        },
        "user_id": {
          "description": "The user who placed the order",
          "type": "string"
        },
        "email": {
          "description": "The email address of the user who placed the order",
          "type": "string"
        },
        "expedite": {
          "description": "Expedited order (boolean)",
          "type": "string"
        },
        "status": {
          "description": "Order status (quote, paid, reviewed, processing, shipped, cancelled)",
          "type": "string"
        },
        "invoice_total": {
          "description": "Total price for the order",
          "type": "string"
        },
        "type": {
          "description": "Order type (pcb, fulfillment, consignment)",
          "type": "string"
        },
        "unit_count": {
          "description": "Number of units in the order",
          "type": "string"
        },
        "pcb_id": {
          "description": "PCB orders: The PCB ID that was ordered",
          "type": "string"
        },
        "name": {
          "description": "PCB orders: The name of the PCB project",
          "type": "string"
        },
        "pcb_version": {
          "description": "PCB Orders: The PCB version that was ordered",
          "type": "string"
        },
        "pcb_area": {
          "description": "PCB Orders: The physical area of the PCB that was ordered",
          "type": "string"
        },
        "created": {
          "description": "The date the order was created",
          "type": "string"
        },
        "shipped": {
          "description": "The date the order was shipped",
          "type": "string"
        },
        "shipto": {
          "type": "object",
          "properties": {
            "name": { "type": "string"},
            "company": { "type": "string" },
            "street": { "type": "string", "description": "Street Address"},
            "street_2": { "type": "string"},
            "city": { "type": "string"},
            "state": { "type": "string"},
            "postcode": { "type": "string"},
            "country": { "type": "string", "description": "2-Letter ISO Code for Country"},
            "phone": { "type": "string"}
          }
        }
      }
    }
  }
}

put

Modify details of a specific order

Using this method, you can set or update the shipping address for the order. If you did not specify the shipping address at order creation time, you must use this method to set the shipping address before paying for or requesting shipping quotes for the order.


URI Parameters

  • order_id: required (string)

Body

Type: application/json

Schema:


{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "shipto": {
          "type": "object",
          "properties": {
            "name": { "type": "string"},
            "company": { "type": "string" },
            "street": { "type": "string", "description": "Street Address"},
            "street_2": { "type": "string"},
            "city": { "type": "string"},
            "state": { "type": "string"},
            "postcode": { "type": "string"},
            "country": { "type": "string", "description": "2-Letter ISO Code for Country"},
            "phone": { "type": "string"}
          }
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "order_id": {
          "description": "A unique identifier for the order",
          "type": "string"
        },
        "user_id": {
          "description": "The user who placed the order",
          "type": "string"
        },
        "email": {
          "description": "The email address of the user who placed the order",
          "type": "string"
        },
        "expedite": {
          "description": "Expedited order (boolean)",
          "type": "string"
        },
        "status": {
          "description": "Order status (quote, paid, reviewed, processing, shipped, cancelled)",
          "type": "string"
        },
        "invoice_total": {
          "description": "Total price for the order",
          "type": "string"
        },
        "type": {
          "description": "Order type (pcb, fulfillment, consignment)",
          "type": "string"
        },
        "unit_count": {
          "description": "Number of units in the order",
          "type": "string"
        },
        "pcb_id": {
          "description": "PCB orders: The PCB ID that was ordered",
          "type": "string"
        },
        "name": {
          "description": "PCB orders: The name of the PCB project",
          "type": "string"
        },
        "pcb_version": {
          "description": "PCB Orders: The PCB version that was ordered",
          "type": "string"
        },
        "pcb_area": {
          "description": "PCB Orders: The physical area of the PCB that was ordered",
          "type": "string"
        },
        "created": {
          "description": "The date the order was created",
          "type": "string"
        },
        "shipped": {
          "description": "The date the order was shipped",
          "type": "string"
        },
        "shipto": {
          "type": "object",
          "properties": {
            "name": { "type": "string"},
            "company": { "type": "string" },
            "street": { "type": "string", "description": "Street Address"},
            "street_2": { "type": "string"},
            "city": { "type": "string"},
            "state": { "type": "string"},
            "postcode": { "type": "string"},
            "country": { "type": "string", "description": "2-Letter ISO Code for Country"},
            "phone": { "type": "string"}
          }
        }
      }
    }
  }
}

HTTP status code 400

Body

Type: application/json

Schema:


  {

    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "error": {
        "type": "object",
        "properties": {
          "code": {
            "description": "A unique error code",
            "type": "text"
          },
          "text": {
            "type": "array",
            "description": "List of error detail strings",
            "minItems": 0,
            "items": { "type": "string"}
          }
        }
      }
    }
  }

HTTP status code 404


get

Get shipping quotes for the specified PCB order


URI Parameters

  • order_id: required (string)

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "shipping_quote": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "carrier": {
            "description": "The shipping carrier",
            "type": "string"
          },
          "service": {
            "description": "The shipping service",
            "type": "string"
          },
          "service_name": {
            "description": "The shipping service (prettified)",
            "type": "string"
          },
          "rate": {
            "description": "The quoted shipping rate",
            "type": "string"
          }
        }
      ]
    }
  }
}

put

Set shipping method for this order


URI Parameters

  • order_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order_shipping": {
      "type": "object",
      "properties": {
        "carrier": {
          "description": "The selected shipping carrier",
          "type": "string"
        },
        "service": {
          "description": "The selected shipping service",
          "type": "string"
        },
        "service_name": {
          "description": "The prettified selected shipping service",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order_shipping": {
      "type": "object",
      "properties": {
        "order_shipmentid": {
          "description": "A unique identifier for the order shipment",
          "type": "string"
        },
        "carrier": {
          "description": "The selected shipping carrier",
          "type": "string"
        },
        "service": {
          "description": "The selected shipping service",
          "type": "string"
        },
        "service_name": {
          "description": "The prettified selected shipping service",
          "type": "string"
        },
        "quoted_cost": {
          "description": "The quoted cost for shipping",
          "type": "string"
        }
      }
    }
  }
}

put

Apply a payment to this order

Any amount, up to the full order amount, can be applied in each call. The order will not be shipped until payments totalling the full invoice amount have been applied.


URI Parameters

  • order_id: required (string)

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "order_payment": {
      "type": "object",
      "properties": {
        "payment_token_id": {
          "description": "The payment token to use for the order",
          "type": "string"
        },
        "amount": {
          "description": "The amount to pay against the order using this payment token",
          "type": "string"
        }
      }
    }
  }
}

HTTP status code 204


post

Cancel the specified order

An order can only be canceled while it is in the 'quote' status. Once the order has been paid, the order cannot be canceled without contacting MacroFab support.


URI Parameters

  • order_id: required (string)

HTTP status code 204


List payment tokens

get

Get a list of available payment tokens


Body

Type: text/plain

HTTP status code 200

Body

Type: application/json

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "payment_tokens": {
      "type": "array",
      "minItems": 0,
      "items": [
        {
          "payment_tokenid": { "type": "string"},
          "identifier": { "type": "string"}
        }
      ]
    }
  }
}