> ## Documentation Index
> Fetch the complete documentation index at: https://docs.serial.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Push test data to the cloud in 3 minutes or less!

## Installation

Clone the repository from GitHub or install via pip:

```
git clone https://https://github.com/serialmfg/serial-py.git
```

or

```
pip install serialmfg
```

## Setup

1. Get an API key from [settings page](https://app.serial.io/settings/api)

2. Generate a process ID from process builder in the serial web app:
   ![Generate Station Id](https://db.serial.io/storage/v1/object/public/serial-assets-public/generate_process_id.png)

3. Implement python script:

<CodeGroup>
  ```python all data types theme={null}
  import serialmfg as serial

  serial.set_station_id('YOUR_STATION_ID')
  serial.set_api_key('YOUR_API_KEY')

  # ----------- Component Instances ----------- #

  # Creating a component instance
  my_component_instance = serial.ComponentInstances.create(identifier="ABC-1234", component_name="Component Name") 

  # Getting a component instance
  my_component_instance_2 = serial.ComponentInstances.get(identifier="XYZ-5678") 

  # Listing component instances
  defective_components = serial.ComponentInstances.list({"status": "DEFECTIVE"}) 


  # ----------- Process Entries ----------- #

  # Creating a process entry
  my_process_entry = serial.ProcessEntries.create(process_id="process-id", component_instance_identifier="ABC-1234") 

  # Adding text data to a process entry
  my_process_entry.add_text(dataset_name="Foo", value="bar")

  # Adding numerical data to a process entry
  my_process_entry.add_number(dataset_name="Pi Approx", value=3.141, lsl=3.1, usl=3.2)

  # Adding boolean data to a process entry
  my_process_entry.add_boolean(dataset_name="Pass Fail Criteria", value=True, expected_value=True)

  # Adding file data to a process entry
  my_process_entry.add_file(dataset_name="Oven Temperatures", path="/Users/me/Downloads/oven-temp.csv", file_name="oven-temp-todays-date.csv") 

  # Adding image data to a process entry
  my_process_entry.add_image(dataset_name="Cat Pictures", path="/Users/me/Documents/my-cat.png", file_name="jerry.png") 

  # Adding link data to a process entry
  my_process_entry.add_link(dataset_name="Link Child 1", child_identifier="XYZ-5678")

  # Submitting a process entry
  my_process_entry.submit(cycle_time=42, is_pass=False) #Optionally add cycle_time or process result override

  ```

  ```python simplified theme={null}
  import serialmfg as serial

  serial.set_station_id('YOUR_STATION_ID')
  serial.set_api_key('YOUR_API_KEY')

  # Creating a component instance
  my_component_instance = serial.ComponentInstances.create(
      identifier='ABC-1234', 
      component_name='YOUR_COMPONENT_NAME'
  )

  # Creating a process entry
  my_process_entry = serial.ProcessEntries.create(
      process_id='YOUR_PROCESS_ID', 
      component_instance_identifier='ABC-1234'
  )

  # Adding text data to a process entry
  my_process_entry.add_text(dataset_name="Foo", value="Bar")

  # Adding numerical data to a process entry
  my_process_entry.add_number(dataset_name="Pi Approx", value=3.141, lsl=3.1, usl=3.2)

  # Submitting a process entry
  my_process_entry.submit()

  ```
</CodeGroup>
