# PCB

PCB-related endpoints and resources.

## Find a PCB using an order ID

 - [GET /ems/pcb/pcbs](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs/get.md): Find a PCB using the orderID that was specified during its creation.

## Create a new PCB

 - [POST /ems/pcb/pcbs](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs/post.md): This endpoint facilitates the creation of a new PCB project.

The request payload does not take any files, but they can be
once the record is created.

It is possible to use the API without providing any project
files. This means analysis and value extraction will not be
available.

If this PCB belongs to a RfQ and should be linked together, then
the externalReference and orderId fields should be filled
and the RfQ should be updated with the PCB's UUID.

The creation of a PCB involves the creation of a specification
that can be used to override the default values of the PCB.

## Get All Capabilities

 - [GET /ems/pcb/capabilities](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1capabilities/get.md): Returns all the available PCB properties and the values available
for each of them, as well as the default value.

Some capabilities depend on the values of other capabilities,
which means the list of available values is not complete unless
the pcb-specific endpoint is used.

## Get a Shared PCB

 - [GET /ems/pcb/shares/{share}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1shares~1%7Bshare%7D/get.md): Find a Shared PCB by its UUID.

## Get the Shared PCB Files as zip

 - [GET /ems/pcb/shares/{share}/files/all](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1shares~1%7Bshare%7D~1files~1all/get.md): Downloads PCB files of a shared PCB as a zip folder

## Get a PCB

 - [GET /ems/pcb/pcbs/{pcb}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D/get.md): Find a PCB by its UUID.

## Update a PCB

 - [PUT /ems/pcb/pcbs/{pcb}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D/put.md): Updates some of the PCB properties that were set during creation.

## Delete a PCB

 - [DELETE /ems/pcb/pcbs/{pcb}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D/delete.md): Find and delete a PCB by its UUID.

## Clone an existing PCB

 - [POST /ems/pcb/pcbs/{pcb}/clone](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1clone/post.md): Clone an existing PCB.

This clones the PCB, analysis results, specifications and
files associated.

This operation returns an error if the PCB's analysis is
in progress.

## Get the PCB Files as zip

 - [GET /ems/pcb/pcbs/{pcb}/files/all](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1files~1all/get.md): Downloads PCB files as a zip folder

## Get a PCB File

 - [GET /ems/pcb/pcbs/{pcb}/files/singular/{file}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1files~1singular~1%7Bfile%7D/get.md): Downloads PCB file by name, if it exists.

## Get all PCB Specifications

 - [GET /ems/pcb/pcbs/{pcb}/specifications](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications/get.md): Get all PCB specificationss

## Create a new PCB Specification

 - [PUT /ems/pcb/pcbs/{pcb}/specifications](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications/put.md): Create anew PCB specifications

## Get a PCB Specification

 - [GET /ems/pcb/pcbs/{pcb}/specifications/{specification}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications~1%7Bspecification%7D/get.md): Find PCB specification by name or UUID

## Update a PCB Specification

 - [PUT /ems/pcb/pcbs/{pcb}/specifications/{specification}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications~1%7Bspecification%7D/put.md): Update a PCB Specifications

## Delete a PCB Specification

 - [DELETE /ems/pcb/pcbs/{pcb}/specifications/{specification}](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications~1%7Bspecification%7D/delete.md): Delete a PCB Specifications

## Get a PCB Specification Preview

 - [GET /ems/pcb/pcbs/{pcb}/specifications/{specification}/previews](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1specifications~1%7Bspecification%7D~1previews/get.md): Find PCB specification by name or UUID

## Get All Capabilities respecting the currently set values of the specification

 - [GET /ems/pcb/pcbs/{pcb}/capabilities](https://docs.luminovo.com/specs/bundled/pcb/paths/~1ems~1pcb~1pcbs~1%7Bpcb%7D~1capabilities/get.md): Returns all the available PCB properties and the values available
for each of them, as well as the default value.

Some capabilities depend on the values of other capabilities,
which means the values for certain capabilities change based on
the PCB specification.

An example of this behaviour is the inner copper thickness, which
requires the PCB to have at least 4 layers.

## Upload Files to the PCB

 - [POST /files/ems/pcb/pcbs/:pcb/files](https://docs.luminovo.com/specs/bundled/pcb/paths/~1files~1ems~1pcb~1pcbs~1:pcb~1files/post.md)

