> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.one.mtxsci.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.one.mtxsci.com/_mcp/server.

# submission-v1

POST https://%7Bsubmission%7D
Content-Type: application/json

## Create a submission — draft

Create one submission containing individual samples and optional composites. Each composite has its own fields and tests and refers to individual samples by their client references.

**Request:** `POST {{baseUrl}}/{{submission}}`\
**Proposed success:** `201 Created`\
**Headers:** `Content-Type: application/json` and `Accept: application/json`\
**Query:** `api_token={{api_token}}` is the collection's draft authentication configuration.

### Before you submit

Obtain the lab enum and applicable product, site, and test catalogs for your customer context. The request's lab, customer, division, and catalog values are illustrative selections. Replace them with authorized values before sending.

### Submission fields

| Field                   | Type             | Requirement                | Description                                                                                                              |
| ----------------------- | ---------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `client_submission_ref` | String           | Required                   | Nonempty client correlation reference, echoed unchanged. Does not provide idempotency.                                   |
| `customer`              | String           | Context required, proposed | Customer display name in this draft; resolve within the caller's authorized scope.                                       |
| `division`              | String           | Context required, proposed | Division display name in this draft; resolve within the caller's authorized scope.                                       |
| `requested_by`          | String or null   | Caller-derived, proposed   | `null` proposes deriving the requester from the authenticated caller. Arbitrary caller identities require authorization. |
| `lab`                   | String           | Required, proposed         | Exact value from the lab enum supplied to the customer.                                                                  |
| `po_number`             | String or null   | Optional                   | Purchase order reference; preserve leading zeros.                                                                        |
| `submission_type`       | String           | Required                   | Exactly `Product` or `Environmental`.                                                                                    |
| `additional_info`       | String or null   | Optional                   | Submission-level information.                                                                                            |
| `special_instructions`  | String or null   | Optional                   | Submission-level instructions.                                                                                           |
| `samples`               | Array of objects | At least one, proposed     | Individual samples, declared once each.                                                                                  |
| `composites`            | Array of objects | Optional, proposed         | Composite definitions; omit or supply an empty array when none are needed.                                               |

### Sample and composite fields

These fields apply to each object in both `samples` and `composites`. Composite values are independent of the values on their members.

| Field                | Type             | Requirement                                   | Description                                                                                |
| -------------------- | ---------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `client_sample_ref`  | String           | Required                                      | Nonempty reference, unique across both arrays within this submission.                      |
| `description`        | String or null   | Unconfirmed                                   | Description of this individual sample or composite.                                        |
| `product_id`         | String           | Required for samples; proposed for composites | Product ID from the applicable product catalog.                                            |
| `product_desc`       | String or null   | Unconfirmed                                   | Product description. Read responses use `product_description` instead.                     |
| `lot`                | String or null   | Unconfirmed                                   | Lot reference, preserved as text.                                                          |
| `collection_date`    | String or null   | Unconfirmed                                   | Date in `YYYY-MM-DD` format, without an inferred timezone.                                 |
| `request_number`     | String or null   | Unconfirmed                                   | Client request reference, distinct from a generated submission identifier.                 |
| `site_id`            | String or null   | Optional                                      | Site catalog **ID**, not its name. Preserve numeric-looking IDs as strings, such as `"4"`. |
| `emp_zone`           | Integer or null  | Optional                                      | EMP zone; allowed integers are unconfirmed. Omit or use `null` when blank.                 |
| `tests`              | Array of objects | Minimum count unconfirmed                     | Tests for this row's material. Each entry uses `test_code`.                                |
| `tests[].test_code`  | String           | Required per test, proposed                   | Exact test catalog **Code**, such as `LSP-VID-ENV`, rather than its description.           |
| `client_sample_refs` | Array of strings | Required for composites, proposed             | Composite-only membership list, referencing `samples[].client_sample_ref`.                 |

Optional nullable fields may be omitted or sent as `null` under this draft. A nullable example does not settle whether a field marked unconfirmed may be omitted.

### Environmental site and zone behavior

`site_id` and `emp_zone` are optional for both submission types. For an `Environmental` row with a supplied `site_id` and omitted or null `emp_zone`, the application looks up the zone from that site's existing information. A composite uses its own site; its zone is not inferred from its members. Neither field becomes required when no site is supplied.

