Venue API V3
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) |
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 | |
refresh_token
|
string | No | |
token_expires_at
|
datetime | No | |
tip_calculated
|
integer | No | Default: 0 |
processing_fee
|
integer | No | Default: 0 |
ip
|
string | No | |
oauth_token
|
text | No | |
otp
|
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 |
/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 | |
refresh_token
|
string | No | |
token_expires_at
|
datetime | No | |
tip_calculated
|
integer | No | Default: 0 |
processing_fee
|
integer | No | Default: 0 |
ip
|
string | No | |
oauth_token
|
text | No | |
otp
|
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 |
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
- 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 | |
auto_apply_coupons
|
boolean | No | Default: false |
payment_auth_id
|
string | No | |
refresh_token
|
string | No | |
token_expires_at
|
datetime | 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 | |
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 | Discount in cents |
discount_ids
|
array | No | Ids of applied discounts |
product_image
|
object | No | Product image URLs |
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 |
Info
1 endpoints-
GET
/api/v3/venue/info
Endpoints
/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 |
Coupons
4 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) |
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 |
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 | Filter results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 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 |
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 |
last_name
|
string | No | Last Name |
birth_year
|
string | 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) |
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 |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
string | No | Points (Read-only) |
points_adjustment
|
string | No | Points (to add or subtract) |
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 |
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 |
last_name
|
string | No | Last Name |
birth_year
|
string | 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) |
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 |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
string | No | Points (Read-only) |
points_adjustment
|
string | No | Points (to add or subtract) |
Models
customer
A Customer.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Customer Id (Read-only) |
first_name
|
string | No | First Name |
last_name
|
string | No | Last Name |
birth_year
|
string | 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) |
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 |
terms_agreed
|
boolean | No | Terms Agreed |
points
|
string | No | Points (Read-only) |
points_adjustment
|
string | No | Points (to add or subtract) |
customers
| Property | Type | Required | Description |
|---|---|---|---|
customers
|
array | Yes | customer |
Inventories
1 endpoints-
GET
/api/v3/venue/inventories
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 1000) |
q[updated_at_gt]
|
datestring | query | No | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 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"
}
]
}
]
}
Manifest Items
1 endpoints-
GET
/api/v3/venue/manifest_items
Endpoints
/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 1000) |
q[updated_at_gt]
|
datestring | query | No | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01) |
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 |
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"
}
]
}
Manifests
1 endpoints-
GET
/api/v3/venue/manifests
Endpoints
/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 | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01) |
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"
}
]
}
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[updated_at_gt]
|
datestring | query | No | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01) |
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 | |
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 | |
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 |
Terminal Tills
1 endpoints-
GET
/api/v3/venue/terminal_tills
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 | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01) |
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": []
}
]
}
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 | Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 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.
| Property | Type | Required | Description |
|---|---|---|---|
id
|
integer | Yes | Employee Id |
first_name
|
string | No | First Name |
created_at
|
datetime | No | Created At |
updated_at
|
datetime | No | Updated At |