Venue API V3
Resources
- Coupons 5 endpoints
- Customer Queues 2 endpoints
- Customer Tags 1 endpoints
- Customers 6 endpoints
- Incoming Orders 3 endpoints
- Incoming Quotes 6 endpoints
- Info 2 endpoints
- Inventories 3 endpoints
- Inventory Tiers 1 endpoints
- Inventory Transactions 1 endpoints
- Manifest Items 1 endpoints
- Manifests 1 endpoints
- Menu Feeds 2 endpoints
- Product Brands 1 endpoints
- Product Strains 1 endpoints
- Product Tags 5 endpoints
- Product Types 1 endpoints
- Products 2 endpoints
- Sales Histories 2 endpoints
- Suppliers 1 endpoints
- Terminal Tills 1 endpoints
- Users 1 endpoints
- Venue Rooms 1 endpoints
Coupons
5 endpoints/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 Fields
| Field | 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 (object) | Yes | Discounts |
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 |
wallet_pass_status
|
string | No | POSaBIT Pass holder condition: any, pass_holder or non_pass_holder |
customer_segment_ids
|
array | No | Customer segments the discount is limited to; a customer in any of them qualifies. Empty means no restriction |
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 (object) | No | Discount images and their size variants |
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 |
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/{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 |
Response Fields
| Field | 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 (object) | Yes | Assignments |
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
|
object | No | Basic customer details. Returned by the index action only |
id
|
integer | Yes | Customer id |
first_name
|
string | No | First name |
last_name
|
string | No | Last name |
telephone
|
string | No | Telephone |
email
|
string | No | |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/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
|
object | 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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
coupon_customer
|
object | Yes | The assignment |
customer_id
|
integer | No | Customer id, from GET /api/v3/venue/customers. Required on create |
active
|
boolean | No | Whether the assignment is active |
notes
|
string | No | Free-text notes |
expires_at
|
datetime | No | When the assignment expires |
Responses
| Status | Description |
|---|---|
| 201 | Success |
| 401 | Unauthorized |
| 404 | Not Found |
| 422 | Unprocessable Entity |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Legacy status field, always 1 |
coupon_customer
|
object | Yes | The assignment. The nested customer object is present on the index action only |
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
|
object | No | Basic customer details. Returned by the index action only |
id
|
integer | Yes | Customer id |
first_name
|
string | No | First name |
last_name
|
string | No | Last name |
telephone
|
string | No | Telephone |
email
|
string | No | |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/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
|
object | 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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
coupon_customer
|
object | Yes | The assignment |
customer_id
|
integer | No | Customer id, from GET /api/v3/venue/customers. Required on create |
active
|
boolean | No | Whether the assignment is active |
notes
|
string | No | Free-text notes |
expires_at
|
datetime | No | When the assignment expires |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Not Found |
| 422 | Unprocessable Entity |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Legacy status field, always 1 |
coupon_customer
|
object | Yes | The assignment. The nested customer object is present on the index action only |
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
|
object | No | Basic customer details. Returned by the index action only |
id
|
integer | Yes | Customer id |
first_name
|
string | No | First name |
last_name
|
string | No | Last name |
telephone
|
string | No | Telephone |
email
|
string | No | |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/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 |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
coupon
|
object | Yes | The discount |
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 |
wallet_pass_status
|
string | No | POSaBIT Pass holder condition: any, pass_holder or non_pass_holder |
customer_segment_ids
|
array | No | Customer segments the discount is limited to; a customer in any of them qualifies. Empty means no restriction |
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 (object) | No | Discount images and their size variants |
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 |
Customer Queues
2 endpoints/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 |
|---|---|---|---|
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 (object) | Yes | Queue entries |
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 |
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": ""
}
]
}
/api/v3/venue/customer_queues
Add a customer to the venue's queue
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
object | body | Yes | Queue entry |
Example
curl -X POST "https://app.posabit.com/api/v3/venue/customer_queues" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer_queue
|
object | Yes | The queue entry |
customer_id
|
integer | No | Customer id |
telephone
|
string | No | Used only to look up the customer when customer_id is omitted |
drivers_license
|
string | No | Used only to look up the customer when customer_id is omitted and no telephone matches |
name
|
string | No | Customer name. Required for a guest entry; defaults to the customer's full name otherwise |
source
|
string | Yes | One of: walk_in, order_ahead |
pickup
|
boolean | No | Whether the customer is here for a pickup |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find customer |
| 422 | Validation failed, e.g. the customer is already in the queue or a guest entry has no name |
Response Fields
| Field | 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 |
Customer Tags
1 endpoints-
GET
/api/ v3/ venue/ customer_tags
Endpoints
/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 |
|---|---|---|---|
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 (object) | Yes | Customer tags |
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 |
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"
}
]
}
Customers
6 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 |
|---|---|---|---|
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 (object) | Yes | Customers, each wrapped under a "customer" key |
customer
|
object | Yes | The customer |
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
{
"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
|
object | 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"
}
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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) |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 204 | Record not found |
| 400 | Bad Request |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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
|
object | Yes | The customer |
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}
Update a Customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Customer ID |
body
|
object | 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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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) |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 204 | Record not found |
| 400 | Bad Request |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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) |
/api/v3/venue/customers/{id}/customer_tags/add
Add tags to a Customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Customer ID |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/customers/{id}/customer_tags/add" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"tag_ids": [
3
]
}'
Request Body
{
"tag_ids": [
3
]
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
tag_ids
|
array (integer) | Yes | Customer tag ids |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 404 | Cannot find customer |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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": 1448750,
"first_name": "JANE",
"terms_agreed": false,
"points": 0,
"loyalty": true,
"loyalty_number": "1448750",
"last_name": "",
"birth_year": null,
"gender": "female",
"telephone": "5552655555",
"email": "",
"active": true,
"sms_opt_out": true,
"sms_opt_in": false,
"address": "",
"zipcode": "98119",
"city": "SEATTLE",
"state": "WA",
"birthday": null,
"customer_type": "medical",
"id_expiration": "2032-01-01",
"medical_card_expiration": "2026-01-01",
"drivers_license": "WDLB",
"customer_tags": [
{
"id": 296,
"merchant_id": 7684,
"name": "Industry",
"active": true,
"pos_enabled": true,
"manager_approval": true,
"description": "",
"discount_limit": null,
"taggings_count": 2,
"color": "#d82206",
"created_at": "2023-12-12T20:07:52.000Z",
"updated_at": "2023-12-12T20:08:09.000Z"
},
{
"id": 3,
"merchant_id": 7684,
"name": "Local Business",
"active": true,
"pos_enabled": true,
"manager_approval": false,
"description": "",
"discount_limit": null,
"taggings_count": 5924,
"color": "#AB1E1C",
"created_at": "2019-06-04T15:17:53.000Z",
"updated_at": "2021-07-19T16:46:47.000Z"
}
]
}
}
/api/v3/venue/customers/{id}/customer_tags/remove
Remove tags from a Customer
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Customer ID |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/customers/{id}/customer_tags/remove" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"tag_ids": [
3
]
}'
Request Body
{
"tag_ids": [
3
]
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
tag_ids
|
array (integer) | Yes | Customer tag ids |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 404 | Cannot find customer |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
customer
|
object | Yes | The customer |
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": 1448750,
"first_name": "JANE",
"terms_agreed": false,
"points": 0,
"loyalty": true,
"loyalty_number": "1448750",
"last_name": "",
"birth_year": null,
"gender": "female",
"telephone": "5552655555",
"email": "",
"active": true,
"sms_opt_out": true,
"sms_opt_in": false,
"address": "",
"zipcode": "98119",
"city": "SEATTLE",
"state": "WA",
"birthday": null,
"customer_type": "medical",
"id_expiration": "2032-01-01",
"medical_card_expiration": "2026-01-01",
"drivers_license": "WDLB",
"customer_tags": [
{
"id": 296,
"merchant_id": 7684,
"name": "Industry",
"active": true,
"pos_enabled": true,
"manager_approval": true,
"description": "",
"discount_limit": null,
"taggings_count": 2,
"color": "#d82206",
"created_at": "2023-12-12T20:07:52.000Z",
"updated_at": "2023-12-12T20:08:09.000Z"
}
]
}
}
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 |
|---|---|---|---|
status
|
string | No | Request status (success) |
code
|
integer | No | Result code |
total_records
|
integer | No | Total number of matching records |
page
|
integer | No | Current page number |
per_page
|
integer | No | Results per page (always 100) |
incoming_orders
|
array (object) | Yes | Incoming orders |
incoming_order
|
object | Yes | The order |
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 (object) | No | Line items |
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 |
/api/v3/incoming_orders
Create an incoming order
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
object | body | Yes | Order payload |
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
}
]
}
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
incoming_order
|
object | Yes | The order |
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 (object) | No | Line items |
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 (object) | No | Coupons applied to the item |
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 |
order_item_taxes_attributes
|
array (object) | No | Taxes applied to the item |
tax_id
|
integer | No | Tax id |
order_item_id
|
integer | No | Order item id |
amount
|
integer | No | Tax amount in cents |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
| 500 | Internal Server Error |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
code
|
integer | No | Result code |
incoming_order
|
object | Yes | The order |
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 (object) | No | Line items |
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 |
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 |
|---|---|---|---|
code
|
integer | No | Result code |
incoming_order
|
object | Yes | The order |
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 (object) | No | Line items |
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 |
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"
}
]
}
Incoming Quotes
6 endpoints/api/v3/incoming_quotes
Create an incoming quote
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
object | body | Yes | Quote payload |
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": []
}
]
}
}
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
quote
|
object | Yes | The quote |
reference_no
|
string | No | Quote reference number (generated when blank) |
fulfillment
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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) |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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) |
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 |
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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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 |
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 |
|---|---|---|---|
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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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 |
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
|
object | body | Yes | Quote payload |
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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
quote
|
object | Yes | The quote |
reference_no
|
string | No | Quote reference number (generated when blank) |
fulfillment
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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) |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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) |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | 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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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 |
/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
|
object | body | Yes | Payment authorization payload |
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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
payment
|
object | Yes | The authorization details |
pac
|
string | No | Hypur PAC (personal access code) |
code
|
string | No | Authorization code |
redirect_uri
|
string | No | Redirect URI |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | 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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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 |
/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 |
Response Fields
| Field | 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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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 |
/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
|
object | body | Yes | Items payload |
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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
quote
|
object | Yes | The replacement items |
items
|
array (object) | Yes | Replacement line items |
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) |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 422 | Invalid parameters |
Response Fields
| Field | 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
|
object | No | Fulfillment details |
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
|
object | No | Delivery address |
address
|
string | No | Street address |
city
|
string | No | City |
state_abbrev
|
string | No | State abbreviation |
zipcode
|
string | No | ZIP code |
customer
|
object | No | Customer details |
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 |
payment
|
object | No | Payment details |
requested_payment_method
|
string | No | Requested payment method |
items
|
array (object) | No | Line items |
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 (object) | No | The discounts applied to this line, one entry per discount, with what each took off |
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 |
product_image
|
object | No | Product image URLs |
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 |
test_results
|
object | No | Cannabinoid measures for the lot behind this line |
thc
|
object | No | THC measure, or null when the venue's menu does not display it |
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 |
thca
|
object | No | THCA measure, or null when the venue's menu does not display it |
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 |
total_thc
|
object | No | TOTAL THC measure, or null when the venue's menu does not display it |
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 |
thcv
|
object | No | THCV measure, or null when the venue's menu does not display it |
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 |
cbd
|
object | No | CBD measure, or null when the venue's menu does not display it |
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 |
cbda
|
object | No | CBDA measure, or null when the venue's menu does not display it |
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 |
total_cbd
|
object | No | TOTAL CBD measure, or null when the venue's menu does not display it |
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 |
cbdv
|
object | No | CBDV measure, or null when the venue's menu does not display it |
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 |
cbc
|
object | No | CBC measure, or null when the venue's menu does not display it |
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 |
cbca
|
object | No | CBCA measure, or null when the venue's menu does not display it |
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 |
cbcv
|
object | No | CBCV measure, or null when the venue's menu does not display it |
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 |
cbn
|
object | No | CBN measure, or null when the venue's menu does not display it |
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 |
cbg
|
object | No | CBG measure, or null when the venue's menu does not display it |
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 |
cbga
|
object | No | CBGA measure, or null when the venue's menu does not display it |
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 |
cbgv
|
object | No | CBGV measure, or null when the venue's menu does not display it |
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 |
terpene_results
|
array (object) | No | Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all |
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 |
taxes
|
array (object) | No | Tax summaries |
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 |
totals
|
object | No | Order totals |
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 |
limits
|
object | No | Purchase-limit evaluation |
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
2 endpoints-
GET
/api/ v3/ info -
GET
/api/ v3/ venue/ info
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 Fields
| Field | 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 (object) | Yes | Connected venues |
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 |
current_month_request_count
|
integer | No | Requests made through this pairing so far this calendar month |
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 Fields
| Field | 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 (object) | No | Active tax rates |
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 |
payment_methods
|
array | No | Payment methods the venue accepts |
venue_settings
|
object | No | Venue settings as a map of setting name to value |
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"
}
}
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 |
|---|---|---|---|
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 |
max_per_page
|
integer | No | Ceiling on per_page |
inventory
|
array (object) | Yes | Inventory SKUs |
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 |
sdp_category
|
string | No | Enterprise only. Strain Data Project category (from the oldest in-stock lot) |
sdp_compass
|
string | No | Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot) |
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 |
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 |
|---|---|---|---|
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 (object) | No | Enterprise only. Tier pricing by weight |
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 |
terpenes
|
array | No | Enterprise only. Terpenes |
effects
|
array | No | Enterprise only. Effect names |
flavors
|
array | No | Enterprise only. Flavor names |
sdp_category
|
string | No | Enterprise only. Strain Data Project category (from the oldest in-stock lot) |
sdp_compass
|
string | No | Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot) |
images
|
array (object) | No | Enterprise only. Product image variants |
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 |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
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
|
object | body | Yes | Pricing payload |
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 '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
inventory_sku
|
object | Yes | The pricing fields |
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) |
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 |
|---|---|---|---|
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 (object) | No | Enterprise only. Tier pricing by weight |
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 |
terpenes
|
array | No | Enterprise only. Terpenes |
effects
|
array | No | Enterprise only. Effect names |
flavors
|
array | No | Enterprise only. Flavor names |
sdp_category
|
string | No | Enterprise only. Strain Data Project category (from the oldest in-stock lot) |
sdp_compass
|
string | No | Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot) |
images
|
array (object) | No | Enterprise only. Product image variants |
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 |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Inventory Tiers
1 endpoints-
GET
/api/ v3/ venue/ inventory_tiers
Endpoints
/api/v3/venue/inventory_tiers
Get the venue's inventory pricing tiers
Example
curl -X GET "https://app.posabit.com/api/v3/venue/inventory_tiers" \
-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 |
|---|---|---|---|
inventory_tiers
|
array (object) | Yes | Inventory tiers |
id
|
integer | Yes | Inventory tier id |
name
|
string | No | Tier name |
weights
|
array (object) | No | Prices by tier weight, in tier weight position order |
id
|
integer | No | Tier weight id |
name
|
string | No | Tier weight name |
position
|
integer | No | Tier weight position |
price
|
integer | No | Retail (recreational) price at this weight; null when unset |
med_price
|
integer | No | Medical price at this weight; null when unset |
weight
|
string | No | Weight, as a decimal string |
weight_unit
|
string | No | Unit of weight (e.g. g, oz) |
weight_in_grams
|
string | No | Weight converted to grams, currently serialized as a fraction string (e.g. "7/2") |
Response Example
{
"inventory_tiers": [
{
"id": 1,
"name": "Low Tier",
"weights": [
{
"name": "1g",
"position": 1,
"price": 100,
"med_price": null,
"weight": "1.0",
"weight_unit": "grams",
"weight_in_grams": "1.0"
},
{
"name": "3.5g",
"position": 2,
"price": 180,
"med_price": null,
"weight": "3.5",
"weight_unit": "grams",
"weight_in_grams": "3.5"
},
{
"name": "7",
"position": 6,
"price": 0,
"med_price": null,
"weight": "7.0",
"weight_unit": "grams",
"weight_in_grams": "7.0"
},
{
"name": ".5 oz",
"position": 7,
"price": 500,
"med_price": null,
"weight": "14.0",
"weight_unit": "grams",
"weight_in_grams": "14.0"
},
{
"name": "Weight 8oz",
"position": 8,
"price": 840,
"med_price": null,
"weight": "8.0",
"weight_unit": "ounces",
"weight_in_grams": "45359237/200000"
}
]
},
{
"id": 2,
"name": "Top Tier",
"weights": [
{
"name": "1g",
"position": 1,
"price": 1000,
"med_price": null,
"weight": "1.0",
"weight_unit": "grams",
"weight_in_grams": "1.0"
},
{
"name": "3.5g",
"position": 2,
"price": 3000,
"med_price": null,
"weight": "3.5",
"weight_unit": "grams",
"weight_in_grams": "3.5"
},
{
"name": "7",
"position": 6,
"price": 5500,
"med_price": null,
"weight": "7.0",
"weight_unit": "grams",
"weight_in_grams": "7.0"
},
{
"name": ".5 oz",
"position": 7,
"price": 10000,
"med_price": null,
"weight": "14.0",
"weight_unit": "grams",
"weight_in_grams": "14.0"
},
{
"name": "Weight 8oz",
"position": 8,
"price": 30000,
"med_price": null,
"weight": "8.0",
"weight_unit": "ounces",
"weight_in_grams": "45359237/200000"
}
]
}
]
}
Inventory Transactions
1 endpoints-
GET
/api/ v3/ venue/ inventory_transactions
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 |
|---|---|---|---|
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 (object) | Yes | Inventory transactions |
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 |
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"
}
]
}
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 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 |
|---|---|---|---|
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 |
max_per_page
|
integer | No | Ceiling on per_page |
manifest_items
|
array (object) | Yes | Manifest items |
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 (object) | No | Terpene results |
name
|
string | No | Terpene name |
potency
|
float | No | Terpene potency |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
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 | 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 |
|---|---|---|---|
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 (object) | Yes | Manifests |
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 |
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"
}
]
}
Product Brands
1 endpoints-
GET
/api/ v3/ venue/ product_brands
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 |
|---|---|---|---|
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 (object) | Yes | Product brands |
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
|
object | No | Brand image and its size variants |
url
|
string | No | Original image URL |
large
|
object | No | Large variant |
url
|
string | No | Image URL, null when no image has been uploaded |
medium
|
object | No | Medium variant |
url
|
string | No | Image URL, null when no image has been uploaded |
small
|
object | No | Small variant |
url
|
string | No | Image URL, null when no image has been uploaded |
thumb
|
object | No | Thumbnail variant |
url
|
string | No | Image URL, null when no image has been uploaded |
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 |
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
}
]
}
Product Strains
1 endpoints-
GET
/api/ v3/ venue/ product_strains
Endpoints
/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 |
|---|---|---|---|
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 (object) | Yes | Product strains |
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 |
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"
}
]
}
Product Tags
5 endpoints/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 |
|---|---|---|---|
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 (object) | Yes | Product tags |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
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"
}
}
]
}
/api/v3/venue/product_tags
Create a product tag
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
body
|
object | body | Yes | JSON formatted body |
Example
curl -X POST "https://app.posabit.com/api/v3/venue/product_tags" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_tag
|
object | Yes | The tag to create |
name
|
string | Yes | Tag name, 3 to 125 characters, unique among the tags of its scope |
description
|
string | No | Tag description, up to 500 characters |
color
|
string | No | Display colour as #RRGGBB; a random dark colour when omitted or too light for white text |
pos_enabled
|
boolean | No | Whether the tag is selectable in the POS (default true) |
merchant_wide
|
boolean | No | true creates the tag for every venue of the merchant; false or omitted creates it for this venue only |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 422 | Unprocessable Entity |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_tag
|
object | Yes | The product tag |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/api/v3/venue/product_tags/{id}
Deactivate a product tag
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Product tag id |
Example
curl -X DELETE "https://app.posabit.com/api/v3/venue/product_tags/{id}" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json"
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find product tag |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_tag
|
object | Yes | The product tag |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/api/v3/venue/product_tags/{id}/products/add
Add a tag to many products
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Product tag id |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/product_tags/{id}/products/add" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_ids
|
array (integer) | Yes | Product ids, at most 250 |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find product tag |
| 422 | Unprocessable Entity |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_tag
|
object | Yes | The product tag |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
changed_product_ids
|
array (integer) | Yes | Products that were tagged or untagged by this call |
ignored_product_ids
|
array (integer) | Yes | Requested ids that are not products of this venue |
/api/v3/venue/product_tags/{id}/products/remove
Remove a tag from many products
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Product tag id |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/product_tags/{id}/products/remove" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_ids
|
array (integer) | Yes | Product ids, at most 250 |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find product tag |
| 422 | Unprocessable Entity |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_tag
|
object | Yes | The product tag |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
changed_product_ids
|
array (integer) | Yes | Products that were tagged or untagged by this call |
ignored_product_ids
|
array (integer) | Yes | Requested ids that are not products of this venue |
Product Types
1 endpoints-
GET
/api/ v3/ venue/ product_types
Endpoints
/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 |
|---|---|---|---|
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 (object) | Yes | Product types |
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 |
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"
}
]
}
Products
2 endpoints/api/v3/venue/products/{id}/product_tags/add
Add tags to a product
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Product id (product_id in GET /api/v3/venue/inventories) |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/products/{id}/product_tags/add" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
tag_ids
|
array (integer) | Yes | Product tag ids |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find product |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_id
|
integer | Yes | Product id |
product_tags
|
array (object) | Yes | Product tags |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
/api/v3/venue/products/{id}/product_tags/remove
Remove tags from a product
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id
|
integer | path | Yes | Product id (product_id in GET /api/v3/venue/inventories) |
body
|
object | body | Yes | JSON formatted body |
Example
curl -X PUT "https://app.posabit.com/api/v3/venue/products/{id}/product_tags/remove" \
-H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{...}'
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
tag_ids
|
array (integer) | Yes | Product tag ids |
Responses
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized |
| 404 | Cannot find product |
Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
product_id
|
integer | Yes | Product id |
product_tags
|
array (object) | Yes | Product tags |
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
|
object | No | Generated QR code image |
url
|
string | No | Image URL, null when no QR code has been generated |
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 |
|---|---|---|---|
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 (object) | Yes | Sales |
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 (object) | No | Enterprise only. How the sale was paid for |
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 |
items
|
array (object) | Yes | Line items |
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 (object) | No | Enterprise only. Discounts applied to this line |
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 |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
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 |
|---|---|---|---|
sales_history
|
object | Yes | The sale |
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 (object) | No | Enterprise only. How the sale was paid for |
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 |
items
|
array (object) | Yes | Line items |
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 (object) | No | Enterprise only. Discounts applied to this line |
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 |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
Suppliers
1 endpoints-
GET
/api/ v3/ venue/ suppliers
Endpoints
/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 |
|---|---|---|---|
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 (object) | Yes | Suppliers |
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 |
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
}
]
}
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 | 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 |
|---|---|---|---|
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 (object) | Yes | Terminal tills |
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 (object) | Yes | Paid in and paid out movements against this till |
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 |
created_at
|
datetime | No | Created timestamp |
updated_at
|
datetime | No | Updated timestamp |
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
/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 |
|---|---|---|---|
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 (object) | Yes | Employees |
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 |
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"
}
]
}
Venue Rooms
1 endpoints-
GET
/api/ v3/ venue/ venue_rooms
Endpoints
/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 |
|---|---|---|---|
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 (object) | Yes | Venue rooms |
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 |
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
}
]
}