Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/leaflink-product-template-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: LeafLink Product Template API
version: '2022-10-31'
description: 'This reference specification outlines all the available HTTP operations of the LeafLink API.
See the [LeafLink Developer Hub](/api) for guides, how-to, and general information of the API.
'
termsOfService: https://www.leaflink.com/terms-and-conditions/
contact:
email: support@leaflink.com
servers:
- url: https://api.leaflink.com
description: LeafLink API production URL.
- url: https://staging-api.leaflink.com
description: LeafLink API staging URL.
security:
- bearerAuth: []
tags:
- name: Product Template
paths:
/product_templates:
get:
operationId: product_templates_list
description: List multiple product templates.
summary: List Product Templates
parameters:
- in: query
name: company_id
schema:
type: integer
required: true
- in: query
name: name
schema:
type: string
- in: query
name: order_by
schema:
type: array
items:
type: string
enum:
- -name
- name
description: Sort by the field
explode: false
style: form
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: search
required: false
in: query
description: A search term.
schema:
type: string
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- Product Template
security:
- bearerAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedUnifiedProductTemplateList'
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.
post:
operationId: product_templates_create
description: Create a new product template.
summary: Create Product Template
parameters:
- in: query
name: company_id
schema:
type: integer
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- Product Template
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedProductTemplateRequest'
required: true
security:
- bearerAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedProductTemplate'
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.
/product_templates/{id}:
get:
operationId: product_templates_retrieve
description: Retrieve a single product template.
summary: Retrieve Product Template
parameters:
- in: query
name: company_id
schema:
type: integer
required: true
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this product template.
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- Product Template
security:
- bearerAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedProductTemplate'
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.
patch:
operationId: product_templates_partial_update
description: Update an existing product template.
summary: Update Product Template
parameters:
- in: query
name: company_id
schema:
type: integer
required: true
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this product template.
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- Product Template
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedUnifiedProductTemplateRequest'
security:
- bearerAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedProductTemplate'
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: product_templates_destroy
description: Delete an existing product template.
summary: Delete Product Template
parameters:
- in: query
name: company_id
schema:
type: integer
required: true
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this product template.
required: true
- name: LeafLink-Version
description: '[API version docs](/api/getting-started/#versioning)'
required: false
in: header
schema:
type: string
format: date
tags:
- Product Template
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.
components:
schemas:
ListingStateEnum:
enum:
- Available
- Archived
- Sample
- Backorder
- Internal
- Unavailable
type: string
ThresholdActionEnum:
enum:
- default
- backorder
- unavailable
- internal
type: string
UnifiedProductTemplate:
type: object
description: 'Base serializer class to rename created_on and modified fields to
follow new naming standard of created_date and modified_date'
properties:
id:
type: integer
readOnly: true
created_date:
type: string
format: date-time
readOnly: true
description: Date and time the resource was created
modified_date:
type: string
format: date-time
readOnly: true
description: Date and time of the last edit
template_name:
type: string
description: Template Name
maxLength: 400
listing_state:
oneOf:
- $ref: '#/components/schemas/ListingStateEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
inventory_management:
title: Product Inventory Management
description: The state that determines how inventory is handled for the Product
oneOf:
- $ref: '#/components/schemas/InventoryManagementEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure
sell_in_unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure that buyers see
sell_in_multiples:
type: boolean
default: false
unit_multiplier:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
description: How many individual units are sold when checking out by Unit of Measure
unit_denomination:
type:
- integer
- 'null'
description: The denomination of unit for the Product.
base_units_per_unit:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,5}(?:\.\d{0,15})?$
description: Number of base units in one unit of this product template
retail_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Manufacturer's Suggested Retail Price (MSRP)
wholesale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Max Wholesale Price
sale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Sale Price
minimum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Minimum Units per Order
maximum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Maximum Units per Order
description:
type:
- string
- 'null'
description: Brand Description
maxLength: 7000
category:
type:
- integer
- 'null'
sub_category:
type:
- integer
- 'null'
description: The sub-category of the Product (e.g. Bulk Flower, Live Resin, etc)
seller:
type: integer
title: Manufacturer
description: Company who is selling the Product
brand:
type:
- integer
- 'null'
description: Brand of product
product_line:
type:
- integer
- 'null'
description: Product Line of product
strain_classification:
oneOf:
- $ref: '#/components/schemas/StrainClassificationEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
license:
type:
- integer
- 'null'
SHOW_QUANTITY:
type:
- boolean
- 'null'
title: Show Product quantity
description: Show Product Quantity
AVAILABLE_FOR_SAMPLES:
type:
- boolean
- 'null'
description: This product is available for samples
threshold_value:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
title: Product threshold value
description: When Product inventory reaches below this value, take various actions
threshold_action:
allOf:
- $ref: '#/components/schemas/ThresholdActionEnum'
title: Product threshold action
description: Action to take when Product inventory reaches below a specified value
is_medical_line_item:
type: boolean
description: Is this a medical line item?
allow_fractional_quantities:
type:
- boolean
- 'null'
description: This product quantity can contain decimal places
extern_income_acct_id:
type:
- string
- 'null'
readOnly: true
title: External Income Account ID
description: The ID number for an external income account
cost:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
readOnly: true
description: Maximum Units per Order
required:
- cost
- created_date
- extern_income_acct_id
- id
- modified_date
- seller
- template_name
UnifiedProductTemplateRequest:
type: object
description: 'Base serializer class to rename created_on and modified fields to
follow new naming standard of created_date and modified_date'
properties:
template_name:
type: string
minLength: 1
description: Template Name
maxLength: 400
listing_state:
oneOf:
- $ref: '#/components/schemas/ListingStateEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
inventory_management:
title: Product Inventory Management
description: The state that determines how inventory is handled for the Product
oneOf:
- $ref: '#/components/schemas/InventoryManagementEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure
sell_in_unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure that buyers see
sell_in_multiples:
type: boolean
default: false
unit_multiplier:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
description: How many individual units are sold when checking out by Unit of Measure
unit_denomination:
type:
- integer
- 'null'
description: The denomination of unit for the Product.
base_units_per_unit:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,5}(?:\.\d{0,15})?$
description: Number of base units in one unit of this product template
retail_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Manufacturer's Suggested Retail Price (MSRP)
wholesale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Max Wholesale Price
sale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Sale Price
minimum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Minimum Units per Order
maximum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Maximum Units per Order
description:
type:
- string
- 'null'
description: Brand Description
maxLength: 7000
category:
type:
- integer
- 'null'
sub_category:
type:
- integer
- 'null'
description: The sub-category of the Product (e.g. Bulk Flower, Live Resin, etc)
seller:
type: integer
title: Manufacturer
description: Company who is selling the Product
brand:
type:
- integer
- 'null'
description: Brand of product
product_line:
type:
- integer
- 'null'
description: Product Line of product
strain_classification:
oneOf:
- $ref: '#/components/schemas/StrainClassificationEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
license:
type:
- integer
- 'null'
SHOW_QUANTITY:
type:
- boolean
- 'null'
title: Show Product quantity
description: Show Product Quantity
AVAILABLE_FOR_SAMPLES:
type:
- boolean
- 'null'
description: This product is available for samples
threshold_value:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
title: Product threshold value
description: When Product inventory reaches below this value, take various actions
threshold_action:
allOf:
- $ref: '#/components/schemas/ThresholdActionEnum'
title: Product threshold action
description: Action to take when Product inventory reaches below a specified value
is_medical_line_item:
type: boolean
description: Is this a medical line item?
allow_fractional_quantities:
type:
- boolean
- 'null'
description: This product quantity can contain decimal places
required:
- seller
- template_name
StrainClassificationEnum:
enum:
- sativa
- indica
- hybrid
- 11-cbd
- high-cbd
- sativa-hybrid
- indica-hybrid
- 21-cbd
- thc
- na
type: string
NullEnum-unified-upstream-marketplace:
enum:
- null
PatchedUnifiedProductTemplateRequest:
type: object
description: 'Base serializer class to rename created_on and modified fields to
follow new naming standard of created_date and modified_date'
properties:
template_name:
type: string
minLength: 1
description: Template Name
maxLength: 400
listing_state:
oneOf:
- $ref: '#/components/schemas/ListingStateEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
inventory_management:
title: Product Inventory Management
description: The state that determines how inventory is handled for the Product
oneOf:
- $ref: '#/components/schemas/InventoryManagementEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure
sell_in_unit_of_measure:
type:
- integer
- 'null'
description: Unit of measure that buyers see
sell_in_multiples:
type: boolean
default: false
unit_multiplier:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
description: How many individual units are sold when checking out by Unit of Measure
unit_denomination:
type:
- integer
- 'null'
description: The denomination of unit for the Product.
base_units_per_unit:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,5}(?:\.\d{0,15})?$
description: Number of base units in one unit of this product template
retail_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Manufacturer's Suggested Retail Price (MSRP)
wholesale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Max Wholesale Price
sale_price:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
description: Sale Price
minimum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Minimum Units per Order
maximum_order:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,32}(?:\.\d{0,6})?$
description: Maximum Units per Order
description:
type:
- string
- 'null'
description: Brand Description
maxLength: 7000
category:
type:
- integer
- 'null'
sub_category:
type:
- integer
- 'null'
description: The sub-category of the Product (e.g. Bulk Flower, Live Resin, etc)
seller:
type: integer
title: Manufacturer
description: Company who is selling the Product
brand:
type:
- integer
- 'null'
description: Brand of product
product_line:
type:
- integer
- 'null'
description: Product Line of product
strain_classification:
oneOf:
- $ref: '#/components/schemas/StrainClassificationEnum'
- $ref: '#/components/schemas/BlankEnum-unified-upstream-marketplace'
- $ref: '#/components/schemas/NullEnum-unified-upstream-marketplace'
license:
type:
- integer
- 'null'
SHOW_QUANTITY:
type:
- boolean
- 'null'
title: Show Product quantity
description: Show Product Quantity
AVAILABLE_FOR_SAMPLES:
type:
- boolean
- 'null'
description: This product is available for samples
threshold_value:
type:
- integer
- 'null'
maximum: 2147483647
minimum: 0
title: Product threshold value
description: When Product inventory reaches below this value, take various actions
threshold_action:
allOf:
- $ref: '#/components/schemas/ThresholdActionEnum'
title: Product threshold action
description: Action to take when Product inventory reaches below a specified value
is_medical_line_item:
type: boolean
description: Is this a medical line item?
allow_fractional_quantities:
type:
- boolean
- 'null'
description: This product quantity can contain decimal places
PaginatedUnifiedProductTemplateList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
$ref: '#/components/schemas/UnifiedProductTemplate'
BlankEnum-unified-upstream-marketplace:
enum:
- ''
InventoryManagementEnum:
enum:
- inherited
- managed
- unlimited
type: string
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"