### Composite membership and tests

* Declare each individual sample once in `samples`.

* Each composite has its own unique `client_sample_ref` and a nonempty `client_sample_refs` membership list under the proposed validation rules.

* Members must reference individual samples in this request. Missing references, self references, composite references, and duplicate members within one composite are rejected by the proposed rules.

* A sample may belong to several composites. The saved request has `C1` referencing `S1`–`S4`, and `C2` referencing `S1` and `S2`.

* Composite tests apply to the combined material independently of tests on individual samples and other composites. Do not copy them onto constituents.

* The minimum physical constituent count beyond one, repeat-test rules, and valid composite/test combinations remain unconfirmed.

### Ordering and correlation

Individual samples are created in their array order before composites are created, so membership references can resolve. The application then places composites first and renumbers all rows while preserving the relative order within each array.

The saved request therefore produces the intended final order:

| Final line | Client reference | Row type          |
| ---------- | ---------------- | ----------------- |
| 1          | `C1`             | Composite         |
| 2          | `C2`             | Composite         |
| 3          | `S1`             | Individual sample |
| 4          | `S2`             | Individual sample |
| 5          | `S3`             | Individual sample |
| 6          | `S4`             | Individual sample |

Without composites, sample line numbers start at `1`. The intended `201` response is returned only after all rows, memberships, and application renumbering are complete; its line numbers must match stored and displayed order. Later edits can change line numbers, so correlate using client references and permanent row identifiers.

### Success response — 201 Created

| Field                            | Type             | Description                                                                                                                 |
| -------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `client_submission_ref`          | String           | Exact echo of the request's correlation reference.                                                                          |
| `submission_id`                  | String           | Server-generated parent identifier. Its relationship to the displayed Sample Request ID is unconfirmed.                     |
| `submitted_at`                   | String           | Required, non-null submission time in ISO 8601 UTC format: `YYYY-MM-DDTHH:mm:ssZ`. Top-level and response-only.             |
| `samples`                        | Array of objects | Every created composite and individual sample exactly once, in final line-number order.                                     |
| `samples[].client_sample_ref`    | String           | Exact echo of the row's client reference.                                                                                   |
| `samples[].sample_submission_id` | String           | Permanent generated row identifier, distinct from downstream `sample_id`. Composite record creation remains to be verified. |
| `samples[].line_number`          | Integer          | Final consecutive application position, starting at `1`.                                                                    |

Open the attached `201 Created` example for the full mapping of four samples and two composites. Shared members appear only once in the response and do not result in multiple samples created in the application, regardless of how many composites reference them.

### Validation and retry considerations

`rush` is unsupported in v1. Do not send server-generated IDs, `line_number`, or `submitted_at` in the request. Catalog selections must be validated in the applicable customer, division, and lab context.

Reference: https://docs.one.mtxsci.com/ms-cp-customer-api/submission-v-1

## Request

### Query parameters

- `api_token` (string, optional)

### Body (application/json)

This endpoint expects an object.

- `client_submission_ref` (string, required)
- `customer` (string, required)
- `division` (string, required)
- `lab` (string, required)
- `submission_type` (string, required)
- `samples` (list of 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaSamplesItems, required)
- `composites` (list of 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaCompositesItems, required)
- `requested_by` (any, optional)
- `po_number` (any, optional)
- `additional_info` (any, optional)
- `special_instructions` (any, optional)

## Response

### 201

Created

- `client_submission_ref` (string, required)
- `submission_id` (string, required)
- `submitted_at` (datetime, required)
- `samples` (list of 7Bsubmission7DPostResponsesContentApplicationJsonSchemaSamplesItems, required)

## Types

### 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaSamplesItems

- `client_sample_ref` (string, required)
- `description` (string, required)
- `product_id` (string, required)
- `product_desc` (string, required)
- `lot` (string, required)
- `collection_date` (date, required)
- `site_id` (string, required)
- `tests` (list of 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaSamplesItemsTestsItems, required)
- `request_number` (any, optional)
- `emp_zone` (any, optional)

### 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaCompositesItems

