Venue API V3
Resources
- Menu Feeds 2 endpoints
- Info 2 endpoints
- Incoming Orders 3 endpoints
- Incoming Quotes 6 endpoints
- Coupons 5 endpoints
- Customers 4 endpoints
- Customer Tags 1 endpoints
- Customer Queues 1 endpoints
- Inventories 3 endpoints
- Inventory Transactions 1 endpoints
- Manifest Items 1 endpoints
- Manifests 1 endpoints
- Sales Histories 2 endpoints
- Suppliers 1 endpoints
- Product Brands 1 endpoints
- Product Tags 1 endpoints
- Product Types 1 endpoints
- Product Strains 1 endpoints
- Terminal Tills 1 endpoints
- Users 1 endpoints
- Venue Rooms 1 endpoints
Info
2 endpoints/api/v3/info
List the venues this integrator is connected to
Example
curl -X GET "https://app.posabit.com/api/v3/info" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 500 | Internal Server Error |
Response Example
{
"code": 1,
"venues": [
{
"merchant_name": "POSaBIT Demo",
"merchant_id": 7654,
"venue_name": "The Pot Shop",
"active": true,
"venue_token": "abcdefg12345ABCDEFG123",
"first_connected_date": "2025-09-26",
"last_connected_date": "2025-09-29"
}
]
}
/api/v3/venue/info
Venue Info
Example
curl -X GET "https://app.posabit.com/api/v3/venue/info" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Example
{
"name": "The Bong Marché",
"license": "413813",
"region": "Washington State",
"locale": "en-US",
"vertical": "dispensaries",
"logo_thumb": "https://pbit-staging.s3.amazonaws.com/logos/Venue/thumb_3221_logo.png",
"logo_medium": "https://pbit-staging.s3.amazonaws.com/logos/Venue/medium_3221_logo.png",
"telephone": "",
"address": "1128 8th St, Kirkland, WA",
"street_address_line_1": "1128 8th St",
"city": "Kirkland",
"state": "WA",
"zip_code": "98000",
"country": "USA",
"timezone": "Pacific Time (US & Canada)",
"latitude": "48.7382",
"longitude": "-122.47",
"domains": [],
"tax_rates": [
{
"id": 4285,
"name": "Cannabis Tax",
"rate": 3700,
"tax_rate": "37.0",
"price_included": true
},
{
"id": 4286,
"name": "Bellingham, WA",
"rate": 900,
"tax_rate": "9.0",
"price_included": true
}
],
"payment_methods": [
"Cash",
"Debit Card",
"Other"
],
"venue_settings": {
"online_order_curbside": "1",
"online_order_delivery": "1"
}
}
Models
IntegratorInfoResponse
The authenticated integrator and the venues connected to it.
| Property | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Status code, 1 on success |
integrator_name
|
string | No | Integrator name |
integrator_id
|
integer | No | Integrator id |
venues
|
array (IntegratorVenue) | Yes | Connected venues |
IntegratorVenue
One venue an integrator is connected to.
| Property | Type | Required | Description |
|---|---|---|---|
venue_id
|
integer | Yes | Venue id |
venue_name
|
string | No | Venue name |
merchant_id
|
integer | No | Merchant id |
merchant_name
|
string | No | Merchant name |
venue_token
|
string | No | Venue token to pair with the integrator token when calling venue endpoints |
active
|
boolean | No | Whether the connection is active |
first_connected_date
|
datetime | No | First request seen from this pairing |
last_connected_date
|
datetime | No | Most recent request seen from this pairing |
VenueInfoResponse
Identity, location and configuration for the authenticated venue.
| Property | Type | Required | Description |
|---|---|---|---|
name
|
string | No | Venue name |
license
|
string | No | Traceability system license number |
region
|
string | No | Regulatory region name |
locale
|
string | No | Region locale, e.g. en-US |
vertical
|
string | No | The merchant's business vertical |
logo_thumb
|
string | No | Venue logo, thumbnail size. Falls back to a placeholder |
logo_medium
|
string | No | Venue logo, medium size. Falls back to a placeholder |
telephone
|
string | No | Venue telephone number |
address
|
string | No | Street, city and state joined into one line |
street_address_line_1
|
string | No | Street address |
city
|
string | No | City |
state
|
string | No | State or territory |
zip_code
|
string | No | Postal code |
country
|
string | No | Country |
timezone
|
string | No | Venue timezone, the one ordered_at_local uses on the sales endpoints |
latitude
|
float | No | Latitude |
longitude
|
float | No | Longitude |
tax_rates
|
array (VenueTaxRate) | No | Active tax rates |
payment_methods
|
array | No | Payment methods the venue accepts |
venue_settings
|
object | No | Venue settings as a map of setting name to value |
VenueTaxRate
One active tax rate.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Tax id |
name
|
string | No | Tax name |
rate
|
integer | No | Rate in basis points, e.g. 800 for 8% |
tax_rate
|
string | No | Rate as a percentage string, e.g. "8.0" |
price_included
|
boolean | No | Whether the tax is already included in displayed prices |
Incoming Orders
3 endpoints/api/v3/incoming_orders
List the venue's current incoming orders
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page number (100 records per page) |
q[updated_at_gt]
|
datestring | query | No | Only return incoming orders updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return incoming orders updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[id_eq]
|
integer | query | No | Only return the incoming order with this id |
q[customer_id_eq]
|
integer | query | No | Only return incoming orders for this customer id |
q[telephone_eq]
|
string | query | No | Only return incoming orders with this telephone (digits only, no formatting) |
q[email_eq]
|
string | query | No | Only return incoming orders with this email |
q[reference_no_eq]
|
string | query | No | Only return incoming orders with this reference number |
q[first_name_eq]
|
string | query | No | Only return incoming orders with this first name |
q[last_name_eq]
|
string | query | No | Only return incoming orders with this last name |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/incoming_orders" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | |
customer_type
|
string | No | Default: recreational |
terminal_id
|
integer | No | |
customer_id
|
integer | No | |
local_order_id
|
string | No | |
driver_id
|
integer | No | |
vehicle_id
|
integer | No | |
aasm_state
|
string | No | Default: pending |
pos_status
|
string | No | |
source
|
string(30) | No | Default: online_store |
first_name
|
string | No | |
last_name
|
string | No | |
telephone
|
string | No | |
email
|
string | No | |
processed_by
|
string | No | |
saved_order_data
|
text | No | |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
processed_at
|
datetime | No | |
order_type
|
string | No | Default: pickup |
requested_payment_method
|
string | No | |
address
|
string | No | Default: |
city
|
string | No | Default: |
state_abbrev
|
string | No | Default: |
zipcode
|
string | No | Default: |
country
|
string | No | Default: US |
lat
|
float | No | |
lng
|
float | No | |
notes
|
text | No | |
internal_notes
|
text | No | |
departured_at
|
datetime | No | |
delivered_at
|
datetime | No | |
requested_date
|
date | No | |
requested_window_start_time
|
string(100) | No | |
requested_window_end_time
|
string(100) | No | |
planned_route
|
text | No | |
delivery_status
|
string | No | |
sts_error
|
text | No | |
total
|
integer | No | |
tip_amount
|
integer | No | Default: 0 |
tip_type
|
string | No | |
created_by
|
string | No | |
status_callback
|
text | No | |
payment_prepaid
|
boolean | No | Default: false |
payment_source
|
string(80) | No | |
payment_reference_id
|
string(80) | No | |
payment_amount
|
integer | No | |
proc_time
|
integer | No | Default: 0 |
reason
|
string | No | |
payment_verified
|
boolean | No | Default: false |
curbside
|
boolean | No | Default: false |
third_party_request_id
|
integer | No | |
api_id
|
string(64) | No | |
cancellation_notes
|
text | No | |
external_error
|
text | No | |
payment_auth_id
|
string | No | |
tip_calculated
|
integer | No | Default: 0 |
processing_fee
|
integer | No | Default: 0 |
ip
|
string | No | |
oauth_token
|
text | No | |
otp
|
string | No | |
birthday
|
date | No | |
client_type
|
string(20) | No | |
fulfillment_method
|
string(20) | No | |
fulfillment_sub_type
|
string(30) | No | |
integrator_id
|
integer | No | |
api_version
|
string(10) | No |
/api/v3/incoming_orders
Create an incoming order
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
IncomingOrderInput | body | Yes | Order payload, wrapped under the "incoming_order" key |
Example
curl -X POST "https://app.posabit.com/api/v3/incoming_orders" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"incoming_order": {
"order_type": "pickup",
"first_name": "John",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551112222",
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": "",
"reference_no": "12345-86-123",
"notes": "Gets free lighter",
"requested_payment_method": "cash",
"source": "online_store",
"order_items_attributes": [
{
"product_parent_id": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
"product_id": 808542,
"quantity": 2
}
]
}
}'
Request Body
{
"incoming_order": {
"order_type": "pickup",
"first_name": "John",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551112222",
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": "",
"reference_no": "12345-86-123",
"notes": "Gets free lighter",
"requested_payment_method": "cash",
"source": "online_store",
"order_items_attributes": [
{
"product_parent_id": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
"product_id": 808542,
"quantity": 2
}
]
}
}
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | External order number; must be unique per venue |
first_name
|
string | Yes | Customer first name (required unless a POS source) |
last_name
|
string | Yes | Customer last name (required unless a POS source) |
email
|
string | No | Customer email |
telephone
|
string | No | Customer phone (digits only) |
customer_id
|
integer | No | Existing POSaBIT customer id |
total
|
float | No | Order total in dollars (stored as integer cents) |
order_type
|
string | No | Order type |
client_type
|
string | No | Originating client |
fulfillment_method
|
string | No | Fulfillment method |
fulfillment_sub_type
|
string | No | Fulfillment sub type |
curbside
|
boolean | No | DEPRECATED: use fulfillment_sub_type "curbside" instead. Curbside pickup flag. |
source
|
string | No | DEPRECATED: use client_type / fulfillment_method instead. Order source channel (defaults to online_store). |
requested_date
|
string | No | Requested date (YYYY-MM-DD) |
requested_payment_method
|
string | No | Requested payment method |
requested_window_start_time
|
string | No | Requested window start; string or { hour, minute, ampm } |
requested_window_end_time
|
string | No | Requested window end; string or { hour, minute, ampm } |
notes
|
string | No | Order notes (emoji are tokenized server-side) |
customer_notes
|
string | No | Customer-facing notes |
address
|
string | No | Delivery address |
city
|
string | No | Delivery city |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code (max 6 characters) |
payment_prepaid
|
boolean | No | Whether payment was prepaid |
payment_source
|
string | No | Payment source |
payment_reference_id
|
string | No | Payment reference id (unique per venue + payment_source when payment is verified) |
payment_amount
|
integer | No | Payment amount in cents |
status_callback
|
string | No | Status callback URL/token |
processed_by
|
string | No | Who processed the order |
delivered_at
|
string | No | Delivered timestamp (ISO 8601) |
order_items_attributes
|
array (IncomingOrderItemInput) | No | Line items |
Response Example
{
"code": 1,
"incoming_order": {
"id": 19800,
"aasm_state": "pending",
"reference_no": "12345-86-123",
"first_name": "John",
"last_name": "Doe",
"source": "online_store",
"order_type": "pickup",
"notes": "Gets free lighter",
"delivered_at": null,
"requested_date": null,
"requested_window_start_time": {},
"requested_window_end_time": {},
"requested_payment_method": "cash",
"payment_verified": false,
"curbside": false,
"created_at": "2024-10-03T19:12:19.000Z",
"updated_at": "2024-10-03T19:12:19.000Z"
},
"order_items": [
{
"item_id": 32744,
"product_id": 808542,
"sku_id": 115866,
"manifest_item_id": null,
"product_name": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
"product_brand": "Treehawk Farms",
"product_strain": "Wifi OG",
"weight": null,
"quantity": 2,
"unit_quantity": "2.0",
"price": 1000,
"discount": null,
"tax": null,
"tier_weight_id": null,
"coupons": [],
"taxes": [],
"created_at": "2024-10-03T19:12:19.000Z",
"updated_at": "2024-10-03T19:12:19.000Z"
}
]
}
/api/v3/incoming_orders/{id}
Find an incoming order by reference number or id
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Reference number or numeric id |
Example
curl -X GET "https://app.posabit.com/api/v3/incoming_orders/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 404 | Requested reference number or id not found |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | |
customer_type
|
string | No | Default: recreational |
terminal_id
|
integer | No | |
customer_id
|
integer | No | |
local_order_id
|
string | No | |
driver_id
|
integer | No | |
vehicle_id
|
integer | No | |
aasm_state
|
string | No | Default: pending |
pos_status
|
string | No | |
source
|
string(30) | No | Default: online_store |
first_name
|
string | No | |
last_name
|
string | No | |
telephone
|
string | No | |
email
|
string | No | |
processed_by
|
string | No | |
saved_order_data
|
text | No | |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
processed_at
|
datetime | No | |
order_type
|
string | No | Default: pickup |
requested_payment_method
|
string | No | |
address
|
string | No | Default: |
city
|
string | No | Default: |
state_abbrev
|
string | No | Default: |
zipcode
|
string | No | Default: |
country
|
string | No | Default: US |
lat
|
float | No | |
lng
|
float | No | |
notes
|
text | No | |
internal_notes
|
text | No | |
departured_at
|
datetime | No | |
delivered_at
|
datetime | No | |
requested_date
|
date | No | |
requested_window_start_time
|
string(100) | No | |
requested_window_end_time
|
string(100) | No | |
planned_route
|
text | No | |
delivery_status
|
string | No | |
sts_error
|
text | No | |
total
|
integer | No | |
tip_amount
|
integer | No | Default: 0 |
tip_type
|
string | No | |
created_by
|
string | No | |
status_callback
|
text | No | |
payment_prepaid
|
boolean | No | Default: false |
payment_source
|
string(80) | No | |
payment_reference_id
|
string(80) | No | |
payment_amount
|
integer | No | |
proc_time
|
integer | No | Default: 0 |
reason
|
string | No | |
payment_verified
|
boolean | No | Default: false |
curbside
|
boolean | No | Default: false |
third_party_request_id
|
integer | No | |
api_id
|
string(64) | No | |
cancellation_notes
|
text | No | |
external_error
|
text | No | |
payment_auth_id
|
string | No | |
tip_calculated
|
integer | No | Default: 0 |
processing_fee
|
integer | No | Default: 0 |
ip
|
string | No | |
oauth_token
|
text | No | |
otp
|
string | No | |
birthday
|
date | No | |
client_type
|
string(20) | No | |
fulfillment_method
|
string(20) | No | |
fulfillment_sub_type
|
string(30) | No | |
integrator_id
|
integer | No | |
api_version
|
string(10) | No |
Response Example
{
"code": 1,
"incoming_order": {
"id": 19798,
"aasm_state": "processing",
"reference_no": "3221-1727814981-bb1314bf",
"first_name": "A",
"last_name": "A",
"source": "posabit_v2",
"order_type": "pickup",
"notes": null,
"delivered_at": null,
"requested_date": null,
"requested_window_start_time": {},
"requested_window_end_time": {},
"requested_payment_method": "cash",
"payment_verified": false,
"curbside": false,
"created_at": "2024-10-01T20:39:23.000Z",
"updated_at": "2024-10-01T20:41:19.000Z"
},
"order_items": [
{
"item_id": 32713,
"product_id": 800583,
"sku_id": 107907,
"manifest_item_id": null,
"product_name": "'oh' McDonald Farms - Nuken (1g)",
"product_brand": "'oh' McDonald Farms",
"product_strain": "Nuken",
"weight": "1.1g",
"quantity": 1,
"unit_quantity": "1.1",
"price": 1500,
"discount": 0,
"tax": 473,
"tier_weight_id": null,
"coupons": [],
"taxes": [],
"created_at": "2024-10-01T20:36:21.000Z",
"updated_at": "2024-10-01T20:36:21.000Z"
}
]
}
Models
IncomingOrderInput
Request body for creating an incoming order (wrapped under the "incoming_order" key).
| Property | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | External order number; must be unique per venue |
first_name
|
string | Yes | Customer first name (required unless a POS source) |
last_name
|
string | Yes | Customer last name (required unless a POS source) |
email
|
string | No | Customer email |
telephone
|
string | No | Customer phone (digits only) |
customer_id
|
integer | No | Existing POSaBIT customer id |
total
|
float | No | Order total in dollars (stored as integer cents) |
order_type
|
string | No |
Order type
Allowed values: pickup, in_store, delivery, saved_order, kiosk, curbside_pickup
|
client_type
|
string | No |
Originating client
Allowed values: web, app, kiosk, pos
|
fulfillment_method
|
string | No |
Fulfillment method
Allowed values: pickup, delivery, in_store
|
fulfillment_sub_type
|
string | No |
Fulfillment sub type
Allowed values: drive_thru, curbside, in_store
|
curbside
|
boolean | No | DEPRECATED: use fulfillment_sub_type "curbside" instead. Curbside pickup flag. |
source
|
string | No | DEPRECATED: use client_type / fulfillment_method instead. Order source channel (defaults to online_store). |
requested_date
|
string | No | Requested date (YYYY-MM-DD) |
requested_payment_method
|
string | No | Requested payment method |
requested_window_start_time
|
string | No | Requested window start; string or { hour, minute, ampm } |
requested_window_end_time
|
string | No | Requested window end; string or { hour, minute, ampm } |
notes
|
string | No | Order notes (emoji are tokenized server-side) |
customer_notes
|
string | No | Customer-facing notes |
address
|
string | No | Delivery address |
city
|
string | No | Delivery city |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code (max 6 characters) |
payment_prepaid
|
boolean | No | Whether payment was prepaid |
payment_source
|
string | No | Payment source |
payment_reference_id
|
string | No | Payment reference id (unique per venue + payment_source when payment is verified) |
payment_amount
|
integer | No | Payment amount in cents |
status_callback
|
string | No | Status callback URL/token |
processed_by
|
string | No | Who processed the order |
delivered_at
|
string | No | Delivered timestamp (ISO 8601) |
order_items_attributes
|
array (IncomingOrderItemInput) | No | Line items |
IncomingOrderItemInput
A line item within an incoming order (order_items_attributes).
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | No | Existing line-item id (for updates) |
product_id
|
integer | No | POSaBIT product id |
product_name
|
string | Yes | Product name |
product_brand
|
string | No | Product brand |
product_strain
|
string | No | Product strain |
quantity
|
integer | Yes | Quantity (greater than 0 and less than 100) |
price
|
integer | No | Unit price in cents (often derived from the product) |
weight
|
string | No | Weight |
tier_weight_id
|
integer | No | Tier weight id |
order_item_coupons_attributes
|
array (OrderItemCouponInput) | No | Coupons applied to the item |
order_item_taxes_attributes
|
array (OrderItemTaxInput) | No | Taxes applied to the item |
OrderItemCouponInput
A coupon applied to a line item (order_item_coupons_attributes). Entries with a blank pos_coupon_id are rejected.
| Property | Type | Required | Description |
|---|---|---|---|
pos_coupon_id
|
integer | Yes | POS coupon id |
order_item_id
|
integer | No | Order item id |
ref_name
|
string | No | Reference name |
ref_number
|
string | No | Reference number |
amount
|
integer | No | Discount amount in cents |
OrderItemTaxInput
A tax applied to a line item (order_item_taxes_attributes).
| Property | Type | Required | Description |
|---|---|---|---|
tax_id
|
integer | No | Tax id |
order_item_id
|
integer | No | Order item id |
amount
|
integer | No | Tax amount in cents |
IncomingOrderResponse
Incoming order as returned by the API. show/create return { code, incoming_order: {...}, order_items: [...] }; index nests the same pair per element under incoming_orders[]. The order_items array is a sibling of incoming_order, not nested inside it.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | No | Order id |
aasm_state
|
string | No | Workflow state (pending, processing, completed, en_route, delivered, cancelled, ...) |
reference_no
|
string | No | External order number |
first_name
|
string | No | Customer first name |
last_name
|
string | No | Customer last name |
source
|
string | No | DEPRECATED: superseded by client_type / fulfillment_method. Order source channel. |
order_type
|
string | No | Order type |
client_type
|
string | No | Originating client |
fulfillment_method
|
string | No | Fulfillment method |
fulfillment_sub_type
|
string | No | Fulfillment sub type |
integrator_id
|
integer | No | Integrator id (server-derived) |
api_version
|
string | No | API version that created the order |
address
|
string | No | Delivery address |
city
|
string | No | Delivery city |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
notes
|
string | No | Order notes |
delivered_at
|
string | No | Delivered timestamp |
requested_date
|
string | No | Requested date |
requested_window_start_time
|
string | No | Requested window start |
requested_window_end_time
|
string | No | Requested window end |
requested_payment_method
|
string | No | Requested payment method |
payment_verified
|
boolean | No | Whether payment is verified |
curbside
|
boolean | No | DEPRECATED: superseded by fulfillment_sub_type. Curbside flag. |
created_at
|
string | No | Created timestamp |
updated_at
|
string | No | Updated timestamp |
order_items
|
array (IncomingOrderItemResponse) | No | Line items (returned as a sibling array) |
IncomingOrderItemResponse
A line item in an incoming order response.
| Property | Type | Required | Description |
|---|---|---|---|
item_id
|
integer | No | Line item id |
product_id
|
integer | No | Product id |
sku_id
|
integer | No | Inventory SKU id |
manifest_item_id
|
integer | No | Manifest item id |
product_name
|
string | No | Product name |
product_brand
|
string | No | Product brand |
product_strain
|
string | No | Product strain |
weight
|
string | No | Weight |
quantity
|
integer | No | Quantity |
unit_quantity
|
float | No | Unit quantity |
price
|
integer | No | Unit price in cents |
discount
|
integer | No | Discount in cents |
tax
|
integer | No | Tax in cents |
tier_weight_id
|
integer | No | Tier weight id |
coupons
|
array | No | Applied coupons |
taxes
|
array | No | Applied taxes |
created_at
|
string | No | Created timestamp |
updated_at
|
string | No | Updated timestamp |
Incoming Quotes
6 endpoints-
PUT
/api/v3/incoming_quotes/{id}/items -
POST
/api/v3/incoming_quotes/{id}/ach_payment_auth -
PUT
/api/v3/incoming_quotes/{id}/finalize -
POST
/api/v3/incoming_quotes -
GET
/api/v3/incoming_quotes/{id} -
PATCH
/api/v3/incoming_quotes/{id} - QuoteInput
- QuoteFulfillmentInput
- QuoteDeliveryAddressInput
- QuoteCustomerInput
- QuotePaymentInput
- QuoteItemInput
- QuoteItemsInput
- QuotePaymentAuthInput
- QuoteResponse
- QuoteFulfillmentResponse
- QuoteDeliveryAddressResponse
- QuoteCustomerResponse
- QuotePaymentResponse
- QuoteItemResponse
- QuoteItemDiscountResponse
- QuoteItemImageResponse
- QuoteItemTestResultsResponse
- QuoteItemMeasureResponse
- QuoteItemTerpeneResponse
- QuoteTaxResponse
- QuoteTotalsResponse
- QuoteLimitsResponse
Endpoints
Models
/api/v3/incoming_quotes/{id}/items
Replace an incoming quote's line items
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Quote reference number |
body
|
QuoteItemsInput | body | Yes | Items payload, wrapped under the "quote" key |
Example
curl -X PUT "https://app.posabit.com/api/v3/incoming_quotes/{id}/items" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
items
|
array (QuoteItemInput) | Yes | Replacement line items |
/api/v3/incoming_quotes/{id}/ach_payment_auth
Authorize an ACH (PosaBIT Pay) payment for a quote
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Quote reference number |
body
|
QuotePaymentAuthInput | body | Yes | Payment authorization payload, wrapped under the "payment" key |
Example
curl -X POST "https://app.posabit.com/api/v3/incoming_quotes/{id}/ach_payment_auth" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
pac
|
string | No | Hypur PAC (personal access code) |
code
|
string | No | Authorization code |
redirect_uri
|
string | No | Redirect URI |
/api/v3/incoming_quotes/{id}/finalize
Finalize an incoming quote (submits an order)
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Quote reference number |
Example
curl -X PUT "https://app.posabit.com/api/v3/incoming_quotes/{id}/finalize" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
/api/v3/incoming_quotes
Create an incoming quote
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
QuoteInput | body | Yes | Quote payload, wrapped under the "quote" key |
Example
curl -X POST "https://app.posabit.com/api/v3/incoming_quotes" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"quote": {
"incoming_order_id": null,
"venue_id": 3221,
"fulfillment": {
"source": "posabit_v2",
"order_type": "pickup",
"requested_date": null,
"requested_window_start_time": null,
"requested_window_end_time": null,
"tip_amount": 0,
"tip_type": null,
"processing_fee": 300,
"tip_calculated": 0,
"delivery_address": {
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": ""
}
},
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551112222",
"customer_type": "recreational"
},
"payment": {
"requested_payment_method": "cash"
},
"items": [
{
"sku_id": 107907,
"quantity": 1,
"product_id": 800583,
"name": "'oh' McDonald Farms - Nuken (1g)",
"unit_type": "g",
"unit": "1.1",
"variant_id": "k107907",
"quantity_on_hand": 30,
"test_results": {
"thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"cbd": {
"current": 10,
"low": 10,
"high": 10,
"unit_type": "%"
},
"thca": null,
"cbda": null,
"total_thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"total_cbd": null,
"thcv": null,
"cbdv": null,
"cbc": null,
"cbca": null,
"cbcv": null,
"cbn": null,
"cbg": null,
"cbga": null,
"cbgv": null
},
"terpene_results": [],
"product_image": {
"is_product_specific_image": true,
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
},
"discount": 0,
"price": 1500,
"discount_ids": []
}
]
}
}'
Request Body
{
"quote": {
"incoming_order_id": null,
"venue_id": 3221,
"fulfillment": {
"source": "posabit_v2",
"order_type": "pickup",
"requested_date": null,
"requested_window_start_time": null,
"requested_window_end_time": null,
"tip_amount": 0,
"tip_type": null,
"processing_fee": 300,
"tip_calculated": 0,
"delivery_address": {
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": ""
}
},
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551112222",
"customer_type": "recreational"
},
"payment": {
"requested_payment_method": "cash"
},
"items": [
{
"sku_id": 107907,
"quantity": 1,
"product_id": 800583,
"name": "'oh' McDonald Farms - Nuken (1g)",
"unit_type": "g",
"unit": "1.1",
"variant_id": "k107907",
"quantity_on_hand": 30,
"test_results": {
"thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"cbd": {
"current": 10,
"low": 10,
"high": 10,
"unit_type": "%"
},
"thca": null,
"cbda": null,
"total_thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"total_cbd": null,
"thcv": null,
"cbdv": null,
"cbc": null,
"cbca": null,
"cbcv": null,
"cbn": null,
"cbg": null,
"cbga": null,
"cbgv": null
},
"terpene_results": [],
"product_image": {
"is_product_specific_image": true,
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
},
"discount": 0,
"price": 1500,
"discount_ids": []
}
]
}
}
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | Quote reference number (generated when blank) |
fulfillment
|
QuoteFulfillmentInput | No | Fulfillment details |
customer
|
QuoteCustomerInput | No | Customer details |
payment
|
QuotePaymentInput | No | Payment details |
items
|
array (QuoteItemInput) | No | Line items |
Response Example
{
"code": 1,
"quote": {
"reference_no": "3221-1727982977-3f59c5f1",
"incoming_order_id": null,
"venue_id": 3221,
"fulfillment": {
"source": "posabit_v2",
"order_type": "pickup",
"requested_date": null,
"requested_window_start_time": null,
"requested_window_end_time": null,
"tip_amount": 0,
"tip_type": null,
"processing_fee": 300,
"tip_calculated": 0,
"delivery_address": {
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": ""
}
},
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551112222",
"customer_type": "recreational"
},
"payment": {
"requested_payment_method": "cash"
},
"items": [
{
"sku_id": 107907,
"quantity": 1,
"product_id": 800583,
"name": "'oh' McDonald Farms - Nuken (1g)",
"unit_type": "g",
"unit": "1.1",
"variant_id": "k107907",
"quantity_on_hand": 30,
"test_results": {
"thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"cbd": {
"current": 10,
"low": 10,
"high": 10,
"unit_type": "%"
},
"thca": null,
"cbda": null,
"total_thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"total_cbd": null,
"thcv": null,
"cbdv": null,
"cbc": null,
"cbca": null,
"cbcv": null,
"cbn": null,
"cbg": null,
"cbga": null,
"cbgv": null
},
"terpene_results": [],
"product_image": {
"is_product_specific_image": true,
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
},
"discount": 0,
"price": 1500,
"discount_ids": []
}
],
"taxes": [
{
"tax_id": 4286,
"name": "Bellingham, WA",
"price_included": true,
"amount": 93,
"tax_rate": "9.0"
},
{
"tax_id": 4285,
"name": "Cannabis Tax",
"price_included": true,
"amount": 380,
"tax_rate": "37.0"
}
],
"totals": {
"discount_ids": [],
"subtotal": 1500,
"discount": 0,
"tax": 473,
"total": 1500
},
"limits": {
"exceeded_limits": [],
"sum_per_limit": {
"recreational_flower": 1.1
}
}
}
}
/api/v3/incoming_quotes/{id}
Find an incoming quote by reference number
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Quote reference number |
Example
curl -X GET "https://app.posabit.com/api/v3/incoming_quotes/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 404 | Requested reference number or id not found |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_type
|
string | No | Default: recreational |
reference_no
|
string | No | |
subtotal
|
integer | No | Default: 0 |
tax
|
integer | No | Default: 0 |
discount
|
integer | No | Default: 0 |
total
|
integer | No | Default: 0 |
tip_amount
|
integer | No | Default: 0 |
tip_type
|
string | No | |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
telephone
|
string | No | |
customer_id
|
integer | No | |
order_type
|
string | No | Default: pickup |
address
|
string | No | Default: |
city
|
string | No | Default: |
state_abbrev
|
string | No | Default: |
zipcode
|
string | No | Default: |
country
|
string | No | Default: US |
last_name
|
string | No | |
first_name
|
string | No | |
email
|
string | No | |
payment_source
|
string | No | |
requested_payment_method
|
string | No | |
source
|
string | No | Default: posabit_v2 |
requested_date
|
date | No | |
requested_window_start_time
|
time | No | |
requested_window_end_time
|
time | No | |
payment_auth_id
|
string | No | |
tip_calculated
|
integer | No | Default: 0 |
processing_fee
|
integer | No | Default: 0 |
payment_amount
|
integer | No | Default: 0 |
notes
|
text | No | |
ip
|
string | No | |
oauth_token
|
text | No | |
otp
|
string | No | |
birthday
|
date | No | |
client_type
|
string(20) | No | |
fulfillment_method
|
string(20) | No | |
fulfillment_sub_type
|
string(30) | No | |
integrator_id
|
integer | No | |
api_version
|
string(10) | No |
Response Example
{
"code": 1,
"quote": {
"reference_no": "3221-1727814981-bb1314bf",
"incoming_order_id": null,
"venue_id": 3221,
"fulfillment": {
"source": "posabit_v2",
"order_type": "pickup",
"requested_date": null,
"requested_window_start_time": null,
"requested_window_end_time": null,
"tip_amount": 0,
"tip_type": null,
"processing_fee": 300,
"tip_calculated": 0,
"delivery_address": {
"address": "",
"city": "",
"state_abbrev": "",
"zipcode": ""
}
},
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "test@posabit.com",
"telephone": "5551111111",
"customer_type": "recreational"
},
"payment": {
"requested_payment_method": "cash"
},
"items": [
{
"sku_id": 107907,
"quantity": 1,
"product_id": 800583,
"name": "'oh' McDonald Farms - Nuken (1g)",
"unit_type": "g",
"unit": "1.1",
"variant_id": "k107907",
"quantity_on_hand": 30,
"test_results": {
"thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"cbd": {
"current": 10,
"low": 10,
"high": 10,
"unit_type": "%"
},
"thca": null,
"cbda": null,
"total_thc": {
"current": 4.2,
"low": 4.2,
"high": 4.2,
"unit_type": "%"
},
"total_cbd": null,
"thcv": null,
"cbdv": null,
"cbc": null,
"cbca": null,
"cbcv": null,
"cbn": null,
"cbg": null,
"cbga": null,
"cbgv": null
},
"terpene_results": [],
"product_image": {
"is_product_specific_image": true,
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
},
"discount": 0,
"price": 1500,
"discount_ids": []
}
],
"taxes": [],
"totals": {
"discount_ids": [],
"subtotal": 1500,
"discount": 0,
"tax": 473,
"total": 1500
},
"limits": {
"exceeded_limits": [],
"sum_per_limit": {
"recreational_flower": 1.1
}
}
}
}
/api/v3/incoming_quotes/{id}
Update an incoming quote
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
string | path | Yes | Quote reference number |
body
|
QuoteInput | body | Yes | Quote payload, wrapped under the "quote" key |
Example
curl -X PATCH "https://app.posabit.com/api/v3/incoming_quotes/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | Quote reference number (generated when blank) |
fulfillment
|
QuoteFulfillmentInput | No | Fulfillment details |
customer
|
QuoteCustomerInput | No | Customer details |
payment
|
QuotePaymentInput | No | Payment details |
items
|
array (QuoteItemInput) | No | Line items |
Models
QuoteInput
Request body for creating/updating a quote (wrapped under the "quote" key).
| Property | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | Quote reference number (generated when blank) |
fulfillment
|
QuoteFulfillmentInput | No | Fulfillment details |
customer
|
QuoteCustomerInput | No | Customer details |
payment
|
QuotePaymentInput | No | Payment details |
items
|
array (QuoteItemInput) | No | Line items |
QuoteFulfillmentInput
Fulfillment block of a quote request.
| Property | Type | Required | Description |
|---|---|---|---|
source
|
string | No | DEPRECATED: use client_type / fulfillment_method instead. Order source channel. |
order_type
|
string | No | Order type (e.g. pickup, delivery, in_store, kiosk) |
client_type
|
string | No |
Originating client
Allowed values: web, app, kiosk, pos
|
fulfillment_method
|
string | No |
Fulfillment method
Allowed values: pickup, delivery, in_store
|
fulfillment_sub_type
|
string | No |
Fulfillment sub type
Allowed values: drive_thru, curbside, in_store
|
requested_date
|
string | No | Requested date (YYYY-MM-DD) |
requested_window_start_time
|
string | No | Requested pickup/delivery window start time |
requested_window_end_time
|
string | No | Requested pickup/delivery window end time |
tip_amount
|
integer | No | Tip amount in cents |
tip_type
|
string | No | Tip type |
processing_fee
|
integer | No | Processing fee in cents |
delivery_address
|
QuoteDeliveryAddressInput | No | Delivery address |
QuoteDeliveryAddressInput
Delivery address within a quote's fulfillment block.
| Property | Type | Required | Description |
|---|---|---|---|
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
QuoteCustomerInput
Customer block of a quote request.
| Property | Type | Required | Description |
|---|---|---|---|
customer_id
|
integer | No | Existing POSaBIT customer id (links the quote to that customer) |
first_name
|
string | No | Customer first name |
last_name
|
string | No | Customer last name |
email
|
string | No | Customer email |
telephone
|
string | No | Customer phone |
customer_type
|
string | No | Customer type (e.g. recreational, medical) |
QuotePaymentInput
Payment block of a quote request.
| Property | Type | Required | Description |
|---|---|---|---|
requested_payment_method
|
string | No | Requested payment method |
QuoteItemInput
A line item in a quote request (under quote.items). Supply product_id or sku_id.
| Property | Type | Required | Description |
|---|---|---|---|
product_id
|
integer | No | POSaBIT product id |
sku_id
|
integer | No | Inventory SKU id (mapped to inventory_sku_id) |
unit
|
string | No | Unit amount, combined with unit_type into a weight (e.g. "3.5") |
unit_type
|
string | No | Unit type, e.g. "g" |
quantity
|
integer | Yes | Quantity (greater than 0) |
QuoteItemsInput
Body for the items endpoint (wrapped under the "quote" key).
| Property | Type | Required | Description |
|---|---|---|---|
items
|
array (QuoteItemInput) | Yes | Replacement line items |
QuotePaymentAuthInput
Body for ach_payment_auth (wrapped under the "payment" key).
| Property | Type | Required | Description |
|---|---|---|---|
pac
|
string | No | Hypur PAC (personal access code) |
code
|
string | No | Authorization code |
redirect_uri
|
string | No | Redirect URI |
QuoteResponse
Quote as returned by the API. Every endpoint responds with { code, quote: {...} }; this model is the "quote" object.
| Property | Type | Required | Description |
|---|---|---|---|
reference_no
|
string | No | Quote reference number |
incoming_order_id
|
integer | No | Resulting order id (populated after finalize) |
venue_id
|
integer | No | Venue id |
integrator_id
|
integer | No | Integrator id (server-derived) |
api_version
|
string | No | API version that created the quote |
fulfillment
|
QuoteFulfillmentResponse | No | Fulfillment details |
customer
|
QuoteCustomerResponse | No | Customer details |
payment
|
QuotePaymentResponse | No | Payment details |
items
|
array (QuoteItemResponse) | No | Line items |
taxes
|
array (QuoteTaxResponse) | No | Tax summaries |
totals
|
QuoteTotalsResponse | No | Order totals |
limits
|
QuoteLimitsResponse | No | Purchase-limit evaluation |
QuoteFulfillmentResponse
Fulfillment block of a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
source
|
string | No | DEPRECATED: superseded by client_type / fulfillment_method. Order source channel. |
order_type
|
string | No | Order type |
client_type
|
string | No | Originating client |
fulfillment_method
|
string | No | Fulfillment method |
fulfillment_sub_type
|
string | No | Fulfillment sub type |
requested_date
|
string | No | Requested date |
requested_window_start_time
|
string | No | Requested window start time |
requested_window_end_time
|
string | No | Requested window end time |
tip_amount
|
integer | No | Tip amount in cents |
tip_type
|
string | No | Tip type |
processing_fee
|
integer | No | Processing fee in cents |
tip_calculated
|
integer | No | Calculated tip in cents |
delivery_address
|
QuoteDeliveryAddressResponse | No | Delivery address |
QuoteDeliveryAddressResponse
Delivery address within a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
QuoteCustomerResponse
Customer block of a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
first_name
|
string | No | Customer first name |
last_name
|
string | No | Customer last name |
email
|
string | No | Customer email |
telephone
|
string | No | Customer phone |
customer_type
|
string | No | Customer type |
QuotePaymentResponse
Payment block of a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
requested_payment_method
|
string | No | Requested payment method |
QuoteItemResponse
A line item in a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
sku_id
|
integer | No | Inventory SKU id |
product_id
|
integer | No | Product id |
variant_id
|
integer | No | Variant id |
name
|
string | No | Product name |
unit
|
string | No | Unit amount |
unit_type
|
string | No | Unit type |
quantity
|
integer | No | Quantity |
quantity_on_hand
|
float | No | Quantity on hand |
price
|
integer | No | Price in cents |
discount
|
integer | No | Total discount on this line in cents, the sum of the discount_list amounts |
discount_ids
|
array | No | Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown |
discount_list
|
array (QuoteItemDiscountResponse) | No | The discounts applied to this line, one entry per discount, with what each took off |
product_image
|
QuoteItemImageResponse | No | Product image URLs |
test_results
|
QuoteItemTestResultsResponse | No | Cannabinoid measures for the lot behind this line |
terpene_results
|
array (QuoteItemTerpeneResponse) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
QuoteItemDiscountResponse
One discount applied to a line item.
| Property | Type | Required | Description |
|---|---|---|---|
coupon_id
|
integer | No | Discount id, matching the coupons endpoint |
coupon_name
|
string | No | Discount display name, falling back to its internal name |
amount
|
integer | No | Amount this discount took off the line, in cents |
QuoteItemImageResponse
Product image for a line item.
| Property | Type | Required | Description |
|---|---|---|---|
is_product_specific_image
|
boolean | No | Whether the image belongs to this product rather than being inherited |
lg
|
string | No | Large image URL |
md
|
string | No | Medium image URL |
QuoteItemTestResultsResponse
Cannabinoid measures for the lot behind a line item. Every key below is always present; the value is null when the lot has no result for that cannabinoid.
| Property | Type | Required | Description |
|---|---|---|---|
thc
|
QuoteItemMeasureResponse | No | THC measure, or null when the venue's menu does not display it |
thca
|
QuoteItemMeasureResponse | No | THCA measure, or null when the venue's menu does not display it |
total_thc
|
QuoteItemMeasureResponse | No | TOTAL THC measure, or null when the venue's menu does not display it |
thcv
|
QuoteItemMeasureResponse | No | THCV measure, or null when the venue's menu does not display it |
cbd
|
QuoteItemMeasureResponse | No | CBD measure, or null when the venue's menu does not display it |
cbda
|
QuoteItemMeasureResponse | No | CBDA measure, or null when the venue's menu does not display it |
total_cbd
|
QuoteItemMeasureResponse | No | TOTAL CBD measure, or null when the venue's menu does not display it |
cbdv
|
QuoteItemMeasureResponse | No | CBDV measure, or null when the venue's menu does not display it |
cbc
|
QuoteItemMeasureResponse | No | CBC measure, or null when the venue's menu does not display it |
cbca
|
QuoteItemMeasureResponse | No | CBCA measure, or null when the venue's menu does not display it |
cbcv
|
QuoteItemMeasureResponse | No | CBCV measure, or null when the venue's menu does not display it |
cbn
|
QuoteItemMeasureResponse | No | CBN measure, or null when the venue's menu does not display it |
cbg
|
QuoteItemMeasureResponse | No | CBG measure, or null when the venue's menu does not display it |
cbga
|
QuoteItemMeasureResponse | No | CBGA measure, or null when the venue's menu does not display it |
cbgv
|
QuoteItemMeasureResponse | No | CBGV measure, or null when the venue's menu does not display it |
QuoteItemMeasureResponse
One cannabinoid measure. The object is present whenever the venue's menu is configured to display that cannabinoid; its values are null when the lot has no result.
| Property | Type | Required | Description |
|---|---|---|---|
current
|
float | No | Measured value |
low
|
float | No | Low end of the range |
high
|
float | No | High end of the range |
unit_type
|
string | No | Unit the values are expressed in, e.g. % or mg |
QuoteItemTerpeneResponse
One terpene measure for a line item.
| Property | Type | Required | Description |
|---|---|---|---|
name
|
string | No | Terpene name, or "Total Terpenes" for the combined figure |
current
|
string | No | Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures |
low
|
string | No | Low end of the range, formatted the same way |
high
|
string | No | High end of the range, formatted the same way |
unit_type
|
string | No | Unit the values are expressed in |
QuoteTaxResponse
A tax summary line in a quote response.
| Property | Type | Required | Description |
|---|---|---|---|
tax_id
|
integer | No | Tax id |
name
|
string | No | Tax name |
price_included
|
boolean | No | Whether the tax is included in the price |
amount
|
integer | No | Tax amount in cents |
tax_rate
|
float | No | Tax rate |
QuoteTotalsResponse
Totals block of a quote response (amounts in cents).
| Property | Type | Required | Description |
|---|---|---|---|
discount_ids
|
array | No | Ids of applied discounts |
subtotal
|
integer | No | Subtotal in cents |
discount
|
integer | No | Discount in cents |
tax
|
integer | No | Tax in cents |
total
|
integer | No | Total in cents |
QuoteLimitsResponse
Purchase-limit evaluation for the quote.
| Property | Type | Required | Description |
|---|---|---|---|
exceeded_limits
|
array | No | Limits that were exceeded |
sum_per_limit
|
object | No | Summed quantity per limit category |
exceeded_quantities
|
array | No | Quantities that exceeded a limit |
Coupons
5 endpoints/api/v3/venue/coupons/{coupon_id}/coupon_customers
List customers with access to a customer specific coupon
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
coupon_id
|
integer | path | Yes | Coupon ID |
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Not Found |
/api/v3/venue/coupons/{coupon_id}/coupon_customers
Give a customer access to a customer specific coupon
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
coupon_id
|
integer | path | Yes | Coupon ID |
body
|
coupon_customer | body | Yes | JSON formatted body |
Example
curl -X POST "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 201 | Success |
| 401 | Unauthorized |
| 404 | Not Found |
| 422 | Unprocessable Entity |
/api/v3/venue/coupons/{coupon_id}/coupon_customers/{id}
Update a customer's access to a customer specific coupon
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
coupon_id
|
integer | path | Yes | Coupon ID |
id
|
integer | path | Yes | CouponCustomer ID |
body
|
coupon_customer | body | Yes | JSON formatted body |
Example
curl -X PATCH "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Not Found |
| 422 | Unprocessable Entity |
/api/v3/venue/coupons
Get all available coupons for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return coupons updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return coupons updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/coupons" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Example
{
"code": 1,
"total_records": 67,
"current_page": 1,
"total_pages": 67,
"per_page": 1,
"coupons": [
{
"id": 47667,
"kind": "discount",
"applies_to": "item",
"auto_apply": true,
"allow_stacking": true,
"name": "Thirsty Thursday - 10% Off",
"active": true,
"points": "0",
"redeemable_once": false,
"manager_approve": false,
"barcode": "460884203",
"venue_id": 3264,
"external_ref": null,
"amount": 1000,
"coupon_type": "percent",
"rounding": "none",
"expires_at": null,
"starts_at": null,
"image": {
"url": "https://pbit-qa.s3.amazonaws.com/coupons/47667/barcode.png"
},
"background_image": {
"url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/background.png",
"thumb": {
"url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/thumb_background.png"
},
"half_page": {
"url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/half_page_background.png"
}
},
"payment_method_id": null,
"payment_method_total": 0,
"order_type": null,
"order_source": "",
"product_type_ids": [
"",
"4446"
],
"product_ids": [
""
],
"product_tag_ids": [
""
],
"product_brand_ids": [
""
],
"product_strain_ids": [
""
],
"customer_tag_ids": [
""
],
"manifest_item_ids": [
""
],
"supplier_ids": [
""
],
"venue_room_ids": [
""
],
"one_item": false,
"customer_type": "",
"customer_level_ids": [
""
],
"birthday": false,
"product_weights": [
""
],
"min_quantity": null,
"min_amount": 0,
"min_weight": "0.0",
"min_weight_unit": null,
"days": [
"",
"thu"
],
"hours": null,
"hour_start": "",
"hour_end": "",
"created_by": null,
"created_at": "2019-10-21T15:55:35.000Z",
"updated_at": "2021-01-25T19:53:14.000Z",
"clicks": 1,
"inventory_tier_ids": [
""
],
"get_quantity": 1,
"get_product_type_ids": [
""
],
"get_product_ids": [
""
],
"get_product_tag_ids": [
""
],
"get_product_brand_ids": [
""
],
"get_product_strain_ids": [
""
],
"get_supplier_ids": null,
"get_venue_room_ids": null,
"get_manifest_item_ids": null,
"get_product_weights": null,
"get_inventory_tier_ids": null,
"tier_weights": null,
"profile_type": "any",
"first_sale": false,
"is_private": false,
"external_redemption_failure_count": 0
}
]
}
/api/v3/venue/coupons/{id}
Get a single discount
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Discount id |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/coupons/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Models
CouponResponse
A single discount.
| Property | Type | Required | Description |
|---|---|---|---|
coupon
|
Coupon | Yes | The discount |
CouponListResponse
Paginated list of the venue's discounts.
| Property | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Legacy status field, always 1 |
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
coupons
|
array (Coupon) | Yes | Discounts |
Coupon
A discount. The *_ids arrays are the qualifying criteria: a sale line matches when it satisfies every criterion that is set, and criteria left empty impose no restriction. The ids in them are the same ids the other v3 endpoints return -- product tags from product_tags, brands from product_brands, and so on -- and the menu feed reports them per item and per price so a caller can work out which discounts apply.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Discount id |
kind
|
string | No | discount or reward |
applies_to
|
string | No | Whether the discount applies to the order or to individual items |
auto_apply
|
boolean | No | Whether the discount applies without being asked for |
allow_stacking
|
boolean | No | Whether the discount may combine with others |
name
|
string | No | Internal name |
active
|
boolean | No | Whether the discount is active |
points
|
string | No | Loyalty points cost |
redeemable_once
|
boolean | No | Whether a customer may redeem it only once |
manager_approve
|
boolean | No | Whether a manager must approve the redemption |
barcode
|
string | No | Scannable barcode |
owner_id
|
integer | No | Id of the venue or merchant that owns the discount |
owner_type
|
string | No | Venue or Merchant |
external_ref
|
string | No | Identifier in an external system |
amount
|
integer | No | Discount amount, in cents or basis points depending on coupon_type |
coupon_type
|
string | No | How amount is interpreted, e.g. percent or fixed |
rounding
|
string | No | Rounding rule applied to the result |
expires_at
|
datetime | No | When the discount stops being valid |
starts_at
|
datetime | No | When the discount becomes valid |
image
|
string | No | Discount image URL |
background_image
|
string | No | Background image URL |
payment_method_id
|
integer | No | Payment method the discount requires |
payment_method_total
|
integer | No | Amount that must be paid with that method, in cents |
order_type
|
string | No | Order type the discount is limited to |
order_source
|
string | No | Order source the discount is limited to |
product_type_ids
|
array | No | Qualifying criterion: product types the discount applies to. Empty means no restriction |
product_ids
|
array | No | Qualifying criterion: products the discount applies to. Empty means no restriction |
product_tag_ids
|
array | No | Qualifying criterion: product tags the discount applies to. Empty means no restriction |
product_brand_ids
|
array | No | Qualifying criterion: product brands the discount applies to. Empty means no restriction |
product_strain_ids
|
array | No | Qualifying criterion: product strains the discount applies to. Empty means no restriction |
customer_tag_ids
|
array | No | Customer tags the discount is limited to |
manifest_item_ids
|
array | No | Qualifying criterion: lots the discount applies to. Empty means no restriction |
supplier_ids
|
array | No | Qualifying criterion: suppliers the discount applies to. Empty means no restriction |
venue_room_ids
|
array | No | Qualifying criterion: venue rooms the discount applies to. Empty means no restriction |
one_item
|
boolean | No | Whether the discount applies to a single item only |
customer_type
|
string | No | Customer type the discount is limited to |
customer_level_ids
|
array | No | Loyalty levels the discount is limited to |
birthday
|
boolean | No | Whether it applies only around the customer's birthday |
product_weights
|
array | No | Qualifying criterion: display weights the discount applies to. Empty means no restriction |
min_quantity
|
integer | No | Minimum quantity required |
min_amount
|
integer | No | Minimum order or item amount required, in cents |
min_weight
|
string | No | Minimum weight required |
min_weight_unit
|
string | No | Unit of min_weight |
days
|
array | No | Days of week the discount is valid on |
hours
|
string | No | Hours the discount is valid during |
hour_start
|
string | No | Start of the valid window |
hour_end
|
string | No | End of the valid window |
created_by
|
string | No | Who created the discount |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
clicks
|
integer | No | Number of times the discount tile has been clicked |
inventory_tier_ids
|
array | No | Qualifying criterion: pricing tiers the discount applies to. Empty means no restriction |
get_quantity
|
integer | No | Buy-x-get-y: how many items are given |
get_product_type_ids
|
array | No | Buy-x-get-y reward criterion: product types eligible to be given |
get_product_ids
|
array | No | Buy-x-get-y reward criterion: products eligible to be given |
get_product_tag_ids
|
array | No | Buy-x-get-y reward criterion: product tags eligible to be given |
get_product_brand_ids
|
array | No | Buy-x-get-y reward criterion: product brands eligible to be given |
get_product_strain_ids
|
array | No | Buy-x-get-y reward criterion: product strains eligible to be given |
get_supplier_ids
|
array | No | Buy-x-get-y reward criterion: suppliers eligible to be given |
get_venue_room_ids
|
array | No | Buy-x-get-y reward criterion: venue rooms eligible to be given |
get_manifest_item_ids
|
array | No | Buy-x-get-y reward criterion: lots eligible to be given |
get_product_weights
|
array | No | Buy-x-get-y reward criterion: display weights eligible to be given |
get_inventory_tier_ids
|
array | No | Buy-x-get-y reward criterion: pricing tiers eligible to be given |
tier_weights
|
array | No | Qualifying criterion: tier weights the discount applies to. Empty means no restriction |
profile_type
|
string | No | Customer profile the discount is limited to |
first_sale
|
boolean | No | Whether it applies only to a customer's first sale |
is_private
|
boolean | No | Whether the discount is restricted to specific customers, assigned through the coupon_customers endpoint |
external_redemption_failure_count
|
integer | No | Consecutive failures redeeming against the external system |
max_redeem_times
|
integer | No | Maximum number of redemptions |
updated_by
|
string | No | Who last updated the discount |
blocked_venue_ids
|
string | No | Venues the discount is withheld from |
display_name
|
string | No | Customer facing name, when set |
max_amount
|
integer | No | Maximum item price the discount may apply to, in cents. 0 means no limit |
online_menu_tile_image
|
string | No | Menu tile image URL |
display_on_menu_deals
|
boolean | No | Whether the discount shows on the menu deals page |
position
|
integer | No | Sort position on the deals page |
image_assocs_count
|
integer | No | Number of associated images |
excluded_product_ids
|
array | No | Exclusion: products the discount never applies to |
excluded_product_type_ids
|
array | No | Exclusion: product types the discount never applies to |
excluded_product_tag_ids
|
array | No | Exclusion: product tags the discount never applies to |
excluded_product_brand_ids
|
array | No | Exclusion: product brands the discount never applies to |
excluded_product_strain_ids
|
array | No | Exclusion: product strains the discount never applies to |
excluded_supplier_ids
|
array | No | Exclusion: suppliers the discount never applies to |
excluded_venue_room_ids
|
array | No | Exclusion: venue rooms the discount never applies to |
excluded_manifest_item_ids
|
array | No | Exclusion: lots the discount never applies to |
excluded_product_weights
|
array | No | Exclusion: display weights the discount never applies to |
rounding_amount
|
integer | No | Amount to round to, when rounding is set |
integrator_id
|
integer | No | Integrator the discount is limited to |
client_type
|
string | No | Originating client the discount is limited to, e.g. web, app, kiosk, pos |
employee_ids
|
array | No | Employees permitted to apply the discount |
access_levels
|
array | No | Access levels permitted to apply the discount |
images
|
array (CouponImage) | No | Discount images and their size variants |
CouponImage
An image attached to a discount.
| Property | Type | Required | Description |
|---|---|---|---|
name
|
string | No | Image name |
og
|
string | No | Original image URL |
lg
|
string | No | Large (web) image URL |
md
|
string | No | Medium image URL |
thumb
|
string | No | Thumbnail image URL |
Customers
4 endpoints/api/v3/venue/customers
Get all customers for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return customers updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return customers updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[telephone_eq]
|
string | query | No | Filter results using ransack syntax (e.g. q[customer_telephone_eq]='8085550100' would return customers where telephone = 8085550100) |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/customers" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success (returns an array of customers) |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_type
|
string | No | Default: recreational |
active
|
boolean | No | Default: true |
gender
|
string(15) | No | |
loyalty
|
boolean | No | Default: false |
loyalty_number
|
string | No | |
customer_level_id
|
integer | No | |
points
|
integer | Yes | Default: 0 |
lifetime_points
|
integer | Yes | Default: 0 |
birthday
|
date | No | |
first_name
|
string | No | |
full_name
|
string | No | |
id_number
|
string | No | |
id_expiration
|
date | No | |
id_type
|
string | No | Default: drivers_license |
profile_image
|
string | No | |
last_name
|
string | No | |
telephone
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
zipcode
|
string(10) | No | |
address
|
string | No | |
city
|
string | No | Default: |
apns
|
boolean | No | Default: false |
referral_code
|
string | No | Default: |
state
|
string | No | Default: |
email
|
string | No | |
was_first_created_on_pos
|
boolean | No | Default: false |
country
|
string(2) | No | Default: US |
sms_opt_out
|
boolean | No | Default: true |
status
|
string | No | |
employee_hire_date
|
date | No | |
medical_card
|
string | No | |
medical_card_exp
|
date | No | |
caregiver_id
|
string | No | |
caregiver_id_exp
|
date | No | |
loyalty_member_since
|
date | No | |
sms_reachable
|
boolean | Yes | Default: true |
sms_sent_at
|
datetime | No | |
coupons_count
|
integer | Yes | Default: 0 |
reviewed
|
boolean | No | Default: false |
terms_agreed
|
boolean | No | Default: false |
referral_source
|
string | No | |
ext_signature_src
|
string | No | |
certifying_provider
|
string | No | |
sms_opt_source
|
string | No | |
custom_allotment
|
string | No | |
medical_card_state
|
string | No | |
token
|
string | No | |
token_expires_at
|
datetime | No | |
medical_card_effective
|
date | No | |
core_token
|
string | No | |
one_time_pin
|
string | No | |
otp_expires_at
|
datetime | No | |
core_consumer_ref
|
string | No | |
last_online_login
|
datetime | No | |
online_account_created_at
|
datetime | No | |
sms_first_message_sent_at
|
datetime | No | |
middle_name
|
string | No | |
doctor_id
|
integer | No | |
caregiver_first_name
|
string | No | |
caregiver_last_name
|
string | No | |
recommendation_issue_date
|
date | No | |
refills_authorized
|
string | No |
Response Example
{
"total_records": 34,
"current_page": 1,
"total_pages": 34,
"per_page": 1,
"customers": [
{
"customer": {
"id": 279160,
"first_name": "Jane",
"last_name": "Doe",
"birth_year": null,
"gender": "female",
"telephone": "5551111111",
"email": "test@gmail.com",
"active": true,
"sms_opt_out": false,
"sms_opt_in": true,
"signature": "",
"address": "",
"zipcode": "98033",
"city": "",
"state": "WA",
"birthday": null,
"customer_type": "medical",
"terms_agreed": false,
"points": 105
}
}
]
}
/api/v3/venue/customers
Create a Customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
customer | body | Yes | JSON formatted body |
Example
curl -X POST "https://app.posabit.com/api/v3/venue/customers" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"first_name": "Test",
"last_name": "User",
"gender": "female",
"telephone": "5551234567",
"email": "test@posabit.com",
"active": 1,
"sms_opt_out": 1,
"address": "123 water lane",
"zipcode": "12345",
"city": "Seattle",
"state": "WA",
"birthday": "01/01/1990",
"terms_agreed": 1,
"customer_type": "medical"
}
}'
Request Body
{
"customer": {
"first_name": "Test",
"last_name": "User",
"gender": "female",
"telephone": "5551234567",
"email": "test@posabit.com",
"active": 1,
"sms_opt_out": 1,
"address": "123 water lane",
"zipcode": "12345",
"city": "Seattle",
"state": "WA",
"birthday": "01/01/1990",
"terms_agreed": 1,
"customer_type": "medical"
}
}
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 204 | Record not found |
| 400 | Bad Request |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer Id (Read-only) |
first_name
|
string | No | First Name (in responses, requires enhanced_customer_data_access) |
last_name
|
string | No | Last Name (in responses, requires enhanced_customer_data_access) |
birth_year
|
integer | No | Birth Year (Read-only) |
gender
|
string | No | Gender |
telephone
|
string | No | Telephone (Update not allowed) |
email
|
string | No | |
active
|
boolean | No | Active |
sms_opt_out
|
boolean | No | SMS Opt Out |
sms_opt_in
|
boolean | No | SMS Opt In (Read-only) |
signature
|
string | No | Signature (base64 encoded jpeg) (Input only; not returned in responses) |
address
|
string | No | Address |
zipcode
|
string | No | ZIP Code |
city
|
string | No | City |
state
|
string | No | State |
birthday
|
string | No | Birthday |
customer_type
|
string | No | Customer Type |
id_expiration
|
string | No | ID expiration date (Read-only; requires enhanced_customer_data_access) |
medical_card_expiration
|
string | No | Medical card expiration date (Read-only; requires enhanced_customer_data_access) |
drivers_license
|
string | No | Driver's license / ID number (Read-only; requires enhanced_customer_data_access) |
customer_tags
|
array | No | Customer tags (Read-only; requires enhanced_customer_data_access) |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
integer | No | Points (Read-only) |
points_adjustment
|
string | No | Points to add or subtract (Input only; not returned in responses) |
loyalty
|
boolean | No | Loyalty enrolled (Read-only) |
loyalty_number
|
string | No | Loyalty number (Read-only) |
qr_code
|
string | No | Loyalty QR code (Read-only) |
created_at
|
string | No | Created timestamp (Read-only) |
updated_at
|
string | No | Updated timestamp (Read-only) |
Response Example
{
"customer": {
"id": 279160,
"first_name": "Jane",
"last_name": "Doe",
"birth_year": null,
"gender": "female",
"telephone": "5551111111",
"email": "test@gmail.com",
"active": true,
"sms_opt_out": false,
"sms_opt_in": true,
"signature": "",
"address": "",
"zipcode": "98033",
"city": "",
"state": "WA",
"birthday": null,
"customer_type": "medical",
"terms_agreed": false,
"points": 105
}
}
/api/v3/venue/customers/{id}
Read a customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Customer ID |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/customers/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_type
|
string | No | Default: recreational |
active
|
boolean | No | Default: true |
gender
|
string(15) | No | |
loyalty
|
boolean | No | Default: false |
loyalty_number
|
string | No | |
customer_level_id
|
integer | No | |
points
|
integer | Yes | Default: 0 |
lifetime_points
|
integer | Yes | Default: 0 |
birthday
|
date | No | |
first_name
|
string | No | |
full_name
|
string | No | |
id_number
|
string | No | |
id_expiration
|
date | No | |
id_type
|
string | No | Default: drivers_license |
profile_image
|
string | No | |
last_name
|
string | No | |
telephone
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
zipcode
|
string(10) | No | |
address
|
string | No | |
city
|
string | No | Default: |
apns
|
boolean | No | Default: false |
referral_code
|
string | No | Default: |
state
|
string | No | Default: |
email
|
string | No | |
was_first_created_on_pos
|
boolean | No | Default: false |
country
|
string(2) | No | Default: US |
sms_opt_out
|
boolean | No | Default: true |
status
|
string | No | |
employee_hire_date
|
date | No | |
medical_card
|
string | No | |
medical_card_exp
|
date | No | |
caregiver_id
|
string | No | |
caregiver_id_exp
|
date | No | |
loyalty_member_since
|
date | No | |
sms_reachable
|
boolean | Yes | Default: true |
sms_sent_at
|
datetime | No | |
coupons_count
|
integer | Yes | Default: 0 |
reviewed
|
boolean | No | Default: false |
terms_agreed
|
boolean | No | Default: false |
referral_source
|
string | No | |
ext_signature_src
|
string | No | |
certifying_provider
|
string | No | |
sms_opt_source
|
string | No | |
custom_allotment
|
string | No | |
medical_card_state
|
string | No | |
token
|
string | No | |
token_expires_at
|
datetime | No | |
medical_card_effective
|
date | No | |
core_token
|
string | No | |
one_time_pin
|
string | No | |
otp_expires_at
|
datetime | No | |
core_consumer_ref
|
string | No | |
last_online_login
|
datetime | No | |
online_account_created_at
|
datetime | No | |
sms_first_message_sent_at
|
datetime | No | |
middle_name
|
string | No | |
doctor_id
|
integer | No | |
caregiver_first_name
|
string | No | |
caregiver_last_name
|
string | No | |
recommendation_issue_date
|
date | No | |
refills_authorized
|
string | No |
Response Example
{
"customer": {
"id": 279160,
"first_name": "Jane",
"last_name": "Doe",
"birth_year": null,
"gender": "female",
"telephone": "5551111111",
"email": "test@gmail.com",
"active": true,
"sms_opt_out": false,
"sms_opt_in": true,
"signature": "",
"address": "",
"zipcode": "98033",
"city": "",
"state": "WA",
"birthday": null,
"customer_type": "medical",
"terms_agreed": false,
"points": 105
}
}
/api/v3/venue/customers/{id}
Update a Customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Customer ID |
body
|
customer | body | Yes | JSON formatted body |
Example
curl -X PATCH "https://app.posabit.com/api/v3/venue/customers/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 204 | Record not found |
| 400 | Bad Request |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer Id (Read-only) |
first_name
|
string | No | First Name (in responses, requires enhanced_customer_data_access) |
last_name
|
string | No | Last Name (in responses, requires enhanced_customer_data_access) |
birth_year
|
integer | No | Birth Year (Read-only) |
gender
|
string | No | Gender |
telephone
|
string | No | Telephone (Update not allowed) |
email
|
string | No | |
active
|
boolean | No | Active |
sms_opt_out
|
boolean | No | SMS Opt Out |
sms_opt_in
|
boolean | No | SMS Opt In (Read-only) |
signature
|
string | No | Signature (base64 encoded jpeg) (Input only; not returned in responses) |
address
|
string | No | Address |
zipcode
|
string | No | ZIP Code |
city
|
string | No | City |
state
|
string | No | State |
birthday
|
string | No | Birthday |
customer_type
|
string | No | Customer Type |
id_expiration
|
string | No | ID expiration date (Read-only; requires enhanced_customer_data_access) |
medical_card_expiration
|
string | No | Medical card expiration date (Read-only; requires enhanced_customer_data_access) |
drivers_license
|
string | No | Driver's license / ID number (Read-only; requires enhanced_customer_data_access) |
customer_tags
|
array | No | Customer tags (Read-only; requires enhanced_customer_data_access) |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
integer | No | Points (Read-only) |
points_adjustment
|
string | No | Points to add or subtract (Input only; not returned in responses) |
loyalty
|
boolean | No | Loyalty enrolled (Read-only) |
loyalty_number
|
string | No | Loyalty number (Read-only) |
qr_code
|
string | No | Loyalty QR code (Read-only) |
created_at
|
string | No | Created timestamp (Read-only) |
updated_at
|
string | No | Updated timestamp (Read-only) |
Models
customer
A Customer. Used for both request bodies (create/update) and responses; fields marked Read-only or Input only apply to a single direction.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer Id (Read-only) |
first_name
|
string | No | First Name (in responses, requires enhanced_customer_data_access) |
last_name
|
string | No | Last Name (in responses, requires enhanced_customer_data_access) |
birth_year
|
integer | No | Birth Year (Read-only) |
gender
|
string | No | Gender |
telephone
|
string | No | Telephone (Update not allowed) |
email
|
string | No | |
active
|
boolean | No | Active |
sms_opt_out
|
boolean | No | SMS Opt Out |
sms_opt_in
|
boolean | No | SMS Opt In (Read-only) |
signature
|
string | No | Signature (base64 encoded jpeg) (Input only; not returned in responses) |
address
|
string | No | Address |
zipcode
|
string | No | ZIP Code |
city
|
string | No | City |
state
|
string | No | State |
birthday
|
string | No | Birthday |
customer_type
|
string | No | Customer Type |
id_expiration
|
string | No | ID expiration date (Read-only; requires enhanced_customer_data_access) |
medical_card_expiration
|
string | No | Medical card expiration date (Read-only; requires enhanced_customer_data_access) |
drivers_license
|
string | No | Driver's license / ID number (Read-only; requires enhanced_customer_data_access) |
customer_tags
|
array | No | Customer tags (Read-only; requires enhanced_customer_data_access) |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
integer | No | Points (Read-only) |
points_adjustment
|
string | No | Points to add or subtract (Input only; not returned in responses) |
loyalty
|
boolean | No | Loyalty enrolled (Read-only) |
loyalty_number
|
string | No | Loyalty number (Read-only) |
qr_code
|
string | No | Loyalty QR code (Read-only) |
created_at
|
string | No | Created timestamp (Read-only) |
updated_at
|
string | No | Updated timestamp (Read-only) |
customers
Paginated list of customers. Each element of the customers array is itself wrapped under a "customer" key.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
customers
|
array | Yes | customer |
Customer Tags
1 endpoints-
GET
/api/v3/venue/customer_tags
Endpoints
Models
/api/v3/venue/customer_tags
Get the merchant's active customer tags
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return customer tags updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return customer tags updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/customer_tags" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
active
|
boolean | No | Default: true |
pos_enabled
|
boolean | Yes | Default: true |
manager_approval
|
boolean | Yes | Default: false |
description
|
string(500) | No | |
discount_limit
|
decimal | No | |
taggings_count
|
integer | No | Default: 0 |
color
|
string(7) | No | |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes |
Response Example
{
"total_records": 13,
"current_page": 1,
"total_pages": 1,
"per_page": 1000,
"customer_tags": [
{
"id": 1,
"merchant_id": 7684,
"name": "veteran",
"active": true,
"pos_enabled": true,
"description": "",
"discount_limit": null,
"taggings_count": 2226,
"color": "#AE2014",
"created_at": "2019-05-30T22:49:21.000Z",
"updated_at": "2019-10-07T19:47:10.000Z"
},
{
"id": 2,
"merchant_id": 7684,
"name": "Industry",
"active": true,
"pos_enabled": true,
"description": "",
"discount_limit": null,
"taggings_count": 275,
"color": "#5B77D0",
"created_at": "2019-06-03T16:58:55.000Z",
"updated_at": "2019-10-07T19:47:17.000Z"
}
]
}
Models
CustomerTagListResponse
Paginated list of the merchant's active customer tags.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
customer_tags
|
array (CustomerTag) | Yes | Customer tags |
CustomerTag
A customer tag. Only active tags are returned.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer tag id |
merchant_id
|
integer | No | Merchant id |
name
|
string | No | Tag name |
description
|
string | No | Tag description |
color
|
string | No | Display colour |
active
|
boolean | No | Whether the tag is active |
pos_enabled
|
boolean | No | Whether the tag is selectable in the POS |
discount_limit
|
float | No | Maximum discount allowed for customers with this tag |
taggings_count
|
integer | No | Number of customers carrying the tag |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Customer Queues
1 endpoints-
GET
/api/v3/venue/customer_queues
Endpoints
Models
/api/v3/venue/customer_queues
Get the venue's available customer queue entries
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page |
q[updated_at_gt]
|
datestring | query | No | Only return customer queue entries updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return customer queue entries updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/customer_queues" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_id
|
integer | No | |
name
|
string | No | |
source
|
string | No | |
created_on
|
date | No | |
queue
|
integer | No | |
pickup
|
boolean | No | Default: false |
aasm_state
|
string | No | |
customer_notes
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
processed_at
|
datetime | No | |
birthday
|
date | No | |
scan_data
|
json | No |
Response Example
{
"total_records": 2,
"current_page": 1,
"total_pages": 1,
"per_page": 50,
"customer_queues": [
{
"queue": 1,
"customer_queue_id": 5355,
"customer_id": 183218,
"user_id": 12507,
"user_name": "Test User",
"name": "John Doe",
"telephone": "",
"birth_year": 1959,
"sms_opt_out": false,
"sms_opt_in": true,
"email": "test@gmail.com",
"source": "walk_in",
"pickup": false,
"created_on": "2024-10-03",
"aasm_state": "open",
"customer_notes": null,
"created_at": "2024-10-03T20:04:14.000Z",
"updated_at": "2024-10-03T20:04:14.000Z",
"processed_at": null,
"saved_order": "",
"saved_order_data": "",
"saved_order_total": ""
},
{
"queue": 2,
"customer_queue_id": 5356,
"customer_id": 183219,
"user_id": 12507,
"user_name": "Test User",
"name": "Jane Doe",
"telephone": "",
"birth_year": 1975,
"sms_opt_out": true,
"sms_opt_in": false,
"email": "test@gmail.com",
"source": "walk_in",
"pickup": false,
"created_on": "2024-10-03",
"aasm_state": "open",
"customer_notes": null,
"created_at": "2024-10-03T20:04:16.000Z",
"updated_at": "2024-10-03T20:04:16.000Z",
"processed_at": null,
"saved_order": "",
"saved_order_data": "",
"saved_order_total": ""
}
]
}
Models
CustomerQueueListResponse
Paginated list of the venue's available queue entries.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
customer_queues
|
array (CustomerQueueEntry) | Yes | Queue entries |
CustomerQueueEntry
One customer waiting in a queue. The personal detail fields require enhanced_customer_data_access on the venue token and are omitted without it.
| Property | Type | Required | Description |
|---|---|---|---|
customer_queue_id
|
integer | Yes | Queue entry id |
queue
|
string | No | Which queue the customer is in |
aasm_state
|
string | No | Entry state |
customer_id
|
integer | No | Customer id, when the entry is linked to a customer record |
user_id
|
integer | No | Id of the employee handling the entry |
user_name
|
string | No | Full name of that employee. Omitted when no employee is assigned |
name
|
string | No | Customer name. Requires enhanced_customer_data_access |
telephone
|
string | No | Telephone. Requires enhanced_customer_data_access |
email
|
string | No | Email. Requires enhanced_customer_data_access |
birth_year
|
integer | No | Year of birth. Requires enhanced_customer_data_access |
sms_opt_in
|
boolean | No | SMS opt in. Requires enhanced_customer_data_access |
sms_opt_out
|
boolean | No | SMS opt out. Requires enhanced_customer_data_access |
customer_notes
|
string | No | Notes about the customer. Requires enhanced_customer_data_access |
source
|
string | No | Where the entry came from |
pickup
|
boolean | No | Whether the customer is here for a pickup |
created_on
|
string | No | Date the entry was created (a date, not a timestamp) |
processed_at
|
datetime | No | When the entry was processed |
saved_order
|
string | No | Always an empty string. Retained for backwards compatibility |
saved_order_data
|
string | No | Always an empty string. Retained for backwards compatibility |
saved_order_total
|
string | No | Always an empty string. Retained for backwards compatibility |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Inventories
3 endpoints/api/v3/venue/inventories
Get all inventories for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 100, max 100) |
q[updated_at_gt]
|
datestring | query | No | Only return inventory records updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return inventory records updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/inventories" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_id
|
integer | Yes | |
tier_id
|
integer | No | |
barcode
|
string | No | |
price
|
integer | Yes | Default: 0 |
last_price
|
integer | No | |
cost
|
integer | Yes | Default: 0 |
discountable
|
boolean | Yes | Default: true |
quantity_on_hand
|
decimal | Yes | Default: 0.0 |
optimum_level
|
integer | No | Default: 0 |
reorder_threshold
|
integer | No | |
calc_threshold
|
integer | No | |
last_replenish_date
|
datetime | No | |
velocity
|
decimal | Yes | Default: 0.0 |
sold
|
integer | Yes | Default: 0 |
days_supply
|
integer | Yes | Default: 0 |
avg_cost
|
integer | No | |
avg_price
|
integer | No | |
sync_expires_at
|
datetime | No | |
last_order
|
datetime | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
supplier_id
|
integer | No | |
updated_by
|
string | No | |
unit
|
string(15) | Yes | Default: units |
weight
|
decimal | Yes | Default: 0.0 |
weight_unit
|
string(15) | No | |
is_active
|
boolean | No | Default: true |
notes
|
text | No | |
sellable_quantity
|
decimal | Yes | Default: 0.0 |
ecomm_quantity
|
decimal | Yes | Default: 0.0 |
allow_undercost
|
boolean | Yes | Default: false |
manifest_items_count
|
integer | No | Default: 0 |
thc
|
decimal | No | |
cbd
|
decimal | No | |
cbn
|
decimal | No | |
equivalent_weight
|
decimal | No | |
equivalent_unit
|
string | No | |
thc_min
|
decimal | No | |
thc_max
|
decimal | No | |
cbd_min
|
decimal | No | |
cbd_max
|
decimal | No | |
cbn_min
|
decimal | No | |
cbn_max
|
decimal | No | |
api_id
|
string | No | |
inheritor_id
|
integer | No | |
med_price
|
integer | No | |
terpenes
|
text | No | |
manifest_transfer_date
|
date | No | |
thca
|
decimal | No | |
thca_min
|
decimal | No | |
thca_max
|
decimal | No | |
cbda
|
decimal | No | |
cbda_min
|
decimal | No | |
cbda_max
|
decimal | No | |
total_thc
|
decimal | No | |
total_thc_min
|
decimal | No | |
total_thc_max
|
decimal | No | |
producer_id
|
integer | No | |
doh_compliant
|
boolean | No | Default: false |
total_cbd
|
decimal | No | |
total_cbd_min
|
decimal | No | |
total_cbd_max
|
decimal | No | |
last_received_quantity
|
decimal | No | Default: 0.0 |
Response Example
{
"total_records": 1161,
"current_page": 1,
"total_pages": 1161,
"per_page": 1,
"inventory": [
{
"id": 210113,
"product_id": 902429,
"name": "Phat Panda - Lemon Danish Glaze",
"unit": "280.0 gm",
"price": 1300,
"med_price": null,
"last_price": 1300,
"quantity_on_hand": "369.7",
"sellable_quantity": "369.7",
"ecomm_quantity": "369.7",
"vendor": "PIONEER PRODUCTION AND PROCESSING",
"vendor_license": null,
"brand": "Phat Panda",
"category": "Bulk Flower",
"flower_type": "hybrid",
"concentrate_type": null,
"product_type": "hybrid",
"product_family": "Flower",
"description": "A perfect wake and bake strain. Sweet lemon and mell...",
"image": [
null
],
"active": false,
"bulk_item": true,
"strain": "Lemon Danish",
"thc_measure": "21.5%",
"cbd_measure": "0.7%",
"sku": "3264-902429",
"discountable": true,
"tier_name": "Top Shelf Tier",
"created_at": "2019-10-16T20:37:49.000Z",
"updated_at": "2022-07-05T17:31:23.000Z",
"rooms": [
{
"Display Case 3": "369.7"
}
]
}
]
}
/api/v3/venue/inventories/{id}
Get a single inventory for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Inventory SKU id |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/inventories/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Inventory not found |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_id
|
integer | Yes | |
tier_id
|
integer | No | |
barcode
|
string | No | |
price
|
integer | Yes | Default: 0 |
last_price
|
integer | No | |
cost
|
integer | Yes | Default: 0 |
discountable
|
boolean | Yes | Default: true |
quantity_on_hand
|
decimal | Yes | Default: 0.0 |
optimum_level
|
integer | No | Default: 0 |
reorder_threshold
|
integer | No | |
calc_threshold
|
integer | No | |
last_replenish_date
|
datetime | No | |
velocity
|
decimal | Yes | Default: 0.0 |
sold
|
integer | Yes | Default: 0 |
days_supply
|
integer | Yes | Default: 0 |
avg_cost
|
integer | No | |
avg_price
|
integer | No | |
sync_expires_at
|
datetime | No | |
last_order
|
datetime | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
supplier_id
|
integer | No | |
updated_by
|
string | No | |
unit
|
string(15) | Yes | Default: units |
weight
|
decimal | Yes | Default: 0.0 |
weight_unit
|
string(15) | No | |
is_active
|
boolean | No | Default: true |
notes
|
text | No | |
sellable_quantity
|
decimal | Yes | Default: 0.0 |
ecomm_quantity
|
decimal | Yes | Default: 0.0 |
allow_undercost
|
boolean | Yes | Default: false |
manifest_items_count
|
integer | No | Default: 0 |
thc
|
decimal | No | |
cbd
|
decimal | No | |
cbn
|
decimal | No | |
equivalent_weight
|
decimal | No | |
equivalent_unit
|
string | No | |
thc_min
|
decimal | No | |
thc_max
|
decimal | No | |
cbd_min
|
decimal | No | |
cbd_max
|
decimal | No | |
cbn_min
|
decimal | No | |
cbn_max
|
decimal | No | |
api_id
|
string | No | |
inheritor_id
|
integer | No | |
med_price
|
integer | No | |
terpenes
|
text | No | |
manifest_transfer_date
|
date | No | |
thca
|
decimal | No | |
thca_min
|
decimal | No | |
thca_max
|
decimal | No | |
cbda
|
decimal | No | |
cbda_min
|
decimal | No | |
cbda_max
|
decimal | No | |
total_thc
|
decimal | No | |
total_thc_min
|
decimal | No | |
total_thc_max
|
decimal | No | |
producer_id
|
integer | No | |
doh_compliant
|
boolean | No | Default: false |
total_cbd
|
decimal | No | |
total_cbd_min
|
decimal | No | |
total_cbd_max
|
decimal | No | |
last_received_quantity
|
decimal | No | Default: 0.0 |
Response Example
{
"id": 107890,
"product_id": 800566,
"name": " zz Panacea - Cherry OG Trim (14g)",
"unit": "14.0 gm",
"price": 1000,
"med_price": null,
"last_price": 5400,
"quantity_on_hand": "95.0",
"sellable_quantity": "94.0",
"ecomm_quantity": "94.0",
"vendor": "Solar Joes",
"vendor_license": "415819",
"brand": "Panacea",
"category": "Flower",
"compliance_type": "Usable Cannabis",
"flower_type": "hybrid",
"concentrate_type": null,
"product_type": "hybrid",
"product_family": "Flower",
"tags": [
"Industry",
"Sale Day"
],
"description": "Double trimmed premium shake bag with Cherry OG, a very balanced hybrid. Great flavors.",
"description_html": "<div>Double <strong>trimmed</strong> premium <em>shake</em> bag with <del>Cherry</del> OG, a very balanced hybrid. Great flavors.</div>",
"image": [
"https://pbit-staging.s3.amazonaws.com/images/image/3194/leaf_2.jpeg"
],
"active": true,
"bulk_item": true,
"strain": "Cherry OG Trim",
"thc_measure": "61.9%",
"thca_measure": "0.0",
"total_thc_measure": "0.0",
"cbd_measure": "5.4%",
"cbda_measure": "0.0",
"total_cbd_measure": "0.0",
"sku": "6033512330004399",
"discountable": true,
"tier_name": "Top Tier",
"doh_compliant": false,
"tier_prices": [
{
"weight": "1.0",
"weight_unit": "grams",
"weight_in_grams": 1,
"price": 1000,
"med_price": null
},
{
"weight": "3.5",
"weight_unit": "grams",
"weight_in_grams": 3.5,
"price": 3000,
"med_price": null
},
{
"weight": "7.0",
"weight_unit": "grams",
"weight_in_grams": 7,
"price": 5500,
"med_price": null
},
{
"weight": "14.0",
"weight_unit": "grams",
"weight_in_grams": 14,
"price": 10000,
"med_price": null
}
],
"terpenes": [],
"effects": [],
"flavors": [],
"images": [
{
"name": "leaf_2.jpeg",
"og": "https://pbit-staging.s3.amazonaws.com/images/image/3194/leaf_2.jpeg",
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/3194/web_leaf_2.jpeg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/3194/medium_leaf_2.jpeg",
"thumb": "https://pbit-staging.s3.amazonaws.com/images/image/3194/thumb_leaf_2.jpeg",
"is_product_specific_image": true,
"position": 1
},
{
"name": "brand.jpeg",
"og": "https://pbit-staging.s3.amazonaws.com/images/image/2620/brand.jpeg",
"lg": "https://pbit-staging.s3.amazonaws.com/images/image/2620/web_brand.jpeg",
"md": "https://pbit-staging.s3.amazonaws.com/images/image/2620/medium_brand.jpeg",
"thumb": "https://pbit-staging.s3.amazonaws.com/images/image/2620/thumb_brand.jpeg",
"is_product_specific_image": true,
"position": 4
}
],
"created_at": "2018-08-08T18:37:47.000Z",
"updated_at": "2024-12-10T18:54:53.000Z"
}
/api/v3/venue/inventories/{id}
Update pricing for a single inventory
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Inventory SKU id |
body
|
InventoryUpdateInput | body | Yes | Pricing payload, wrapped under the "inventory_sku" key |
Example
curl -X PATCH "https://app.posabit.com/api/v3/venue/inventories/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Inventory not found |
| 422 | No valid attributes to update / validation failed |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
price
|
float | No | Retail (recreational) price |
med_price
|
float | No | Medical price |
last_price
|
float | No | Previous price (used to show strike-through / sale pricing) |
Models
InventoryUpdateInput
Pricing fields that may be updated on an inventory SKU (wrapped under the "inventory_sku" key).
| Property | Type | Required | Description |
|---|---|---|---|
price
|
float | No | Retail (recreational) price |
med_price
|
float | No | Medical price |
last_price
|
float | No | Previous price (used to show strike-through / sale pricing) |
InventoryResponse
An inventory SKU as returned by the index action. Enterprise-only fields require advanced_inventory_access.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Inventory SKU id |
product_id
|
integer | No | Product id |
active
|
boolean | No | Whether the SKU is active |
name
|
string | No | Product name |
display_name
|
string | No | Display name (falls back to product name) |
description
|
string | No | Plain-text product description (HTML stripped) |
unit
|
string | No | Unit size, weight plus short unit (e.g. "1.0 g") |
image
|
array | No | Cover image URL(s) |
description_html
|
string | No | Enterprise only. Product description including HTML |
internal_product_identifier
|
string | No | Enterprise only. Internal product id |
price
|
float | No | Enterprise only. Retail (recreational) price |
med_price
|
float | No | Enterprise only. Medical price (null unless the venue uses medical pricing) |
last_price
|
float | No | Enterprise only. Previous price (for strike-through / sale display) |
tier_name
|
string | No | Enterprise only. Pricing tier name (weighable products only) |
quantity_on_hand
|
float | No | Enterprise only. Quantity on hand |
sellable_quantity
|
float | No | Enterprise only. Quantity available to sell |
ecomm_quantity
|
float | No | Enterprise only. Quantity available for e-commerce |
vendor_id
|
integer | No | Enterprise only. Supplier id |
vendor
|
string | No | Enterprise only. Supplier name |
vendor_license
|
string | No | Enterprise only. Supplier license number |
brand
|
string | No | Enterprise only. Product brand name |
category
|
string | No | Enterprise only. Product type / category name |
compliance_type
|
string | No | Enterprise only. Product type external (compliance) name |
flower_type
|
string | No | Enterprise only. Flower type |
concentrate_type
|
string | No | Enterprise only. Concentrate type |
product_type
|
string | No | Enterprise only. Concentrate type, else flower type, else blank |
product_family
|
string | No | Enterprise only. Product family name |
pack_size
|
string | No | Enterprise only. Pack size |
tags
|
array | No | Enterprise only. Product tags for the venue |
bulk_item
|
boolean | No | Enterprise only. Whether the product is weighable / sold in bulk |
strain
|
string | No | Enterprise only. Product strain name |
thc_measure
|
string | No | Enterprise only. THC measure (from the first lot) |
cbd_measure
|
string | No | Enterprise only. CBD measure (from the first lot) |
sku
|
string | No | Enterprise only. SKU barcode |
discountable
|
boolean | No | Enterprise only. Whether the SKU is discountable |
doh_compliant
|
boolean | No | Enterprise only. DOH compliance flag (CCRS regions only) |
terpenes
|
array | No | Enterprise only. Terpenes |
effects
|
array | No | Enterprise only. Effect trait names |
flavors
|
array | No | Enterprise only. Flavor trait names |
rooms
|
object | No | Enterprise only. Map of room name to quantity on hand (rooms with positive quantity only) |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
InventoryDetailResponse
An inventory SKU as returned by the show / update actions. Includes the index fields plus tier pricing, full cannabinoid measures and image variants. Enterprise-only fields require advanced_inventory_access.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Inventory SKU id |
product_id
|
integer | No | Product id |
active
|
boolean | No | Whether the SKU is active |
name
|
string | No | Product name |
display_name
|
string | No | Display name (falls back to product name) |
unit
|
string | No | Unit size, weight plus short unit (e.g. "1.0 g") |
description
|
string | No | Plain-text product description (HTML stripped) |
image
|
array | No | Cover image URL(s) |
description_html
|
string | No | Enterprise only. Product description including HTML |
internal_product_identifier
|
string | No | Enterprise only. Internal product id |
price
|
float | No | Enterprise only. Retail (recreational) price |
med_price
|
float | No | Enterprise only. Medical price |
last_price
|
float | No | Enterprise only. Previous price (for strike-through / sale display) |
quantity_on_hand
|
float | No | Enterprise only. Quantity on hand |
sellable_quantity
|
float | No | Enterprise only. Quantity available to sell |
ecomm_quantity
|
float | No | Enterprise only. Quantity available for e-commerce |
vendor
|
string | No | Enterprise only. Supplier name |
vendor_license
|
string | No | Enterprise only. Supplier license number |
brand
|
string | No | Enterprise only. Product brand name |
category
|
string | No | Enterprise only. Product type / category name |
compliance_type
|
string | No | Enterprise only. Product type external (compliance) name |
flower_type
|
string | No | Enterprise only. Flower type |
concentrate_type
|
string | No | Enterprise only. Concentrate type |
product_type
|
string | No | Enterprise only. Concentrate type, else flower type, else blank (kept for backwards compatibility) |
product_family
|
string | No | Enterprise only. Product family name |
pack_size
|
string | No | Enterprise only. Pack size |
tags
|
array | No | Enterprise only. Product tags for the venue |
bulk_item
|
boolean | No | Enterprise only. Whether the product is weighable / sold in bulk |
strain
|
string | No | Enterprise only. Product strain name |
thc_measure
|
string | No | Enterprise only. THC measure (from the first lot) |
thca_measure
|
string | No | Enterprise only. THCA measure (from the first lot) |
total_thc_measure
|
string | No | Enterprise only. Total THC measure (from the first lot) |
cbd_measure
|
string | No | Enterprise only. CBD measure (from the first lot) |
cbda_measure
|
string | No | Enterprise only. CBDA measure (from the first lot) |
total_cbd_measure
|
string | No | Enterprise only. Total CBD measure (from the first lot) |
sku
|
string | No | Enterprise only. SKU barcode |
discountable
|
boolean | No | Enterprise only. Whether the SKU is discountable |
tier_name
|
string | No | Enterprise only. Pricing tier name (weighable products only) |
doh_compliant
|
boolean | No | Enterprise only. DOH compliance flag (CCRS regions only) |
tier_prices
|
array (InventoryTierPrice) | No | Enterprise only. Tier pricing by weight |
terpenes
|
array | No | Enterprise only. Terpenes |
effects
|
array | No | Enterprise only. Effect names |
flavors
|
array | No | Enterprise only. Flavor names |
images
|
array (InventoryImage) | No | Enterprise only. Product image variants |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
InventoryTierPrice
A tier price entry for a weighable product (only weights with a price or med_price are returned).
| Property | Type | Required | Description |
|---|---|---|---|
weight
|
string | No | Tier weight |
weight_unit
|
string | No | Tier weight unit |
weight_in_grams
|
float | No | Tier weight in grams (rounded to 2 decimals) |
price
|
float | No | Retail (recreational) price for this weight |
med_price
|
float | No | Medical price for this weight |
InventoryImage
A product image with its rendered size variants.
| Property | Type | Required | Description |
|---|---|---|---|
name
|
string | No | Image name |
og
|
string | No | Original image URL |
lg
|
string | No | Large (web) image URL |
md
|
string | No | Medium image URL |
thumb
|
string | No | Thumbnail image URL |
is_product_specific_image
|
boolean | No | Whether the image is specific to this product (not the default) |
position
|
integer | No | Image sort position |
Inventory Transactions
1 endpoints/api/v3/venue/inventory_transactions
Get the venue's inventory transactions
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return inventory transactions updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return inventory transactions updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[transaction_type_eq]
|
string | query | No | Only return transactions of this type: sale, purchase, refund, adjustment, manifest_adjustment, manifest_cost_adjustment, reset, item_destroyed, split_parent, split_child, transferred_out, voided_transfer_out, void_sale, item_removed, item_added, import, item_transformed, transformed_adjustment, lot_merge, cost_change |
q[manifest_item_id_eq]
|
integer | query | No | Only return transactions for this manifest item id |
q[order_id_eq]
|
integer | query | No | Only return transactions for this order id |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/inventory_transactions" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
sku_id
|
integer | Yes | |
order_id
|
integer | No | |
order_type
|
string | No | |
manifest_item_id
|
integer | No | |
transaction_type
|
string | Yes | |
quantity
|
decimal | Yes | Default: 0.0 |
created_on
|
date | No | |
updated_at
|
datetime | No | |
reason
|
string | No | |
updated_by
|
string | No | |
sts_sync
|
boolean | Yes | Default: false |
note
|
text | No | |
sts_transaction_id
|
integer | No | |
weight
|
decimal | No | |
weight_unit
|
string | No | |
cost_diff
|
integer | No | Default: 0 |
previous_qoh
|
decimal | No | |
item_cost
|
integer | No |
Response Example
{
"total_records": 116327,
"current_page": 1,
"total_pages": 116327,
"per_page": 1,
"inventory_transactions": [
{
"id": 8984553,
"manifest_item_id": 178188,
"sku_id": 107893,
"transaction_type": "purchase",
"order_id": 178188,
"order_type": "ManifestItem",
"quantity": "5.0",
"reason": "auto replenish",
"updated_by": null,
"note": null,
"cost_diff": 1000,
"previous_cost": 2000,
"updated_cost": 3000,
"previous_quantity": 3791,
"updated_quantity": 3796,
"created_at": "2024-02-22",
"updated_at": "2024-02-22T10:37:02.000Z"
}
]
}
Models
InventoryTransactionListResponse
Paginated list of the venue's inventory transactions.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
inventory_transactions
|
array (InventoryTransaction) | Yes | Inventory transactions |
InventoryTransaction
A single movement of stock. previous_* is the state before the movement and updated_* the state after.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Transaction id |
sku_id
|
integer | No | Inventory SKU id the movement applies to |
manifest_item_id
|
integer | No | Lot the movement applies to, when it came from one |
transaction_type
|
string | No | One of: sale, purchase, refund, adjustment, manifest_adjustment, manifest_cost_adjustment, reset, item_destroyed, split_parent, split_child, transferred_out, voided_transfer_out, void_sale, item_removed, item_added, import, item_transformed, transformed_adjustment, lot_merge, cost_change |
order_id
|
integer | No | Id of the record that caused the movement, when there is one |
order_type
|
string | No | Class of the record named by order_id, e.g. Order |
quantity
|
string | No | Signed quantity moved. Negative for stock leaving |
reason
|
string | No | Reason code, for adjustments |
note
|
string | No | Free-text note |
updated_by
|
string | No | Who recorded the movement |
cost_diff
|
integer | No | Change in unit cost in cents |
previous_cost
|
integer | No | Unit cost in cents before the movement |
updated_cost
|
integer | No | Unit cost in cents after the movement |
previous_quantity
|
float | No | Quantity on hand before the movement |
updated_quantity
|
float | No | Quantity on hand after the movement |
created_at
|
string | No | Date the movement was recorded (a date, not a timestamp) |
updated_at
|
datetime | No | Updated timestamp |
Manifest Items
1 endpoints-
GET
/api/v3/venue/manifest_items
Endpoints
Models
/api/v3/venue/manifest_items
Get all manifest items for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 100, max 100) |
q[updated_at_gt]
|
datestring | query | No | Only return manifest items updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return manifest items updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[aasm_state_eq]
|
string | query | No | Only return lots in this state: pending, active, active_unassigned, quarantined, destruction_scheduled, item_destroyed, closed, transferred_out, rejected, unsellable, locked. Also accepted as q[state_eq] |
q[id_eq]
|
integer | query | No | Only return the manifest item with this id |
q[barcode_eq]
|
string | query | No | Only return manifest items with this barcode |
q[inventory_sku_id_eq]
|
integer | query | No | Only return manifest items for this inventory sku id. Also accepted as q[inventory_id_eq] |
q[quantity_on_hand_gt]
|
string | query | No | Only return manifest items with quantity on hand greater than this |
q[quantity_on_hand_lt]
|
string | query | No | Only return manifest items with quantity on hand less than this |
q[quantity_on_hand_eq]
|
string | query | No | Only return manifest items with exactly this quantity on hand |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/manifest_items" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
manifest_id
|
integer | No | |
sts_license_id
|
integer | No | |
lot_number
|
string | No | |
item_type
|
string | No | |
strain
|
string | No | |
name
|
text | No | |
description
|
text | No | |
expires_on
|
date | No | |
barcode
|
string | No | |
barcode_dupe
|
boolean | Yes | Default: false |
barcode_image
|
string | No | |
inventory_sku_id
|
integer | No | |
venue_room_id
|
integer | No | |
aasm_state
|
string | No | Default: pending |
position
|
integer | No | Default: 0 |
quantity
|
decimal | Yes | Default: 0.0 |
weight
|
decimal | Yes | Default: 0.0 |
net_weight
|
decimal | No | |
weight_unit
|
string(15) | No | Default: grams |
testing_lab
|
string | No | |
testing_date
|
datetime | No | |
testing_lab_license
|
string | No | |
test_results
|
text | No | |
test_contaminants_pass
|
boolean | No | |
test_cannabinoids_pass
|
boolean | No | |
test_pesticides_pass
|
boolean | No | |
thc
|
decimal | No | |
cbd
|
decimal | No | |
cbn
|
decimal | No | |
old_harvest_date
|
datetime | No | |
cost
|
integer | No | Default: 0 |
received_cost
|
integer | No | Default: 0 |
tax
|
integer | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
last_sold
|
datetime | No | |
updated_by
|
string | No | |
is_sample
|
boolean | No | Default: false |
is_medical_only
|
boolean | No | Default: false |
ancestry
|
string | No | |
a_split
|
boolean | No | Default: false |
quantity_on_hand
|
decimal | Yes | Default: 0.0 |
api_id
|
string | No | |
received_quantity
|
decimal | Yes | Default: 0.0 |
batch_number
|
string | No | |
return_manifest_id
|
integer | No | |
pre_return_state
|
string | No | |
pre_return_quantity
|
decimal | No | |
custom_barcode_image
|
string | No | |
sample_type
|
string | No | |
product_sample_type
|
string | No | |
custom_barcode_image_version
|
string | No | |
transformed_from_id
|
integer | No | |
transformed_conversion
|
decimal | Yes | Default: 0.0 |
transformed_from_quantity
|
decimal | Yes | Default: 0.0 |
transformed_conversion_weight
|
string | No | |
original_sts_quantity
|
decimal | Yes | Default: 0.0 |
original_sts_unit
|
string | No | |
sts_quantity
|
decimal | No | |
sts_category
|
string | No | |
sts_state
|
string | No | |
sts_last_modified
|
string | No | |
quantity_adj
|
decimal | Yes | Default: 0.0 |
discrepancy_detected
|
datetime | No | |
last_audit
|
datetime | No | |
number_of_doses
|
decimal | No | |
coa_file
|
string | No | |
coa_url
|
text | No | |
excise_tax
|
integer | No | |
thca
|
decimal | No | |
cbda
|
decimal | No | |
total_thc
|
decimal | No | |
growth_method
|
string | No | |
total_terpene
|
decimal | No | |
weight_in_grams
|
decimal | No | |
cbc
|
decimal | No | |
cbg
|
decimal | No | |
cbga
|
decimal | No | |
cbca
|
decimal | No | |
cbgv
|
decimal | No | |
thcv
|
decimal | No | |
cbdv
|
decimal | No | |
cbcv
|
decimal | No | |
harvest_date
|
string | No | |
custom_field_1
|
string | No | |
custom_field_2
|
string | No | |
custom_field_3
|
string | No | |
accepted_date
|
date | No | |
sdp_category
|
string | No | |
sdp_compass
|
string | No | |
lab_result_link
|
text | No | |
doh_compliant
|
boolean | No | Default: false |
total_cbd
|
decimal | No | |
doh_type
|
string | No | |
has_unique_barcodes
|
boolean | No | Default: false |
is_recreational_only
|
boolean | No | Default: false |
sku_reference
|
string | No |
Response Example
{
"total_records": 208,
"current_page": 1,
"total_pages": 208,
"per_page": 1,
"manifest_items": [
{
"id": 261878,
"manifest_id": null,
"state": "active",
"supplier_quantity": "365.0",
"accepted_quantity": "365.0",
"quantity_on_hand": "369.7",
"pre_return_quantity": null,
"cost_per_unit": 300,
"inventory_id": 210113,
"lot_number": "WAR414871.IN6BJ9N",
"barcode": "WAJ416063.IN6AEJ2",
"batch_number": null,
"last_audit": null,
"venue_room": "Display Case 3",
"harvest_date": null,
"thc_measure": "21.5%",
"cbd_measure": "0.7%",
"coa_url": null,
"created_at": "2019-10-16T20:37:50.000Z",
"updated_at": "2022-06-27T21:25:45.000Z"
}
]
}
Models
ManifestItemResponse
A manifest item (an individual lot / package of inventory) as returned by the index action.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Manifest item id |
manifest_id
|
integer | No | Parent manifest id |
state
|
string | No | Workflow state (aasm_state) |
supplier_quantity
|
float | No | Quantity received from the supplier |
accepted_quantity
|
float | No | Accepted quantity |
quantity_on_hand
|
float | No | Quantity currently on hand |
pre_return_quantity
|
float | No | Quantity prior to any return |
cost_per_unit
|
float | No | Cost per unit |
inventory_id
|
integer | No | Inventory SKU id |
lot_number
|
string | No | Lot number |
barcode
|
string | No | Barcode |
batch_number
|
string | No | Batch number |
sku_reference
|
string | No | Supplier's own SKU for the product, as sent on the transfer manifest (WCIA product_sku) |
last_audit
|
string | No | Timestamp of the last audit |
venue_room
|
string | No | Name of the room the item is stored in |
harvest_date
|
string | No | Harvest date |
thc_measure
|
string | No | THC measure (formatted for display) |
cbd_measure
|
string | No | CBD measure (formatted for display) |
thca_measure
|
string | No | THCA measure (formatted for display) |
cbda_measure
|
string | No | CBDA measure (formatted for display) |
total_thc_measure
|
string | No | Total THC measure (formatted for display) |
total_cbd_measure
|
string | No | Total CBD measure (formatted for display) |
other_cannabinoids
|
string | No | Minor / other cannabinoids label |
coa_url
|
string | No | Certificate of analysis URL |
unit_weight
|
float | No | Weight per unit |
unit_of_weight
|
string | No | Unit of weight (e.g. g, oz) |
weight_in_grams
|
float | No | Weight per unit converted to grams |
accepted_date
|
string | No | Date the item was accepted |
doh_compliant
|
boolean | No | DOH compliance flag (CCRS regions only) |
parent_id
|
integer | No | Parent manifest item id (when split from another item) |
parent_manifest_id
|
integer | No | Manifest id of the parent item |
transformed_from_id
|
integer | No | Manifest item id this was transformed from |
transformed_from_manifest_id
|
integer | No | Manifest id of the item this was transformed from |
sdp_category
|
string | No | SDP category |
sdp_compass
|
string | No | SDP compass value |
terpenes
|
array (ManifestItemTerpene) | No | Terpene results |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
ManifestItemTerpene
A terpene result on a manifest item.
| Property | Type | Required | Description |
|---|---|---|---|
name
|
string | No | Terpene name |
potency
|
float | No | Terpene potency |
Manifests
1 endpoints-
GET
/api/v3/venue/manifests
Endpoints
Models
/api/v3/venue/manifests
Get all manifest items for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return manifests updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return manifests updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[aasm_state_eq]
|
string | query | No | Only return manifests in this state: pending, accepted, rejected, accepted_unassigned, voided, pre_import. Also accepted as q[state_eq] |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/manifests" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
supplier_id
|
integer | No | |
reference_no
|
string | No | |
aasm_state
|
string | No | Default: pending |
transfer_date
|
date | No | |
delivery_time
|
datetime | No | |
notes
|
text | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
api_id
|
string | No | |
accepted_by
|
string | No | |
accepted_at
|
datetime | No | |
pickup_time
|
datetime | No | |
transportation_type
|
string | No | |
destination_id
|
integer | No | |
driver_name
|
string | No | |
driver_id
|
string | No | |
driver_dob
|
date | No | |
vehicle_id
|
string | No | |
vehicle_year
|
string | No | |
vehicle_color
|
string | No | |
vehicle_model
|
string | No | |
vehicle_make
|
string | No | |
license_plate
|
string | No | |
courier_id
|
integer | No | |
type
|
string | No | |
route
|
text | No | |
courier_license_number
|
string | No | |
voided_lot_numbers
|
text | No | |
transferred_at
|
datetime | No | |
voided_at
|
datetime | No | |
incoming_created_at
|
datetime | No | |
estimated_departed_at
|
datetime | No | |
estimated_arrival_at
|
datetime | No | |
venue_destination_id
|
integer | No | |
received_cost
|
integer | No | |
accepted_cost
|
integer | No | Default: 0 |
received_quantity
|
integer | No | |
accepted_quantity
|
integer | No | Default: 0 |
has_marijuana
|
boolean | Yes | Default: false |
json_filename
|
string | No | |
import_source
|
string | No | |
discount
|
integer | No | |
excise_tax
|
boolean | Yes | Default: false |
total_excise_tax
|
integer | No | Default: 0 |
external_driver_id
|
string | No | |
external_vehicle_id
|
string | No | |
sts_license_id
|
integer | No | |
payment_method
|
string(25) | No | |
core_external_ref
|
string(50) | No | Default: |
external_pdf
|
string | No |
Response Example
{
"total_records": 46,
"current_page": 1,
"total_pages": 46,
"per_page": 1,
"manifests": [
{
"id": 364,
"reference_no": "2",
"supplier": "Oregon Top Shelf",
"state": "accepted",
"transfer_date": "2019-10-22",
"delivery_time": null,
"notes": "",
"accepted_at": "2019-12-05T18:13:24.000Z",
"accepted_by": "Matt McCullough",
"received_cost": 10000,
"accepted_cost": null,
"received_quantity": 100,
"accepted_quantity": null,
"has_marijuana": true,
"import_source": null,
"discount": null,
"manifest_items": [
{
"id": 276454,
"manifest_id": 364,
"state": "active",
"supplier_quantity": "100.0",
"accepted_quantity": "100.0",
"quantity_on_hand": "5.0",
"pre_return_quantity": null,
"cost_per_unit": 100,
"inventory_id": 214643,
"lot_number": "1A4FFFB0007A122000003899",
"barcode": "1A4FFFB0007A122000003899",
"batch_number": "ncx7pmo24XXNGt0H",
"last_audit": null,
"venue_room": "Display Case 1",
"harvest_date": null,
"thc_measure": "70.0%",
"cbd_measure": "0.0%",
"coa_url": null,
"created_at": "2019-10-22T00:18:31.000Z",
"updated_at": "2020-05-04T20:21:26.000Z"
}
],
"created_at": "2019-10-22T00:18:31.000Z",
"updated_at": "2019-12-05T18:13:24.000Z"
}
]
}
Models
ManifestListResponse
Paginated list of manifests.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
manifests
|
array (Manifest) | Yes | Manifests |
Manifest
An inbound manifest and its lots. The same shape serves the return_manifests and transfer_manifests paths, which swap the receiving fields for the destination ones as noted per property.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Manifest id |
reference_no
|
string | No | Reference number |
state
|
string | No | One of: pending, accepted, rejected, accepted_unassigned, voided, pre_import |
supplier
|
string | No | Supplier name |
supplier_license
|
string | No | Supplier license number |
transfer_date
|
datetime | No | Transfer date |
delivery_time
|
datetime | No | Delivery time |
notes
|
string | No | Free-text notes |
accepted_at
|
datetime | No | Inbound manifests only. When the manifest was accepted |
accepted_by
|
string | No | Inbound manifests only. Who accepted it |
received_cost
|
integer | No | Inbound manifests only. Cost as received, in cents |
accepted_cost
|
integer | No | Inbound manifests only. Cost as accepted, in cents |
received_quantity
|
string | No | Inbound manifests only. Quantity as received |
accepted_quantity
|
string | No | Inbound manifests only. Quantity as accepted |
has_marijuana
|
boolean | No | Inbound manifests only. Whether the manifest contains cannabis |
import_source
|
string | No | Inbound manifests only. Where the manifest was imported from |
discount
|
integer | No | Inbound manifests only. Discount in cents |
return_destination_name
|
string | No | Return and transfer manifests only. Destination name |
return_destination_license
|
string | No | Return and transfer manifests only. Destination license number |
transferred_at
|
datetime | No | Return and transfer manifests only. When the transfer happened |
manifest_items
|
array | Yes | The lots on this manifest. Each entry has the same shape as ManifestItemResponse on the manifest_items endpoint, which renders from the same partial |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Sales Histories
2 endpoints/api/v3/venue/sales_histories
Get all sales histories for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[ordered_at_gt]
|
datestring | query | No | Limit results to sales ordered after this time (defaults to the start of day, venue-local, two days ago when no other filters are given) |
q[updated_at_gt]
|
datestring | query | No | Only return sales updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return sales updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[ordered_at_lt]
|
datestring | query | No | Only return sales ordered before this time |
q[customer_id_eq]
|
integer | query | No | Only return sales for this customer id |
q[incoming_order_id_eq]
|
integer | query | No | Only return the sale for this incoming order id |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/sales_histories" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
order_type
|
string | No | Default: regular |
order_source
|
string | No | Default: walk_in |
incoming_order_id
|
integer | No | |
order_origin
|
string(30) | No | |
customer_id
|
integer | No | |
age
|
integer | No | |
gender
|
string | No | |
terminal_till_id
|
integer | No | |
order_id
|
integer | No | |
venue_name
|
string | No | |
customer_name
|
string | No | |
payment_source
|
string | No | |
payment_type
|
string | No | |
ordered_at
|
datetime | No | |
local_time
|
datetime | No | |
fulfilled_at
|
datetime | No | |
discount
|
integer | No | |
service_charge
|
integer | No | |
delivery_charge
|
integer | No | |
gratuity
|
integer | No | |
tax
|
integer | No | |
total
|
integer | No | |
open_credits
|
integer | No | |
restricted_credits
|
integer | No | |
promo_credits
|
integer | No | |
gopago_credits
|
integer | No | |
merchant_credits
|
integer | No | |
location
|
string | No | |
subtotal
|
integer | No | |
adjusted_time
|
datetime | No | |
venue_timezone
|
string | No | |
employee_name
|
string | No | |
status
|
string | No | |
local_order_id
|
string | No | |
fraction_of_day
|
string | No | |
bag_fee
|
integer | No | Default: 0 |
terminal_id
|
integer | No | |
tuid
|
string | No | |
order_discount
|
integer | No | Default: 0 |
pos_coupon_id
|
integer | No | |
pos_coupon_value
|
integer | No | |
cc_type
|
string | No | |
full_credit
|
integer | No | Default: 0 |
full_discount
|
integer | No | Default: 0 |
coupon_count
|
integer | Yes | Default: 0 |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
revisions
|
integer | Yes | Default: 0 |
description
|
string | No | |
proc_time
|
integer | No | Default: 0 |
cost
|
integer | No | Default: 0 |
sts_status
|
string | No | |
medical_card
|
string | No | |
medical_card_exp
|
date | No | |
api_id
|
string | No | |
breadcrumbs
|
text | No | |
is_caregiver
|
boolean | No | Default: false |
medical_card_effective
|
date | No | |
pmp_file
|
string | No | |
client_type
|
string(20) | No | |
fulfillment_method
|
string(20) | No | |
fulfillment_sub_type
|
string(30) | No | |
integrator_id
|
integer | No | |
api_version
|
string(10) | No | |
client_version
|
string | No |
Response Example
{
"total_records": 36,
"current_page": 1,
"total_pages": 36,
"per_page": 1,
"sales_histories": [
{
"id": 49053313,
"is_medical": false,
"ordered_at": "2022-06-14T19:37:28.000Z",
"ordered_at_local": "2022-06-14T12:37:28.000-07:00",
"sale_type": "sale",
"order_source": "walk_in",
"terminal_till_id": 4676,
"local_order_id": "3264-3-8881-123727",
"customer_id": 544773,
"user_id": 12777,
"sub_total": 1127,
"discount": 260,
"tax": 173,
"total": 1040,
"cost": 275,
"items": [
{
"item_id": 91312852,
"sales_history_id": 49053313,
"product_id": 902427,
"inventory_id": 210111,
"lot_id": 261876,
"lot_number": "WAR414871.IN5SAJM",
"is_marijuana": true,
"quantity": 1,
"weight": "1.0",
"cost": 275,
"sub_total": 1127,
"tax": 173,
"discount": 260,
"sku": "WAJ416746.IN5NZ29",
"category": "Bulk Flower",
"brand": "High Five Farms",
"product_name": "High Five Farms - Ghost Train Haze",
"family_name": "Flower",
"unit_of_weight": "gm",
"tier_name": "Top Shelf Tier",
"discount_list": [
{
"coupon_id": 47769,
"coupon_name": "test happy hour"
}
],
"total": 1040
}
],
"sales_tenders": [
{
"sales_tender_id": 11738303,
"subtotal": 867,
"tax": 173,
"total": 1040,
"payment_method_name": "Cash"
}
],
"created_at": "2022-06-14T19:37:30.000Z",
"updated_at": "2022-06-14T19:37:30.000Z"
}
]
}
/api/v3/venue/sales_histories/{id}
Get a sales history for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Sales History ID |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/sales_histories/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
order_type
|
string | No | Default: regular |
order_source
|
string | No | Default: walk_in |
incoming_order_id
|
integer | No | |
order_origin
|
string(30) | No | |
customer_id
|
integer | No | |
age
|
integer | No | |
gender
|
string | No | |
terminal_till_id
|
integer | No | |
order_id
|
integer | No | |
venue_name
|
string | No | |
customer_name
|
string | No | |
payment_source
|
string | No | |
payment_type
|
string | No | |
ordered_at
|
datetime | No | |
local_time
|
datetime | No | |
fulfilled_at
|
datetime | No | |
discount
|
integer | No | |
service_charge
|
integer | No | |
delivery_charge
|
integer | No | |
gratuity
|
integer | No | |
tax
|
integer | No | |
total
|
integer | No | |
open_credits
|
integer | No | |
restricted_credits
|
integer | No | |
promo_credits
|
integer | No | |
gopago_credits
|
integer | No | |
merchant_credits
|
integer | No | |
location
|
string | No | |
subtotal
|
integer | No | |
adjusted_time
|
datetime | No | |
venue_timezone
|
string | No | |
employee_name
|
string | No | |
status
|
string | No | |
local_order_id
|
string | No | |
fraction_of_day
|
string | No | |
bag_fee
|
integer | No | Default: 0 |
terminal_id
|
integer | No | |
tuid
|
string | No | |
order_discount
|
integer | No | Default: 0 |
pos_coupon_id
|
integer | No | |
pos_coupon_value
|
integer | No | |
cc_type
|
string | No | |
full_credit
|
integer | No | Default: 0 |
full_discount
|
integer | No | Default: 0 |
coupon_count
|
integer | Yes | Default: 0 |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
revisions
|
integer | Yes | Default: 0 |
description
|
string | No | |
proc_time
|
integer | No | Default: 0 |
cost
|
integer | No | Default: 0 |
sts_status
|
string | No | |
medical_card
|
string | No | |
medical_card_exp
|
date | No | |
api_id
|
string | No | |
breadcrumbs
|
text | No | |
is_caregiver
|
boolean | No | Default: false |
medical_card_effective
|
date | No | |
pmp_file
|
string | No | |
client_type
|
string(20) | No | |
fulfillment_method
|
string(20) | No | |
fulfillment_sub_type
|
string(30) | No | |
integrator_id
|
integer | No | |
api_version
|
string(10) | No | |
client_version
|
string | No |
Models
SalesHistoryListResponse
Paginated list of completed sales.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
ordered_at_gt
|
string | No | The ordered_at lower bound actually applied, whether supplied or defaulted. Omitted when no bound applies |
default_filter_applied
|
boolean | No | True when no bounding filter was supplied and the default two-day window was applied |
sales_histories
|
array (SalesHistory) | Yes | Sales |
SalesHistoryResponse
A single sale.
| Property | Type | Required | Description |
|---|---|---|---|
sales_history
|
SalesHistory | Yes | The sale |
SalesHistory
A completed sale. Fields marked Enterprise only require advanced_sales_access on the integrator; without it the sale is reduced to its identity, timing and total, and items carry only their basic fields.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Sale id |
ordered_at
|
datetime | No | When the sale was placed, in UTC |
ordered_at_local
|
datetime | No | When the sale was placed, in the venue's timezone |
sale_type
|
string | No | Either sale or refund |
total
|
integer | No | Sale total in cents |
user_id
|
integer | No | Id of the employee who rang the sale |
is_medical
|
boolean | No | Enterprise only. Whether this was a medical sale |
order_source
|
string | No | Enterprise only. Channel the order came from |
status
|
string | No | Enterprise only. Sale status |
terminal_id
|
integer | No | Enterprise only. Terminal the sale was rung on |
terminal_till_id
|
integer | No | Enterprise only. Till the sale was rung against |
local_order_id
|
integer | No | Enterprise only. Order number local to the venue |
incoming_order_id
|
integer | No | Enterprise only. Incoming order this sale fulfilled, when it came from one |
customer_id
|
integer | No | Enterprise only. Customer id |
sub_total
|
integer | No | Enterprise only. Subtotal in cents, before discount and tax |
discount
|
integer | No | Enterprise only. Order level discount in cents |
tax
|
integer | No | Enterprise only. Tax in cents |
cost
|
integer | No | Enterprise only. Cost of goods in cents |
sales_tenders
|
array (SalesTender) | No | Enterprise only. How the sale was paid for |
items
|
array (SalesHistoryItem) | Yes | Line items |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
SalesHistoryItem
A line item on a sale. Fields marked Enterprise only require advanced_sales_access.
| Property | Type | Required | Description |
|---|---|---|---|
item_id
|
integer | Yes | Line item id |
sales_history_id
|
integer | No | Id of the sale this line belongs to |
product_id
|
integer | No | Product id |
product_name
|
string | No | Product name |
inventory_id
|
integer | No | Inventory SKU id, resolved through the lot. Null when the line has no lot |
total
|
integer | No | Line total in cents |
quantity
|
string | No | Enterprise only. Quantity sold |
weight
|
string | No | Enterprise only. Quantity per unit |
lot_id
|
integer | No | Enterprise only. Manifest item (lot) id |
lot_number
|
string | No | Enterprise only. Lot number |
sku
|
string | No | Enterprise only. Lot barcode |
is_marijuana
|
boolean | No | Enterprise only. Whether the item is cannabis |
unit_weight
|
string | No | Enterprise only. Weight of one unit, from the lot |
unit_of_weight
|
string | No | Enterprise only. Unit the weight is expressed in |
weight_in_grams
|
string | No | Enterprise only. Unit weight converted to grams |
cost
|
integer | No | Enterprise only. Cost of goods in cents |
sub_total
|
integer | No | Enterprise only. Line price in cents before discount and tax |
tax
|
integer | No | Enterprise only. Line tax in cents |
discount
|
integer | No | Enterprise only. Line discount in cents |
category
|
string | No | Enterprise only. Product type name |
brand
|
string | No | Enterprise only. Product brand name |
family_name
|
string | No | Enterprise only. Product family name |
tier_name
|
string | No | Enterprise only. Pricing tier the line was sold at |
discount_list
|
array (SalesItemDiscount) | No | Enterprise only. Discounts applied to this line |
SalesItemDiscount
A discount applied to a line item.
| Property | Type | Required | Description |
|---|---|---|---|
coupon_id
|
integer | No | Discount id, matching the coupons endpoint. Null if the discount has since been deleted |
coupon_name
|
string | No | Discount name as recorded at the time of sale |
SalesTender
One payment against a sale. A sale may be split across several.
| Property | Type | Required | Description |
|---|---|---|---|
sales_tender_id
|
integer | Yes | Tender id |
payment_method_name
|
string | No | Payment method used |
subtotal
|
integer | No | Subtotal covered by this tender, in cents |
tax
|
integer | No | Tax covered by this tender, in cents |
total
|
integer | No | Total value of this tender, in cents |
Suppliers
1 endpoints-
GET
/api/v3/venue/suppliers
Endpoints
Models
/api/v3/venue/suppliers
Get the venue's suppliers
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return suppliers updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return suppliers updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[used_eq]
|
boolean | query | No | When true, only return suppliers that have a manifest at this venue |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/suppliers" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
vendor_id
|
integer | No | |
name
|
string | No | |
license_number
|
string | No | |
telephone_number
|
string(50) | No | |
email
|
string(50) | No | |
inv_notify_emails
|
string | No | |
address
|
string | No | |
city
|
string | No | |
state
|
string(25) | No | |
zipcode
|
string(25) | No | |
country
|
string | No | Default: US |
notes
|
text | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
api_id
|
string | No | |
deactivated
|
boolean | No | Default: false |
type
|
string | No | |
inheritor_id
|
integer | No | |
manifest_freq_in_days
|
integer | No | |
lead_time
|
integer | No | |
velocity_days
|
integer | Yes | Default: 30 |
manifests_count
|
integer | Yes | Default: 0 |
last_adj_levels
|
datetime | No | |
transporter_id
|
string | No | |
excise_tax
|
boolean | Yes | Default: false |
color
|
string(7) | No | Default: #117671 |
certificate_number
|
string | No | |
notification_day
|
string | No | Default: Sunday |
is_default
|
boolean | No | Default: false |
core_supplier_id
|
integer | No |
Response Example
{
"total_records": 104,
"current_page": 1,
"total_pages": 104,
"per_page": 1,
"suppliers": [
{
"id": 123456,
"merchant_id": 1111,
"name": "POSaBIT Farms",
"license_number": "12345",
"telephone_number": "5551234567",
"email": "",
"address": "123 Test Ln",
"city": "Seattle",
"state": "WA",
"zipcode": "12345",
"country": "US",
"notes": "",
"created_at": "2022-02-14T04:08:30.000Z",
"updated_at": "2022-03-31T18:56:49.000Z",
"deactivated": false,
"manifest_freq_in_days": 13,
"lead_time": 2,
"velocity_days": 30,
"manifests_count": 4,
"last_adj_levels": null
}
]
}
Models
SupplierListResponse
Paginated list of the venue's suppliers.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
suppliers
|
array (Supplier) | Yes | Suppliers |
Supplier
A supplier.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Supplier id. Discounts scoped to a supplier match on this |
merchant_id
|
integer | No | Merchant id |
vendor_id
|
integer | No | Vendor id, when the supplier is linked to a connected vendor |
core_supplier_id
|
integer | No | Shared catalog supplier id |
name
|
string | No | Supplier name |
license_number
|
string | No | License number |
certificate_number
|
string | No | Certificate number |
telephone_number
|
string | No | Telephone number |
email
|
string | No | Contact email |
inv_notify_emails
|
string | No | Comma separated emails notified about inventory levels |
address
|
string | No | Street address |
city
|
string | No | City |
state
|
string | No | State |
zipcode
|
string | No | ZIP code |
country
|
string | No | Country |
notes
|
string | No | Free-text notes |
color
|
string | No | Display colour |
deactivated
|
boolean | No | Whether the supplier is deactivated |
is_default
|
boolean | No | Whether this is the venue's default supplier |
excise_tax
|
boolean | No | Whether excise tax applies |
manifest_freq_in_days
|
integer | No | Expected days between manifests |
lead_time
|
integer | No | Order lead time in days |
velocity_days
|
integer | No | Window in days used for velocity calculations |
manifests_count
|
integer | No | Number of manifests from this supplier |
last_adj_levels
|
datetime | No | When inventory levels were last adjusted |
notification_day
|
string | No | Day of week for inventory notifications |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Product Brands
1 endpoints/api/v3/venue/product_brands
Get the venue's product brands
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return product brands updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return product brands updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[used_eq]
|
boolean | query | No | When true, only return brands that have inventory at this venue |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/product_brands" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
abbreviation
|
string | No | |
quality_tier
|
string | No | |
image
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
inheritor_id
|
integer | No | |
curated_brand_id
|
integer | No | |
color
|
string(7) | No | |
core_brand_id
|
integer | No | |
image_assocs_count
|
integer | No | Default: 0 |
display_name
|
string | No |
Response Example
{
"total_records": 297,
"current_page": 1,
"total_pages": 297,
"per_page": 1,
"product_brands": [
{
"id": 8222,
"merchant_id": 7705,
"name": "High Five Farms",
"abbreviation": null,
"image": {
"url": null,
"large": {
"url": null
},
"medium": {
"url": null
},
"small": {
"url": null
},
"thumb": {
"url": null
}
},
"created_at": "2019-10-16T20:37:49.000Z",
"updated_at": "2019-10-16T20:37:49.000Z",
"imported_from": "file",
"curated_brand_id": null
}
]
}
Models
ProductBrandListResponse
Paginated list of the venue's product brands.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
product_brands
|
array (ProductBrand) | Yes | Product brands |
ProductBrand
A product brand.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Brand id. Discounts scoped to a brand match on this |
merchant_id
|
integer | No | Merchant id |
name
|
string | No | Brand name |
display_name
|
string | No | Display name, when it differs from name |
abbreviation
|
string | No | Short form of the name |
color
|
string | No | Display colour |
image
|
BrandImage | No | Brand image and its size variants |
image_assocs_count
|
integer | No | Number of images associated with the brand |
curated_brand_id
|
integer | No | Curated catalog brand id |
core_brand_id
|
integer | No | Shared catalog brand id |
imported_from
|
string | No | Source system, when the brand was imported |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
BrandImage
A brand image. Every variant is present; url is null when no image has been uploaded.
| Property | Type | Required | Description |
|---|---|---|---|
url
|
string | No | Original image URL |
large
|
BrandImageVariant | No | Large variant |
medium
|
BrandImageVariant | No | Medium variant |
small
|
BrandImageVariant | No | Small variant |
thumb
|
BrandImageVariant | No | Thumbnail variant |
BrandImageVariant
One rendered size of a brand image.
| Property | Type | Required | Description |
|---|---|---|---|
url
|
string | No | Image URL, null when no image has been uploaded |
Product Tags
1 endpoints-
GET
/api/v3/venue/product_tags
Endpoints
Models
/api/v3/venue/product_tags
Get the venue's product tags
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return product tags updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return product tags updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/product_tags" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
active
|
boolean | No | Default: true |
pos_enabled
|
boolean | Yes | Default: true |
manager_approval
|
boolean | Yes | Default: false |
description
|
string(500) | No | |
taggings_count
|
integer | No | Default: 0 |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
color
|
string(7) | No |
Response Example
{
"total_records": 510,
"current_page": 1,
"total_pages": 510,
"per_page": 1,
"product_tags": [
{
"id": 26439,
"merchant_id": 7684,
"venue_id": null,
"name": "$1offlighter",
"active": true,
"pos_enabled": true,
"description": null,
"taggings_count": 16,
"created_at": "2023-07-31T17:29:33.000Z",
"updated_at": "2023-07-31T17:29:34.000Z",
"color": "#674E21",
"qr_code": {
"url": "https://pbit-staging.s3.amazonaws.com/uploads/ptag_26439.png"
}
}
]
}
Models
ProductTagListResponse
Paginated list of the product tags available to the venue.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
product_tags
|
array (ProductTag) | Yes | Product tags |
ProductTag
A product tag.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids |
merchant_id
|
integer | No | Merchant id |
venue_id
|
integer | No | Venue id when the tag belongs to a single venue, null when it is merchant wide |
name
|
string | No | Tag name |
description
|
string | No | Tag description |
color
|
string | No | Display colour |
active
|
boolean | No | Whether the tag is active |
pos_enabled
|
boolean | No | Whether the tag is selectable in the POS |
taggings_count
|
integer | No | Number of products carrying the tag |
qr_code
|
TagQrCode | No | Generated QR code image |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
TagQrCode
A generated QR code image.
| Property | Type | Required | Description |
|---|---|---|---|
url
|
string | No | Image URL, null when no QR code has been generated |
Product Types
1 endpoints-
GET
/api/v3/venue/product_types
Endpoints
Models
/api/v3/venue/product_types
Get the venue's product types
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return product types updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return product types updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/product_types" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
description
|
string | No | |
ext_name
|
string | No | |
color
|
string(7) | No | Default: #00ADEE |
image
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
is_marijuana
|
boolean | Yes | Default: false |
edit_weight
|
boolean | No | Default: false |
edit_test_results
|
boolean | No | Default: false |
edit_concentrate_type
|
boolean | No | Default: false |
is_default
|
boolean | No | Default: false |
weighable
|
boolean | Yes | Default: false |
products_count
|
integer | No | Default: 0 |
inheritor_id
|
integer | No | |
test_result_unit
|
string | No | Default: % |
family_id
|
integer | No | |
tier_pricing
|
string | No | |
min_threshold
|
integer | No | |
aged_days
|
integer | Yes | Default: 90 |
image_assocs_count
|
integer | Yes | Default: 0 |
combine_weights
|
boolean | No | Default: false |
Response Example
{
"total_records": 90,
"current_page": 1,
"total_pages": 18,
"per_page": 5,
"product_types": [
{
"id": 3673,
"name": "Default",
"description": null,
"created_at": "2018-08-08T17:28:52.000Z",
"updated_at": "2023-01-06T17:08:09.000Z",
"is_marijuana": true,
"weighable": false,
"family_id": 2,
"family_name": "Flower"
}
]
}
Models
ProductTypeListResponse
Paginated list of the venue's product types.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
product_types
|
array (ProductType) | Yes | Product types |
ProductType
A product type.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Product type id. Discounts scoped to a product type match on this |
name
|
string | No | Product type name |
description
|
string | No | Product type description |
is_marijuana
|
boolean | No | Whether products of this type are cannabis |
weighable
|
boolean | No | Whether products of this type are sold by weight |
family_id
|
integer | No | Product family id |
family_name
|
string | No | Product family name |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Product Strains
1 endpoints-
GET
/api/v3/venue/product_strains
Endpoints
Models
/api/v3/venue/product_strains
Get the venue's product strains
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return product strains updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return product strains updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[used_eq]
|
boolean | query | No | When true, only return strains that have inventory at this venue |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/product_strains" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
inheritor_id
|
integer | No | |
color
|
string(7) | No | Default: #A8A8A8 |
sanitized_name
|
string | No | |
image_assocs_count
|
integer | No | Default: 0 |
Response Example
{
"total_records": 532,
"current_page": 1,
"total_pages": 532,
"per_page": 1,
"product_strains": [
{
"id": 32041,
"merchant_id": 7705,
"name": "Ghost Train Haze",
"created_at": "2019-10-16T20:37:49.000Z",
"updated_at": "2019-10-16T20:37:49.000Z",
"imported_from": "file"
}
]
}
Models
ProductStrainListResponse
Paginated list of the venue's product strains.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
product_strains
|
array (ProductStrain) | Yes | Product strains |
ProductStrain
A product strain.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Strain id. Discounts scoped to a strain match on this |
merchant_id
|
integer | No | Merchant id |
name
|
string | No | Strain name |
sanitized_name
|
string | No | Name with punctuation and spacing removed, used for matching |
color
|
string | No | Display colour |
image_assocs_count
|
integer | No | Number of images associated with the strain |
imported_from
|
string | No | Source system, when the strain was imported |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Terminal Tills
1 endpoints/api/v3/venue/terminal_tills
Get all terminal tills for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return terminal tills updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return terminal tills updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[terminal_id_eq]
|
integer | query | No | Only return tills for this terminal id |
q[aasm_state_eq]
|
string | query | No | Only return tills in this state: open, reopened, pending, discrepancy, closed, reconciled. Also accepted as q[state_eq] |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/terminal_tills" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
aasm_state
|
string | No | Default: open |
terminal_id
|
integer | Yes | |
till_ref
|
string | Yes | |
start_time
|
datetime | No | |
end_time
|
datetime | No | |
start_amount
|
integer | Yes | Default: 0 |
end_amount
|
integer | Yes | Default: 0 |
end_calc_amount
|
integer | Yes | Default: 0 |
left_in_drawer
|
integer | Yes | Default: 0 |
expected_amount
|
integer | No | Default: 0 |
notes
|
text | No | |
opened_by
|
string | No | |
closed_by
|
string | No | |
review_later
|
boolean | No | |
reviewed_by
|
string | No | |
reviewed_at
|
datetime | No | |
created_at
|
datetime | Yes | |
updated_at
|
datetime | Yes | |
terminal_data
|
text | No | |
oc1
|
integer | No | |
oc5
|
integer | No | |
oc10
|
integer | No | |
oc25
|
integer | No | |
od1
|
integer | No | |
od5
|
integer | No | |
od10
|
integer | No | |
od20
|
integer | No | |
od50
|
integer | No | |
od100
|
integer | No | |
cc1
|
integer | No | |
cc5
|
integer | No | |
cc10
|
integer | No | |
cc25
|
integer | No | |
cd1
|
integer | No | |
cd5
|
integer | No | |
cd10
|
integer | No | |
cd20
|
integer | No | |
cd50
|
integer | No | |
cd100
|
integer | No | |
open_notes
|
text | No | |
rounding_total
|
integer | No |
Response Example
{
"total_records": 1408,
"current_page": 1,
"total_pages": 1408,
"per_page": 1,
"terminal_tills": [
{
"id": 1673,
"terminal_id": 8216,
"state": "pending",
"till_ref": "326411571689226811",
"start_time": "2019-10-21T20:20:26.000Z",
"end_time": "2019-10-21T22:11:54.000Z",
"start_amount": 20000,
"end_amount": 0,
"left_in_drawer": 0,
"notes": "",
"opened_by": "Andy Sweet",
"closed_by": "Andy Sweet",
"created_at": "2019-10-21T20:20:27.000Z",
"updated_at": "2019-10-21T22:11:55.000Z",
"adjustments": []
}
]
}
Models
TerminalTillListResponse
Paginated list of the venue's terminal tills.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
terminal_tills
|
array (TerminalTill) | Yes | Terminal tills |
TerminalTill
A till session on a terminal, from open to reconcile. Amounts are in cents.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Till id |
terminal_id
|
integer | No | Terminal the till belongs to |
till_ref
|
string | No | Till reference |
state
|
string | No | One of: open, reopened, pending, discrepancy, closed, reconciled |
start_time
|
datetime | No | When the till was opened |
end_time
|
datetime | No | When the till was closed |
start_amount
|
integer | No | Cash in the drawer at open |
end_amount
|
integer | No | Cash counted at close |
left_in_drawer
|
integer | No | Cash left in the drawer after close |
notes
|
string | No | Free-text notes |
opened_by
|
string | No | Who opened the till. Requires employee_data_access on the venue token |
closed_by
|
string | No | Who closed the till. Requires employee_data_access on the venue token |
adjustments
|
array (TerminalTillAdjustment) | Yes | Paid in and paid out movements against this till |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
TerminalTillAdjustment
Cash added to or removed from a till outside of a sale.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Adjustment id |
adjustment_type
|
string | No | Paid In when the amount is positive, Paid Out when negative |
amount
|
integer | No | Signed amount in cents |
reason
|
string | No | Reason given |
adjusted_by
|
string | No | Full name of the employee who made the adjustment |
adjusted_at
|
datetime | No | When the adjustment was made |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Users
1 endpoints-
GET
/api/v3/venue/users
Endpoints
Models
/api/v3/venue/users
Get all users for a venue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return employees updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return employees updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/users" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
company
|
string | No | |
first_name
|
string | No | |
last_name
|
string | No | |
language
|
string(5) | Yes | Default: en |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
telephone
|
string | No | Default: |
email
|
string | Yes | Default: |
business_type
|
integer | No | |
address
|
string | No | |
city
|
string | No | |
state
|
string | No | |
zip
|
string | No | |
bank_routing
|
integer | No | |
bank_account
|
integer | No | |
ein
|
integer | No | |
perm_level
|
integer | No | Default: 100 |
first_login
|
boolean | No | Default: true |
user_image_source
|
string | No | |
active
|
boolean | No | Default: true |
ratings
|
integer | No | |
is_signed_in
|
boolean | No | |
session_timeout_value
|
integer | No | Default: 24 |
session_timeout_unit
|
integer | No | Default: 1 |
credit_discount_validation_option
|
integer | No | Default: 1 |
est_monthly_sales
|
float | No | |
avg_ticket_transaction
|
float | No | |
delivery_minimum
|
integer | No | |
delivery_fee
|
integer | No | |
menu_creation_fee
|
string | No | |
current_business_bank
|
string | No | |
current_credit_card_processor
|
string | No | |
other_social_info
|
string | No | |
sales_code
|
string | No | |
shipping_option
|
integer | No | |
customer_id
|
integer | No | |
encrypted_password
|
string(128) | Yes | Default: |
confirmation_token
|
string | No | |
confirmed_at
|
datetime | No | |
confirmation_sent_at
|
datetime | No | |
reset_password_token
|
string | No | |
remember_token
|
string | No | |
remember_created_at
|
datetime | No | |
current_sign_in_at
|
datetime | No | |
current_sign_in_ip
|
string | No | |
last_sign_in_ip
|
string | No | |
last_sign_in_at
|
datetime | No | |
reset_password_sent_at
|
datetime | No | |
temporary_initial_password
|
string | No | |
uid
|
string | No | |
nfc
|
string | No | |
last_password_reset
|
datetime | No | |
failed_login_timeout
|
datetime | No | |
sts_api_key
|
string | No | |
sts_api_key_valid
|
boolean | No |
Response Example
{
"total_records": 10,
"current_page": 1,
"total_pages": 10,
"per_page": 1,
"users": [
{
"id": 12926,
"first_name": "Budtender 2",
"last_name": "Budtender 2",
"perm_level": "none",
"access_level": "cashier",
"email": "budtender2@posabit.com",
"created_at": "2019-11-08T00:54:36.000Z",
"updated_at": "2021-04-19T21:25:19.000Z"
}
]
}
Models
User
A User (venue employee).
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Employee Id |
first_name
|
string | No | First Name (requires employee_data_access) |
last_name
|
string | No | Last Name (requires employee_data_access) |
email
|
string | No | Email (requires employee_data_access) |
perm_level
|
string | No | Permission level name |
access_level
|
string | No | Access level name for this venue |
created_at
|
datetime | No | Created At |
updated_at
|
datetime | No | Updated At |
EmployeeList
Paginated list of venue employees.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
users
|
array | Yes | User |
Venue Rooms
1 endpoints-
GET
/api/v3/venue/venue_rooms
Endpoints
Models
/api/v3/venue/venue_rooms
Get the venue's rooms
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page
|
integer | query | No | Page Number |
per_page
|
integer | query | No | Results per page (default 1000) |
q[updated_at_gt]
|
datestring | query | No | Only return venue rooms updated after this time, e.g. q[updated_at_gt]='2019-07-01' |
q[updated_at_lt]
|
datestring | query | No | Only return venue rooms updated before this time, e.g. q[updated_at_lt]='2019-07-01' |
q[s]
|
string | query | No | Sort order, e.g. q[s]='updated_at desc' |
Example
curl -X GET "https://app.posabit.com/api/v3/venue/venue_rooms" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
name
|
string | No | |
pos_visible
|
boolean | No | Default: true |
default
|
boolean | No | Default: false |
description
|
string | No | |
color
|
string | No | Default: #00ADEE |
created_at
|
datetime | No | |
updated_at
|
datetime | No | |
api_id
|
string | No | |
ecommerce_visible
|
boolean | Yes | Default: true |
updated_by
|
string | No | |
created_by
|
string | No | |
active
|
boolean | No | Default: true |
Response Example
{
"total_records": 11,
"current_page": 1,
"total_pages": 4,
"per_page": 3,
"venue_rooms": [
{
"id": 14,
"name": "Drawer #1",
"pos_visible": true,
"description": "",
"color": "#00ADEE",
"created_at": "2018-08-13T20:55:54.000Z",
"updated_at": "2024-06-24T20:52:17.000Z",
"ecommerce_visible": true
},
{
"id": 15,
"name": "Drawer #2",
"pos_visible": true,
"description": "",
"color": "#ffd966",
"created_at": "2018-08-13T20:56:08.000Z",
"updated_at": "2022-04-18T20:31:22.000Z",
"ecommerce_visible": true
},
{
"id": 16,
"name": "Drawer #3",
"pos_visible": true,
"description": "",
"color": "#f9cb9c",
"created_at": "2018-08-13T21:01:17.000Z",
"updated_at": "2022-04-18T20:31:22.000Z",
"ecommerce_visible": true
}
]
}
Models
VenueRoomListResponse
Paginated list of the venue's rooms.
| Property | Type | Required | Description |
|---|---|---|---|
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
venue_rooms
|
array (VenueRoom) | Yes | Venue rooms |
VenueRoom
A room within the venue. Every venue has a "Default" room.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Room id. Discounts scoped to a room match on this |
name
|
string | No | Room name |
description
|
string | No | Room description |
color
|
string | No | Display colour |
pos_visible
|
boolean | No | Whether the room is selectable in the POS |
ecommerce_visible
|
boolean | No | Whether inventory in this room is published to e-commerce |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Models
0 endpointsModels
CouponCustomerListResponse
Paginated list of the customers a private discount has been assigned to.
| Property | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Legacy status field, always 1 |
total_records
|
integer | No | Total number of matching records |
current_page
|
integer | No | Current page number |
total_pages
|
integer | No | Total number of pages |
per_page
|
integer | No | Results per page |
coupon_customers
|
array (CouponCustomer) | Yes | Assignments |
CouponCustomerResponse
A single assignment, as returned by create and update.
| Property | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Legacy status field, always 1 |
coupon_customer
|
CouponCustomer | Yes | The assignment. The nested customer object is present on the index action only |
CouponCustomer
An assignment of a private discount to one customer.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Assignment id |
coupon_id
|
integer | No | Discount id |
customer_id
|
integer | No | Customer id |
redeemed
|
boolean | No | Whether the customer has redeemed it |
redeemed_at
|
datetime | No | When it was redeemed |
expires_at
|
datetime | No | When the assignment expires |
active
|
boolean | No | Whether the assignment is active |
notes
|
string | No | Free-text notes |
created_by_type
|
string | No | Class of the actor that created the assignment |
created_by_id
|
integer | No | Id of the actor that created the assignment |
customer
|
CouponCustomerSummary | No | Basic customer details. Returned by the index action only |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
CouponCustomerSummary
The customer an assignment points at.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer id |
first_name
|
string | No | First name |
last_name
|
string | No | Last name |
telephone
|
string | No | Telephone |
email
|
string | No |