openapi: 3.2.0
info:
title: Leaflink Batches API
contact:
email: support@leaflink.com
version: '1.0'
description: 'Operations tagged batches across 2 of this provider''s published API definitions: leaflink-api-openapi-original.yml, leaflink-marketplace-v2-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.leaflink.com
description: LeafLink API production URL.
- url: https://staging-api.leaflink.com
description: LeafLink API staging URL.
- url: https://app.leaflink.com/api/v2
tags:
- name: batches
paths:
/batches/{id}:
patch:
operationId: batches_partial_update
description: LeafLink Unified API for Batches.
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this batch v2.
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- batches
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedUnifiedBatchRequest'
security:
- bearerAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedBatch'
description: ''
headers:
RateLimit-Limit:
schema:
type: integer
description: The requests quota in the time window.
RateLimit-Remaining:
schema:
type: integer
description: The remaining requests quota in the current window.
RateLimit-Reset:
schema:
type: integer
description: The time remaining in the current window, specified in seconds.
RateLimit-Policy:
schema:
type: string
description: The quota policy information.
'429':
description: Rate Limit Error
headers:
Retry-After:
schema:
type: integer
description: The time remaining before the rejected request can be tried again, specified in seconds.
delete:
operationId: batches_destroy
description: LeafLink Unified API for Batches.
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this batch v2.
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- batches
security:
- bearerAuth: []
responses:
'204':
description: No response body
headers:
RateLimit-Limit:
schema:
type: integer
description: The requests quota in the time window.
RateLimit-Remaining:
schema:
type: integer
description: The remaining requests quota in the current window.
RateLimit-Reset:
schema:
type: integer
description: The time remaining in the current window, specified in seconds.
RateLimit-Policy:
schema:
type: string
description: The quota policy information.
'429':
description: Rate Limit Error
headers:
Retry-After:
schema:
type: integer
description: The time remaining before the rejected request can be tried again, specified in seconds.
servers:
- url: https://api.leaflink.com
description: LeafLink API production URL.
- url: https://staging-api.leaflink.com
description: LeafLink API staging URL.
/batches/:
parameters: []
get:
operationId: batches_list
summary: List batches
description: List all batches.
For legacy auth, retrieved per company with the owner query parameter or with the following path parameter, /companies/{company_id}/batches/
parameters:
- name: batch_date__lt
in: query
description: Filter by batch_date__lt
required: false
schema:
type: string
- name: batch_date__lte
in: query
description: Filter by batch_date__lte
required: false
schema:
type: string
- name: batch_date__gt
in: query
description: Filter by batch_date__gt
required: false
schema:
type: string
- name: batch_date__gte
in: query
description: Filter by batch_date__gte
required: false
schema:
type: string
- name: id
in: query
description: Filter by one or multiple batch ids, separated by commas.
required: false
schema:
type: number
- name: owner
in: query
description: Filter by one or multiple company ids, separated by commas.
required: false
schema:
type: number
- name: company_slug
in: query
description: Filter by owner company slug.
required: false
schema:
type: string
- name: production_batch_number
in: query
description: Filter by one or multiple production_batch_numbers, separated by commas.
required: false
schema:
type: string
- name: products
in: query
description: Filter by one or multiple product ids, separated by commas.
required: false
schema:
type: number
- name: thc
in: query
description: Filter by a range of THC percent.
required: false
schema:
type: string
- name: thca
in: query
description: Filter by a range of THCa percent.
required: false
schema:
type: string
- name: total_thc
in: query
description: Filter by a range of total THC percent.
required: false
schema:
type: string
- name: cbd
in: query
description: Filter by a range of CBD percent.
required: false
schema:
type: string
- name: cbda
in: query
description: Filter by a range of CBDa percent.
required: false
schema:
type: string
- name: cbg
in: query
description: Filter by a range of CBG percent.
required: false
schema:
type: string
- name: cbn
in: query
description: Filter by a range of CBN percent.
required: false
schema:
type: string
- name: total_cannabinoids
in: query
description: Filter by a range of total cannabinoids percent.
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return per page.
required: false
schema:
type: integer
- name: offset
in: query
description: The initial index from which to return the results.
required: false
schema:
type: integer
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/BatchResponse'
tags:
- batches
security:
- Token: []
post:
operationId: batches_create
summary: Create a batch
description: Create a new batch.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchCreate'
required: true
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BatchResponse'
tags:
- batches
security:
- Token: []
servers:
- url: https://app.leaflink.com/api/v2
/batches/{id}/:
parameters:
- name: id
description: The id for the batch.
in: path
required: true
schema:
type: string
get:
operationId: batches__read
summary: Retrieve a batch
description: Retrieve an individual batch.
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BatchResponse'
tags:
- batches
security:
- Token: []
patch:
operationId: batches__partial_update
summary: Update a batch
description: Update an existing batch.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchUpdate'
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BatchResponse'
tags:
- batches
security:
- Token: []
delete:
operationId: batches__delete
summary: Delete a batch
description: Delete a batch.
responses:
'204':
description: ''
tags:
- batches
security:
- Token: []
servers:
- url: https://app.leaflink.com/api/v2
components:
schemas:
Terpene:
type: object
description: Serializer for Terpene (nested in Batch)
properties:
name:
type: string
percentage:
type: string
format: decimal
pattern: ^-?\d{0,4}(?:\.\d{0,2})?$
required:
- name
- percentage
TerpeneRequest:
type: object
description: Serializer for Terpene (nested in Batch)
properties:
name:
type: string
minLength: 1
percentage:
type: string
format: decimal
pattern: ^-?\d{0,4}(?:\.\d{0,2})?$
required:
- name
- percentage
PatchedUnifiedBatchRequest:
type: object
description: Serializer for Batch - read/response only.
properties:
supplier:
type:
- string
- 'null'
maxLength: 100
harvest_date:
type:
- string
- 'null'
format: date
expiration_date:
type:
- string
- 'null'
format: date
sku:
type:
- string
- 'null'
maxLength: 100
status:
type: string
minLength: 1
maxLength: 20
append_thc:
type: boolean
default: false
terpenes:
type: array
items:
$ref: '#/components/schemas/TerpeneRequest'
is_assigned:
type: boolean
default: false
unit_of_measure:
type:
- string
- 'null'
maxLength: 32
lab_test_unit_of_measure:
type:
- string
- 'null'
maxLength: 32
item_name:
type:
- string
- 'null'
item_category:
type:
- string
- 'null'
total_thc:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,16}(?:\.\d{0,4})?$
result_cbd:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,16}(?:\.\d{0,4})?$
lab_result_file_id:
type:
- integer
- 'null'
UnifiedBatch:
type: object
description: Serializer for Batch - read/response only.
properties:
id:
type:
- integer
- 'null'
readOnly: true
company_id:
type: integer
readOnly: true
number:
type: string
readOnly: true
maxLength: 100
source:
type: string
readOnly: true
maxLength: 100
source_type:
type: string
readOnly: true
maxLength: 32
supplier:
type:
- string
- 'null'
maxLength: 100
harvest_date:
type:
- string
- 'null'
format: date
expiration_date:
type:
- string
- 'null'
format: date
sku:
type:
- string
- 'null'
maxLength: 100
status:
type: string
maxLength: 20
append_thc:
type: boolean
default: false
terpenes:
type: array
items:
$ref: '#/components/schemas/Terpene'
is_assigned:
type: boolean
default: false
created_on:
type: string
format: date-time
readOnly: true
modified:
type: string
format: date-time
readOnly: true
unit_of_measure:
type:
- string
- 'null'
maxLength: 32
lab_test_unit_of_measure:
type:
- string
- 'null'
maxLength: 32
item_name:
type:
- string
- 'null'
item_category:
type:
- string
- 'null'
total_thc:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,16}(?:\.\d{0,4})?$
result_cbd:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,16}(?:\.\d{0,4})?$
lab_result_file_id:
type:
- integer
- 'null'
display_sku:
type: string
readOnly: true
required:
- company_id
- created_on
- display_sku
- id
- modified
- number
- source
- source_type
- status
BatchUpdate:
type: object
properties:
production_batch_number:
type: string
maxLength: 50
batch_date:
type: string
format: date
thc:
type: string
format: decimal
thca:
type: string
format: decimal
total_thc:
type: string
format: decimal
cbd:
type: string
format: decimal
cbda:
type: string
format: decimal
cbg:
type: string
format: decimal
cbn:
type: string
format: decimal
total_cannabinoids:
type: string
format: decimal
cannabinoid_unit:
type: string
description: Unit for the test results. Acceptable values include `%`, `MG/ML`, `MG/G`
BatchCreate:
required:
- owner
- production_batch_number
- batch_date
- testing_source
type: object
properties:
owner:
description: id for the company
type: string
production_batch_number:
type: string
maxLength: 50
batch_date:
type: string
format: date
thc:
type: string
format: decimal
thca:
type: string
format: decimal
total_thc:
type: string
format: decimal
cbd:
type: string
format: decimal
cbda:
type: string
format: decimal
cbg:
type:
- string
- 'null'
format: decimal
cbn:
type: string
format: decimal
total_cannabinoids:
type: string
format: decimal
cannabinoid_unit:
type: string
description: Unit for the test results. Acceptable values include `%`, `MG/ML`, `MG/G`
testing_source:
type: string
description: Name of the source system for the test results
BatchResponse:
type: object
properties:
id:
type: integer
description: Unique id generated by LeafLink.
owner:
description: Id for the company
type: string
production_batch_number:
type: string
batch_date:
type: string
format: date
thc:
type: string
format: decimal
thca:
type: string
format: decimal
total_thc:
type: string
format: decimal
cbd:
type: string
format: decimal
cbda:
type: string
format: decimal
cbg:
type: string
format: decimal
cbn:
type: string
format: decimal
total_cannabinoids:
type: string
format: decimal
documents:
type: array
items:
type: object
properties:
id:
type: integer
description: Unique id generated by LeafLink.
created_on:
type: string
format: date-time
description: Date and time the document was uploaded.
modified:
type: string
format: date-time
description: Date and time the document was last modified.
summary:
type: string
document:
description: uri for the document
type: string
format: uri
cannabinoid_unit:
type: string
description: Unit for the test results. Acceptable values include `%`, `MG/ML`, `MG/G`
testing_source:
type: string
description: Name of the source system for the test results
is_from_api:
type: boolean
description: Describes whether this batch was created via an external system
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Authentication is done via access tokens (JWTs). See the [API authentication doc](/api/getting-started/#authentication) for more information.
'
tokenAuth:
type: apiKey
in: header
name: Authorization
description: Token-based authentication with required prefix "Token"
Token:
description: 'You must authenticate your requests by including your API key in each request header as described below.
Requests should include a header named `Authorization`, with the value `App {MY_API_KEY}`. Note the single space in the header value.
Example: `Authorization: App MY_API_KEY`
[Learn more about generating your key](https://developer.leaflink.com/brands/api/getting-started/)
**Legacy API keys:** If you are not using an Application API key, your authorization header should include the string `Token` and access will be scoped to all companies under which the user exists as a companystaff.
Example: `Authorization: Token MY_API_KEY`
'
in: header
name: Authorization
type: apiKey
x-refined-from:
- leaflink-api-openapi-original.yml
- leaflink-marketplace-v2-openapi-original.yml