- `client_sample_ref` (string, required)
- `description` (string, required)
- `product_id` (string, required)
- `client_sample_refs` (list of string, required)
- `tests` (list of 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaCompositesItemsTestsItems, required)
- `product_desc` (any, optional)
- `lot` (any, optional)
- `collection_date` (any, optional)
- `request_number` (any, optional)
- `site_id` (any, optional)
- `emp_zone` (any, optional)

### 7Bsubmission7DPostResponsesContentApplicationJsonSchemaSamplesItems

- `client_sample_ref` (string, required)
- `line_number` (integer, required)
- `sample_submission_id` (string, required)

### 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaSamplesItemsTestsItems

- `test_code` (string, required)

### 7Bsubmission7DPostRequestBodyContentApplicationJsonSchemaCompositesItemsTestsItems

- `test_code` (string, required)

## Examples

**Request**

```json
{
  "client_submission_ref": "CUSTOMER-REQ-1001",
  "customer": "MATRIX SCIENCES",
  "division": "CHICAGO",
  "lab": "Green Bay, WI",
  "submission_type": "Environmental",
  "samples": [
    {
      "client_sample_ref": "S1",
      "description": "Crimp/Cut",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "1",
      "collection_date": "2026-07-27",
      "site_id": "3A62",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S2",
      "description": "Flow Wrapper Control Panel",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "2",
      "collection_date": "2026-07-27",
      "site_id": "3B71",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S3",
      "description": "Flow Wrapper",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "3",
      "collection_date": "2026-07-27",
      "site_id": "3A70",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S4",
      "description": "Where Line 4 filling station will be, next to waste conveyor",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "4",
      "collection_date": "2026-07-27",
      "site_id": "4",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    }
  ],
  "composites": [
    {
      "client_sample_ref": "C1",
      "description": "Composite of samples S1–S4",
      "product_id": "ENV",
      "client_sample_refs": [
        "S1",
        "S2",
        "S3",
        "S4"
      ],
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "C2",
      "description": "Additional composite of samples S1 and S2",
      "product_id": "ENV",
      "client_sample_refs": [
        "S1",
        "S2"
      ],
      "tests": [
        {
          "test_code": "SLM-VID-ENV"
        }
      ],
      "product_desc": null,
      "collection_date": null
    }
  ]
}
```

**Response**

```json
{
  "client_submission_ref": "CUSTOMER-REQ-1001",
  "submission_id": "example_submission_001",
  "submitted_at": "2026-09-30T17:00:00Z",
  "samples": [
    {
      "client_sample_ref": "C1",
      "line_number": 1,
      "sample_submission_id": "example_sample_submission_001"
    },
    {
      "client_sample_ref": "C2",
      "line_number": 2,
      "sample_submission_id": "example_sample_submission_002"
    },
    {
      "client_sample_ref": "S1",
      "line_number": 3,
      "sample_submission_id": "example_sample_submission_003"
    },
    {
      "client_sample_ref": "S2",
      "line_number": 4,
      "sample_submission_id": "example_sample_submission_004"
    },
    {
      "client_sample_ref": "S3",
      "line_number": 5,
      "sample_submission_id": "example_sample_submission_005"
    },
    {
      "client_sample_ref": "S4",
      "line_number": 6,
      "sample_submission_id": "example_sample_submission_006"
    }
  ]
}
```

**SDK Code**

