StoreConnect API allows external applications to interact with an online store. In short, it provides a set of endpoints to:
- Submit Orders:
- The
/ordersendpoint lets you create new orders. You provide customer details, billing and shipping addresses, a list of order items, and optionally a collection point and a flag to finalize the order. - Submit Payments:
- The
/paymentsendpoint is used to register a new payment against an order. It requires details like the order ID, payment amount, and a reference, along with optional source information. - Retrieve Products:
- The
/productsendpoint retrieves a paginated list of master products with basic information, while/products/{id}fetches extended details for a specific product. - Get Store Details:
- The
/storeendpoint provides information about the store itself, including currency, locale, logo, name, and timezone.
Additionally, the specification includes comprehensive data models (schemas) for addresses, customers, orders, payments, product details, and more. This structured approach ensures that both successful and error responses (like unauthorized access or validation errors) are well defined.
The API feature is designed to support key e-commerce operations, enabling seamless order management, payment processing, product catalog browsing, and access to store configuration details.
Open https://editor-next.swagger.io/ and paste the following API Specs to access the documentation.
---
openapi: 3.0.1
info:
title: StoreConnect API
version: v1
paths:
"/orders":
post:
summary: Submits a new order
parameters: []
responses:
'201':
description: Created
content:
application/json:
schema:
"$ref": "#/components/schemas/Order"
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
content:
application/json:
schema:
"$ref": "#/components/schemas/Error"
requestBody:
content:
application/json:
schema:
"$ref": "#/components/schemas/CreateOrderPayload"
"/payments":
post:
summary: Submits a new payment
parameters: []
responses:
'201':
description: Created
content:
application/json:
schema:
"$ref": "#/components/schemas/Payment"
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
content:
application/json:
schema:
"$ref": "#/components/schemas/Error"
requestBody:
content:
application/json:
schema:
"$ref": "#/components/schemas/CreatePaymentPayload"
"/products":
get:
summary: Returns a list of master products
parameters:
- name: page
in: query
required: false
schema:
type: integer
- name: per_page
in: query
required: false
schema:
type: integer
responses:
'200':
description: Ok
headers:
X-Pagination-Per-Page:
schema:
type: integer
example: 5
default: 25
X-Pagination-Current-Page:
schema:
type: integer
example: 3
X-Pagination-Total-Records:
schema:
type: integer
example: 100
content:
application/json:
schema:
type: array
items:
"$ref": "#/components/schemas/ProductBasic"
'401':
description: Unauthorized
"/products/{id}":
get:
summary: Returns extended details of a single product
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
"$ref": "#/components/schemas/ProductExtended"
'404':
description: Not Found
'401':
description: Unauthorized
"/store":
get:
summary: Returns details for the store
responses:
'200':
description: Ok
content:
application/json:
schema:
"$ref": "#/components/schemas/Store"
'401':
description: Unauthorized
components:
schemas:
Address:
type: object
properties:
street:
type: string
example: 123 Main St
city:
type: string
example: Sydney
state:
type: string
example: NSW
format: ISO 3166-2
country:
type: string
example: AU
format: ISO 3166-1 alpha-2
postal_code:
type: string
example: 2000
Category:
type: object
required:
- id
- name
properties:
id:
type: string
example: 123456789-ABCDEFG
name:
type: string
example: Clothing
CollectionPoint:
description: A collection point defines a physical location that an order can
be picked up from
type: object
required:
- id
- name
- geo
- lead_time_duration
- lead_time_units
- description
- phone
properties:
id:
type: string
example: 123456789-ABCDEFG
name:
type: string
example: Members Pavilion
geo:
"$ref": "#/components/schemas/LatLong"
lead_time_duration:
type: integer
nullable: true
example: 20
lead_time_units:
type: string
nullable: true
enum:
- days
- hours
- minutes
example: minutes
description:
type: string
nullable: true
example: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
phone:
type: string
nullable: true
example: "(555) 123 456"
CreateOrderPayload:
type: object
required:
- customer
- items
- billing_address
- shipping_address
properties:
customer:
"$ref": "#/components/schemas/Customer"
billing_address:
"$ref": "#/components/schemas/Address"
shipping_address:
"$ref": "#/components/schemas/Address"
items:
type: array
items:
"$ref": "#/components/schemas/OrderItemPayload"
collection_point_id:
type: string
example: 123456789-ABCDEFG
finalise_order:
type: boolean
example: false
CreatePaymentPayload:
type: object
required:
- order_id
- amount
- reference
properties:
order_id:
type: string
example: 123456789-ABCDEFG
amount:
type: number
format: decimal
example: 99.0
reference:
type: string
example: 123456789-ABCDEFG
source:
type: string
example: Your App Name
Currency:
description: An object defining elements related to a Currency
type: object
required:
- code
- symbol
properties:
code:
type: string
example: AUD
symbol:
type: string
example: "$"
Customer:
description: The contact details for a Customer
type: object
required:
- first_name
- last_name
- email
properties:
first_name:
type: string
example: Roger
last_name:
type: string
example: Ramjet
email:
"$ref": "#/components/schemas/Email"
phone:
type: string
example: "(555) 123 456"
Email:
description: A valid email address
type: string
example: person@example.com
Error:
description: An API Error
type: object
required:
- error
properties:
error:
type: object
required:
- type
- details
properties:
type:
type: string
enum:
- invalid
- missing
- not_found
- request
details:
type: object
example:
param: quantity
in:
- root
- items
- 1
Image:
description: image data including various urls for different sizes
type: object
required:
- id
- sizes
properties:
id:
type: string
example: 123456789-ABCDEFG
sizes:
type: object
properties:
original:
"$ref": "#/components/schemas/Url"
16x16:
"$ref": "#/components/schemas/Url"
32x32:
"$ref": "#/components/schemas/Url"
50x50:
"$ref": "#/components/schemas/Url"
100x100:
"$ref": "#/components/schemas/Url"
240x240:
"$ref": "#/components/schemas/Url"
480x480:
"$ref": "#/components/schemas/Url"
640x640:
"$ref": "#/components/schemas/Url"
1024x1024:
"$ref": "#/components/schemas/Url"
2048x2048:
"$ref": "#/components/schemas/Url"
LatLong:
description: Provides a pair of latitude and longitude coordinates
required:
- latitude
- longitude
type: object
properties:
latitude:
type: number
nullable: true
format: float
example: -33.891034
longitude:
type: number
nullable: true
format: float
example: 151.224045
OrderItemPayload:
type: object
required:
- product_id
- quantity
properties:
product_id:
type: string
example: 123456789-ABCDEFG
quantity:
type: integer
example: 3
OrderItem:
type: object
required:
- id
- name
- quantity
- price
- total
- tax
properties:
id:
type: string
example: 123456789-ABCDEFG
name:
type: string
example: My Product
quantity:
type: number
format: decimal
example: 3
price:
type: number
format: decimal
total:
type: number
format: decimal
tax:
type: number
format: decimal
Order:
type: object
required:
- id
- reference
- status
- total_amount
- total_tax
- total_paid
- total_payable
- customer
- items
properties:
id:
type: string
example: 123456789-ABCDEFG
reference:
type: string
example: 169af09d8226
status:
type: string
example: Ready for pickup
total_amount:
type: number
format: decimal
total_tax:
type: number
format: decimal
total_paid:
type: number
format: decimal
total_payable:
type: number
format: decimal
customer:
"$ref": "#/components/schemas/Customer"
items:
type: array
items:
"$ref": "#/components/schemas/OrderItem"
collection_point_id:
type: string
example: 123456789-ABCDEFG
Payment:
description: Payment details
type: object
required:
- id
- amount
- order_id
- paid_at
- reference
properties:
id:
type: string
example: 123456789-ABCDEFG
order_id:
type: string
example: 123456789-ABCDEFG
amount:
type: number
format: decimal
example: 99.0
reference:
type: string
example: 123456789-ABCDEFG
paid_at:
type: string
format: iso-8601
example: '2025-02-24T05:37:33Z'
ProductBasic:
description: basic information about a product
allOf:
- "$ref": "#/components/schemas/ProductCommon"
type: object
required:
- variants
properties:
variants:
type: array
items:
"$ref": "#/components/schemas/ProductVariant"
ProductCommon:
description: common product details
type: object
required:
- id
- code
- images
- name
- pricing
- stock
- summary
- tags
- taxes
properties:
id:
type: string
example: 123456789-ABCDEFG
code:
type: string
example: 1234ABCD
images:
type: array
items:
"$ref": "#/components/schemas/Image"
name:
type: string
example: My Product
pricing:
"$ref": "#/components/schemas/ProductPricing"
stock:
"$ref": "#/components/schemas/ProductStock"
summary:
"$ref": "#/components/schemas/RichText"
tags:
type: array
items:
"$ref": "#/components/schemas/Tag"
taxes:
type: array
items:
"$ref": "#/components/schemas/Tax"
ProductExtended:
description: extended product details
allOf:
- "$ref": "#/components/schemas/ProductCommon"
type: object
required:
- master_id
- content
- variants
properties:
master_id:
type: string
example: 123456789-ABCDEFG
nullable: true
content:
type: object
example:
Features: Lorem ipsum...
Warranty: Lorem ipsum...
variants:
type: array
items:
"$ref": "#/components/schemas/ProductVariant"
ProductPricing:
description: pricing information for a product
type: object
required:
- original
- current
- tax_inclusive
properties:
original:
type: number
format: decimal
description: the original price for a product
example: 12.95
current:
type: number
format: decimal
description: the current price for a product
example: 9.95
tax_inclusive:
type: boolean
description: Indicates whether the tax is already included in this price
example: true
ProductStockLevel:
description: Details of stock levels for a product
type: object
required:
- id
- available_to_sell
- collection_points
- online_fulfillment_options
properties:
id:
type: string
example: 123456789-ABCDEFG
available_to_sell:
type: integer
nullable: true
example: 24
collection_points:
type: array
items:
"$ref": "#/components/schemas/CollectionPoint"
online_fulfillment_options:
type: string
enum:
- no_online_fulfillment
- shipping_only
- click_and_collect_only
- shipping_with_click_and_collect
ProductStock:
description: Stock information for a product
type: object
required:
- total_available_to_sell
- stock_levels
properties:
total_available_to_sell:
type: integer
nullable: true
example: 24
stock_levels:
type: array
items:
"$ref": "#/components/schemas/ProductStockLevel"
ProductVariant:
description: product variant details
type: object
required:
- id
- variant_options
properties:
id:
type: string
example: 123456789-ABCDEFG
variant_options:
type: object
example:
Color: Red
Size: Small
RichText:
description: text that may contain html
type: string
example: "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
Store:
description: Store details
type: object
required:
- currency
- locale
- logo
- name
- timezone
properties:
currency:
"$ref": "#/components/schemas/Currency"
locale:
type: string
example: en-AU
logo:
"$ref": "#/components/schemas/Image"
name:
type: string
example: My Store
timezone:
type: string
example: Australia/Sydney
Tag:
description: an object that defines a tag
type: object
required:
- id
- type
- value
properties:
id:
type: string
example: 123456789-ABCDEFG
type:
type: string
description: define what type of tag this is - can be used to target different
tags in different contexts
example: sale
value:
type: string
description: the text to display for this tag
example: Sale
Tax:
description: an object that defines a tax rate
type: object
required:
- id
- name
- rate
- effective_from
- effective_to
- zone
properties:
id:
type: string
example: 123456789-ABCDEFG
name:
type: string
description: the name of the tax rate
example: GST
rate:
type: number
format: decimal
description: the tax rate as a percentage
example: 11.3
effective_from:
type: string
format: iso-8601
description: the date at which this rate became effective
example: '2020-03-01'
effective_to:
type: string
nullable: true
format: iso-8601
description: the date at which this rate is no-longer effective
example: '2022-07-01'
zone:
"$ref": "#/components/schemas/Zone"
Url:
description: A fully qualified URL
type: string
example: https://example.com
Zone:
description: a Zone is made up a multiple Countries/States/Postcodes
type: object
required:
- id
- name
- includes
properties:
id:
type: string
example: 123456789-ABCDEFG
name:
type: string
description: a human-readable name for the Zone
example: Asia-Pacific
includes:
description: a list of codes that are included in the Zone
type: array
items:
required:
- name
- country
properties:
name:
type: string
description: a human-readable name for the codes in the Zone
example: MELBOURNE, VICTORIA, AUSTRALIA
postcode:
type: string
description: a postal/zip code that is in the Zone
example: '3000'
state:
type: string
description: an ISO 3166-2 code for a State/Province that is in the
Zone, without the country code prefix
example: VIC
country:
type: string
description: an ISO 3166-1 code for a Country that is in the Zone,
in alpha-3 format
example: AUS
example:
- name: MELBOURNE, VICTORIA, AUSTRALIA
postcode: '3000'
state: VIC
country: AUS
- name: NEW ZEALAND
country: NZL
securitySchemes:
bearer_auth:
type: http
scheme: bearer
servers:
- url: https://api.{domain}/{version}
variables:
domain:
default: example.com
version:
default: v1
security:
- bearer_auth: []