openapi: 3.2.0
info:
title: LeafLink Marketplace V2 Product Images API
description: '# Introduction
## HTTP Request Notes
All endpoints covered in this document are preceded by `https://{{domain}}/api/v2/` unless otherwise noted.
Available domains
- `app.leaflink.com` - production environment
- `www.sandbox.leaflink.com` - sandbox environment
- `www.leaflink-integrations.leaflink.com` - integrations sandbox environment
[Learn more about sandbox environments](https://developer.leaflink.com/brands/api/authorization/#sandbox-environments)
Request paths must end in a slash character (''/''). Those that do not will return a 400 (Bad Request) response.
## Dynamic Responses
Some of our API endpoints support dynamic responses. These
are responses that vary in content and/or object level payload size
according to request path or query parameters.
Available parameters are listed beneath endpoint definitions.
'
termsOfService: https://leaflink.com/terms-and-conditions/
contact:
email: support@leaflink.com
version: ''
servers:
- url: https://app.leaflink.com/api/v2
security:
- Token: []
tags:
- description: Product images for display in the marketplace. Each product may have up to 5 images.
name: product-images
paths:
/product-images/:
parameters: []
get:
operationId: product-images_list
summary: List images
description: 'List all all images.
Retrieved per product via the product query parameter or with the following path parameter, /products/{product_id}/images'
parameters:
- name: product
in: query
description: Filter by product id.
required: false
schema:
type: number
- name: id
in: query
description: Filter by image id.
required: false
schema:
type: number
- name: company_slug
in: query
description: Filter by company slug.
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/ProductImageResponse'
tags:
- product-images
post:
operationId: product-images_create
summary: Upload an image
description: Upload a new product image. This request requires multipart form data.
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
image:
description: The uploaded file, sent via multipart form data. Retrieved as a url link.
type: string
format: binary
product:
description: The id for the product that the image will be assigned to.
type: integer
position:
description: The position of the image.
type: integer
minimum: 1
maximum: 5
x-nullable: true
required:
- image
- product
- position
required: true
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProductImageResponse'
tags:
- product-images
/product-images/{id}/:
parameters:
- name: id
in: path
description: The id for the image.
required: true
schema:
type: integer
get:
operationId: product-images_read
summary: Retrieve an image
description: Retrieve an individual image.
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProductImageResponse'
tags:
- product-images
delete:
operationId: product-images_delete
summary: Delete an image
description: Delete an image.
responses:
'204':
description: ''
tags:
- product-images
components:
schemas:
ProductImageResponse:
description: Images for the product
type: object
properties:
id:
type: integer
readOnly: true
image:
description: Url link to the image
type: string
format: uri
product:
description: Id for the associated product
type: integer
position:
description: Image position
type: integer
maximum: 5
minimum: 1
securitySchemes:
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-tagGroups:
- name: Orders
tags:
- order-object
- orders-received
- order-payments
- order-sales-reps
- order-event-logs
- line-item-object
- line-items
- name: Products
tags:
- product-object
- products
- product-categories
- product-subcategories
- listing-states
- product-images
- product-lines
- strains
- name: Batches
tags:
- batch-object
- batches
- product-batch-object
- product-batches
- batch-document-object
- batch-documents
- name: Inventory Items
tags:
- inventory-item-object
- inventory-items
- name: Facilities
tags:
- facility-object
- facilities
- name: Customers
tags:
- customer-object
- customers
- contacts
- activity-entries
- customer-statuses
- customer-tiers
- credits
- customer-tags
- name: Company Information
tags:
- companies
- company-staff
- licenses
- license-types
- brands
- promocodes
- reports
- name: Buyer Orders
tags:
- buyer-order-object
- buyer-orders
- name: Retailer Inventory
tags:
- retailer-inventory