```python submission-v1_example
import requests

url = "https://https/%7Bsubmission%7D"

querystring = {"api_token":"{{api_token}}"}

payload = {
    "client_submission_ref": "CUSTOMER-REQ-1001",
    "customer": "MATRIX SCIENCES",
    "division": "CHICAGO",
    "lab": "Green Bay, WI",
    "submission_type": "Environmental",
    "samples": [
        {
            "client_sample_ref": "S1",
            "description": "Crimp/Cut",
            "product_id": "ENV",
            "product_desc": "packaging",
            "lot": "1",
            "collection_date": "2026-07-27",
            "site_id": "3A62",
            "tests": [{ "test_code": "LSP-VID-ENV" }, { "test_code": "SLM-VID-ENV" }]
        },
        {
            "client_sample_ref": "S2",
            "description": "Flow Wrapper Control Panel",
            "product_id": "ENV",
            "product_desc": "packaging",
            "lot": "2",
            "collection_date": "2026-07-27",
            "site_id": "3B71",
            "tests": [{ "test_code": "LSP-VID-ENV" }, { "test_code": "SLM-VID-ENV" }]
        },
        {
            "client_sample_ref": "S3",
            "description": "Flow Wrapper",
            "product_id": "ENV",
            "product_desc": "production",
            "lot": "3",
            "collection_date": "2026-07-27",
            "site_id": "3A70",
            "tests": [{ "test_code": "LSP-VID-ENV" }, { "test_code": "SLM-VID-ENV" }]
        },
        {
            "client_sample_ref": "S4",
            "description": "Where Line 4 filling station will be, next to waste conveyor",
            "product_id": "ENV",
            "product_desc": "production",
            "lot": "4",
            "collection_date": "2026-07-27",
            "site_id": "4",
            "tests": [{ "test_code": "LSP-VID-ENV" }, { "test_code": "SLM-VID-ENV" }]
        }
    ],
    "composites": [
        {
            "client_sample_ref": "C1",
            "description": "Composite of samples S1–S4",
            "product_id": "ENV",
            "client_sample_refs": ["S1", "S2", "S3", "S4"],
            "tests": [{ "test_code": "LSP-VID-ENV" }]
        },
        {
            "client_sample_ref": "C2",
            "description": "Additional composite of samples S1 and S2",
            "product_id": "ENV",
            "client_sample_refs": ["S1", "S2"],
            "tests": [{ "test_code": "SLM-VID-ENV" }],
            "product_desc": None,
            "collection_date": None
        }
    ]
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript submission-v1_example
const url = 'https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"client_submission_ref":"CUSTOMER-REQ-1001","customer":"MATRIX SCIENCES","division":"CHICAGO","lab":"Green Bay, WI","submission_type":"Environmental","samples":[{"client_sample_ref":"S1","description":"Crimp/Cut","product_id":"ENV","product_desc":"packaging","lot":"1","collection_date":"2026-07-27","site_id":"3A62","tests":[{"test_code":"LSP-VID-ENV"},{"test_code":"SLM-VID-ENV"}]},{"client_sample_ref":"S2","description":"Flow Wrapper Control Panel","product_id":"ENV","product_desc":"packaging","lot":"2","collection_date":"2026-07-27","site_id":"3B71","tests":[{"test_code":"LSP-VID-ENV"},{"test_code":"SLM-VID-ENV"}]},{"client_sample_ref":"S3","description":"Flow Wrapper","product_id":"ENV","product_desc":"production","lot":"3","collection_date":"2026-07-27","site_id":"3A70","tests":[{"test_code":"LSP-VID-ENV"},{"test_code":"SLM-VID-ENV"}]},{"client_sample_ref":"S4","description":"Where Line 4 filling station will be, next to waste conveyor","product_id":"ENV","product_desc":"production","lot":"4","collection_date":"2026-07-27","site_id":"4","tests":[{"test_code":"LSP-VID-ENV"},{"test_code":"SLM-VID-ENV"}]}],"composites":[{"client_sample_ref":"C1","description":"Composite of samples S1–S4","product_id":"ENV","client_sample_refs":["S1","S2","S3","S4"],"tests":[{"test_code":"LSP-VID-ENV"}]},{"client_sample_ref":"C2","description":"Additional composite of samples S1 and S2","product_id":"ENV","client_sample_refs":["S1","S2"],"tests":[{"test_code":"SLM-VID-ENV"}],"product_desc":null,"collection_date":null}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go submission-v1_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D"

	payload := strings.NewReader("{\n  \"client_submission_ref\": \"CUSTOMER-REQ-1001\",\n  \"customer\": \"MATRIX SCIENCES\",\n  \"division\": \"CHICAGO\",\n  \"lab\": \"Green Bay, WI\",\n  \"submission_type\": \"Environmental\",\n  \"samples\": [\n    {\n      \"client_sample_ref\": \"S1\",\n      \"description\": \"Crimp/Cut\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"1\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A62\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S2\",\n      \"description\": \"Flow Wrapper Control Panel\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"2\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3B71\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S3\",\n      \"description\": \"Flow Wrapper\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"3\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A70\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S4\",\n      \"description\": \"Where Line 4 filling station will be, next to waste conveyor\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"4\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"4\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    }\n  ],\n  \"composites\": [\n    {\n      \"client_sample_ref\": \"C1\",\n      \"description\": \"Composite of samples S1–S4\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\",\n        \"S3\",\n        \"S4\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"C2\",\n      \"description\": \"Additional composite of samples S1 and S2\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ],\n      \"product_desc\": null,\n      \"collection_date\": null\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby submission-v1_example
require 'uri'
require 'net/http'

url = URI("https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"client_submission_ref\": \"CUSTOMER-REQ-1001\",\n  \"customer\": \"MATRIX SCIENCES\",\n  \"division\": \"CHICAGO\",\n  \"lab\": \"Green Bay, WI\",\n  \"submission_type\": \"Environmental\",\n  \"samples\": [\n    {\n      \"client_sample_ref\": \"S1\",\n      \"description\": \"Crimp/Cut\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"1\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A62\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S2\",\n      \"description\": \"Flow Wrapper Control Panel\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"2\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3B71\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S3\",\n      \"description\": \"Flow Wrapper\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"3\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A70\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S4\",\n      \"description\": \"Where Line 4 filling station will be, next to waste conveyor\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"4\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"4\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    }\n  ],\n  \"composites\": [\n    {\n      \"client_sample_ref\": \"C1\",\n      \"description\": \"Composite of samples S1–S4\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\",\n        \"S3\",\n        \"S4\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"C2\",\n      \"description\": \"Additional composite of samples S1 and S2\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ],\n      \"product_desc\": null,\n      \"collection_date\": null\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java submission-v1_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D")
  .header("Content-Type", "application/json")
  .body("{\n  \"client_submission_ref\": \"CUSTOMER-REQ-1001\",\n  \"customer\": \"MATRIX SCIENCES\",\n  \"division\": \"CHICAGO\",\n  \"lab\": \"Green Bay, WI\",\n  \"submission_type\": \"Environmental\",\n  \"samples\": [\n    {\n      \"client_sample_ref\": \"S1\",\n      \"description\": \"Crimp/Cut\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"1\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A62\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S2\",\n      \"description\": \"Flow Wrapper Control Panel\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"2\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3B71\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S3\",\n      \"description\": \"Flow Wrapper\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"3\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A70\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S4\",\n      \"description\": \"Where Line 4 filling station will be, next to waste conveyor\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"4\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"4\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    }\n  ],\n  \"composites\": [\n    {\n      \"client_sample_ref\": \"C1\",\n      \"description\": \"Composite of samples S1–S4\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\",\n        \"S3\",\n        \"S4\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"C2\",\n      \"description\": \"Additional composite of samples S1 and S2\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ],\n      \"product_desc\": null,\n      \"collection_date\": null\n    }\n  ]\n}")
  .asString();
```

```php submission-v1_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D', [
  'body' => '{
  "client_submission_ref": "CUSTOMER-REQ-1001",
  "customer": "MATRIX SCIENCES",
  "division": "CHICAGO",
  "lab": "Green Bay, WI",
  "submission_type": "Environmental",
  "samples": [
    {
      "client_sample_ref": "S1",
      "description": "Crimp/Cut",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "1",
      "collection_date": "2026-07-27",
      "site_id": "3A62",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S2",
      "description": "Flow Wrapper Control Panel",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "2",
      "collection_date": "2026-07-27",
      "site_id": "3B71",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S3",
      "description": "Flow Wrapper",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "3",
      "collection_date": "2026-07-27",
      "site_id": "3A70",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "S4",
      "description": "Where Line 4 filling station will be, next to waste conveyor",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "4",
      "collection_date": "2026-07-27",
      "site_id": "4",
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        },
        {
          "test_code": "SLM-VID-ENV"
        }
      ]
    }
  ],
  "composites": [
    {
      "client_sample_ref": "C1",
      "description": "Composite of samples S1–S4",
      "product_id": "ENV",
      "client_sample_refs": [
        "S1",
        "S2",
        "S3",
        "S4"
      ],
      "tests": [
        {
          "test_code": "LSP-VID-ENV"
        }
      ]
    },
    {
      "client_sample_ref": "C2",
      "description": "Additional composite of samples S1 and S2",
      "product_id": "ENV",
      "client_sample_refs": [
        "S1",
        "S2"
      ],
      "tests": [
        {
          "test_code": "SLM-VID-ENV"
        }
      ],
      "product_desc": null,
      "collection_date": null
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp submission-v1_example
using RestSharp;

var client = new RestClient("https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"client_submission_ref\": \"CUSTOMER-REQ-1001\",\n  \"customer\": \"MATRIX SCIENCES\",\n  \"division\": \"CHICAGO\",\n  \"lab\": \"Green Bay, WI\",\n  \"submission_type\": \"Environmental\",\n  \"samples\": [\n    {\n      \"client_sample_ref\": \"S1\",\n      \"description\": \"Crimp/Cut\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"1\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A62\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S2\",\n      \"description\": \"Flow Wrapper Control Panel\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"packaging\",\n      \"lot\": \"2\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3B71\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S3\",\n      \"description\": \"Flow Wrapper\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"3\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"3A70\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"S4\",\n      \"description\": \"Where Line 4 filling station will be, next to waste conveyor\",\n      \"product_id\": \"ENV\",\n      \"product_desc\": \"production\",\n      \"lot\": \"4\",\n      \"collection_date\": \"2026-07-27\",\n      \"site_id\": \"4\",\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        },\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ]\n    }\n  ],\n  \"composites\": [\n    {\n      \"client_sample_ref\": \"C1\",\n      \"description\": \"Composite of samples S1–S4\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\",\n        \"S3\",\n        \"S4\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"LSP-VID-ENV\"\n        }\n      ]\n    },\n    {\n      \"client_sample_ref\": \"C2\",\n      \"description\": \"Additional composite of samples S1 and S2\",\n      \"product_id\": \"ENV\",\n      \"client_sample_refs\": [\n        \"S1\",\n        \"S2\"\n      ],\n      \"tests\": [\n        {\n          \"test_code\": \"SLM-VID-ENV\"\n        }\n      ],\n      \"product_desc\": null,\n      \"collection_date\": null\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift submission-v1_example
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "client_submission_ref": "CUSTOMER-REQ-1001",
  "customer": "MATRIX SCIENCES",
  "division": "CHICAGO",
  "lab": "Green Bay, WI",
  "submission_type": "Environmental",
  "samples": [
    [
      "client_sample_ref": "S1",
      "description": "Crimp/Cut",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "1",
      "collection_date": "2026-07-27",
      "site_id": "3A62",
      "tests": [["test_code": "LSP-VID-ENV"], ["test_code": "SLM-VID-ENV"]]
    ],
    [
      "client_sample_ref": "S2",
      "description": "Flow Wrapper Control Panel",
      "product_id": "ENV",
      "product_desc": "packaging",
      "lot": "2",
      "collection_date": "2026-07-27",
      "site_id": "3B71",
      "tests": [["test_code": "LSP-VID-ENV"], ["test_code": "SLM-VID-ENV"]]
    ],
    [
      "client_sample_ref": "S3",
      "description": "Flow Wrapper",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "3",
      "collection_date": "2026-07-27",
      "site_id": "3A70",
      "tests": [["test_code": "LSP-VID-ENV"], ["test_code": "SLM-VID-ENV"]]
    ],
    [
      "client_sample_ref": "S4",
      "description": "Where Line 4 filling station will be, next to waste conveyor",
      "product_id": "ENV",
      "product_desc": "production",
      "lot": "4",
      "collection_date": "2026-07-27",
      "site_id": "4",
      "tests": [["test_code": "LSP-VID-ENV"], ["test_code": "SLM-VID-ENV"]]
    ]
  ],
  "composites": [
    [
      "client_sample_ref": "C1",
      "description": "Composite of samples S1–S4",
      "product_id": "ENV",
      "client_sample_refs": ["S1", "S2", "S3", "S4"],
      "tests": [["test_code": "LSP-VID-ENV"]]
    ],
    [
      "client_sample_ref": "C2",
      "description": "Additional composite of samples S1 and S2",
      "product_id": "ENV",
      "client_sample_refs": ["S1", "S2"],
      "tests": [["test_code": "SLM-VID-ENV"]],
      "product_desc": ,
      "collection_date": 
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://https/%7Bsubmission%7D?api_token=%7B%7Bapi_token%7D%7D")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```