Venue API V2

This is a legacy API. V3 is the actively maintained version. New integrations should use Venue API V3 instead.

Authentication

Coupons

1 endpoints
GET /api/v2/venue/coupons

Get all available coupons for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/coupons" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Example

{
  "code": 1,
  "total_records": 67,
  "current_page": 1,
  "total_pages": 67,
  "per_page": 1,
  "coupons": [
    {
      "id": 47667,
      "kind": "discount",
      "applies_to": "item",
      "auto_apply": true,
      "allow_stacking": true,
      "name": "Thirsty Thursday - 10% Off",
      "active": true,
      "points": "0",
      "redeemable_once": false,
      "manager_approve": false,
      "barcode": "460884203",
      "venue_id": 3264,
      "external_ref": null,
      "amount": 1000,
      "coupon_type": "percent",
      "rounding": "none",
      "expires_at": null,
      "starts_at": null,
      "image": {
        "url": "https://pbit-qa.s3.amazonaws.com/coupons/47667/barcode.png"
      },
      "background_image": {
        "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/background.png",
        "thumb": {
          "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/thumb_background.png"
        },
        "half_page": {
          "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/half_page_background.png"
        }
      },
      "payment_method_id": null,
      "payment_method_total": 0,
      "order_type": null,
      "order_source": "",
      "product_type_ids": [
        "",
        "4446"
      ],
      "product_ids": [
        ""
      ],
      "product_tag_ids": [
        ""
      ],
      "product_brand_ids": [
        ""
      ],
      "product_strain_ids": [
        ""
      ],
      "customer_tag_ids": [
        ""
      ],
      "manifest_item_ids": [
        ""
      ],
      "supplier_ids": [
        ""
      ],
      "venue_room_ids": [
        ""
      ],
      "one_item": false,
      "customer_type": "",
      "customer_level_ids": [
        ""
      ],
      "birthday": false,
      "product_weights": [
        ""
      ],
      "min_quantity": null,
      "min_amount": 0,
      "min_weight": "0.0",
      "min_weight_unit": null,
      "days": [
        "",
        "thu"
      ],
      "hours": null,
      "hour_start": "",
      "hour_end": "",
      "created_by": null,
      "created_at": "2019-10-21T15:55:35.000Z",
      "updated_at": "2021-01-25T19:53:14.000Z",
      "clicks": 1,
      "inventory_tier_ids": [
        ""
      ],
      "get_quantity": 1,
      "get_product_type_ids": [
        ""
      ],
      "get_product_ids": [
        ""
      ],
      "get_product_tag_ids": [
        ""
      ],
      "get_product_brand_ids": [
        ""
      ],
      "get_product_strain_ids": [
        ""
      ],
      "get_supplier_ids": null,
      "get_venue_room_ids": null,
      "get_manifest_item_ids": null,
      "get_product_weights": null,
      "get_inventory_tier_ids": null,
      "tier_weights": null,
      "profile_type": "any",
      "first_sale": false,
      "is_private": false,
      "external_redemption_failure_count": 0
    }
  ]
}

Customers

4 endpoints
POSaBIT offers custom profiles for each of your loyalty customers. With just the scan of the customer's ID, the point of sale pulls up the customer’s favorite types of products, displays their purchase history, shows their available loyalty points/rewards, and even has an area where you can easily make notes about the customer.
GET /api/v2/venue/customers

Get all customers for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Filter results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)
q[telephone_eq] string query No Filter results using ransack syntax (e.g. q[customer_telephone_eq]='8085550100' would return customers where telephone = 8085550100)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/customers" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success (returns an array of customers)
401 Unauthorized

Response Fields

Field Type Required Description
customers
array Yes customer

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
      }
    }
  ]
}
POST /api/v2/venue/customers

Create a Customer

Post JSON in body {"customer": {"first_name": "John"...}}

Parameters

Name Type In Required Description
body object body Yes JSON formatted body

Example

curl -X POST "https://app.posabit.com/api/v2/venue/customers" \
  -H "Authorization: Bearer YOUR_API_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
id
integer Yes Customer Id (Read-only)
first_name
string No First Name
last_name
string No Last Name
birth_year
string No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
terms_agreed
boolean No Terms Agreed
points
string No Points (Read-only)
points_adjustment
string No Points (to add or subtract)

Responses

Status Description
200 Success
204 Record not found
400 Bad Request

Response Fields

Field Type Required Description
id
integer Yes Customer Id (Read-only)
first_name
string No First Name
last_name
string No Last Name
birth_year
string No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
terms_agreed
boolean No Terms Agreed
points
string No Points (Read-only)
points_adjustment
string No Points (to add or subtract)

Response Example

{
  "customer": {
    "id": 279160,
    "first_name": "Jane",
    "last_name": "Doe",
    "birth_year": null,
    "gender": "female",
    "telephone": "5551111111",
    "email": "test@gmail.com",
    "active": true,
    "sms_opt_out": false,
    "sms_opt_in": true,
    "signature": "",
    "address": "",
    "zipcode": "98033",
    "city": "",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "terms_agreed": false,
    "points": 105
  }
}
GET /api/v2/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/v2/venue/customers/{id}" \
  -H "Authorization: Bearer YOUR_API_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
id
integer Yes Customer Id (Read-only)
first_name
string No First Name
last_name
string No Last Name
birth_year
string No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
terms_agreed
boolean No Terms Agreed
points
string No Points (Read-only)
points_adjustment
string No Points (to add or subtract)

Response Example

{
  "customer": {
    "id": 279160,
    "first_name": "Jane",
    "last_name": "Doe",
    "birth_year": null,
    "gender": "female",
    "telephone": "5551111111",
    "email": "test@gmail.com",
    "active": true,
    "sms_opt_out": false,
    "sms_opt_in": true,
    "signature": "",
    "address": "",
    "zipcode": "98033",
    "city": "",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "terms_agreed": false,
    "points": 105
  }
}
PATCH /api/v2/venue/customers/{id}

Update a Customer

Patch JSON in body {"customer": {"first_name": "John"...}}

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/v2/venue/customers/{id}" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
id
integer Yes Customer Id (Read-only)
first_name
string No First Name
last_name
string No Last Name
birth_year
string No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
terms_agreed
boolean No Terms Agreed
points
string No Points (Read-only)
points_adjustment
string No Points (to add or subtract)

Responses

Status Description
200 Success
204 Record not found
400 Bad Request

Response Fields

Field Type Required Description
id
integer Yes Customer Id (Read-only)
first_name
string No First Name
last_name
string No Last Name
birth_year
string No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
terms_agreed
boolean No Terms Agreed
points
string No Points (Read-only)
points_adjustment
string No Points (to add or subtract)

Info

1 endpoints
GET /api/v2/venue/info

Venue Info

Example

curl -X GET "https://app.posabit.com/api/v2/venue/info" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Example

{
  "name": "The Bong Marché",
  "license": "413813",
  "region": "Washington State",
  "locale": "en-US",
  "vertical": "dispensaries",
  "logo_thumb": "https://pbit-staging.s3.amazonaws.com/logos/Venue/thumb_3221_logo.png",
  "logo_medium": "https://pbit-staging.s3.amazonaws.com/logos/Venue/medium_3221_logo.png",
  "telephone": "",
  "address": "1128 8th St, Kirkland, WA",
  "street_address_line_1": "1128 8th St",
  "city": "Kirkland",
  "state": "WA",
  "zip_code": "98000",
  "country": "USA",
  "timezone": "Pacific Time (US & Canada)",
  "latitude": "48.7382",
  "longitude": "-122.47",
  "domains": [],
  "tax_rates": [
    {
      "id": 4285,
      "name": "Cannabis Tax",
      "rate": 3700,
      "tax_rate": "37.0",
      "price_included": true
    },
    {
      "id": 4286,
      "name": "Bellingham, WA",
      "rate": 900,
      "tax_rate": "9.0",
      "price_included": true
    }
  ],
  "payment_methods": [
    "Cash",
    "Debit Card",
    "Other"
  ],
  "venue_settings": {
    "online_order_curbside": "1",
    "online_order_delivery": "1"
  }
}

Inventories

1 endpoints
The default view of the inventory page will show you all of your active inventory, from lowest to highest number of units (or grams) on hand - this is so you can easily see which products are running low. Using the filters on the left side of the page, you can narrow down your search results by a particular product type, brand, supplier, etc.
GET /api/v2/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 Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/inventories" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Example

{
  "total_records": 1161,
  "current_page": 1,
  "total_pages": 1161,
  "per_page": 1,
  "inventory": [
    {
      "id": 210113,
      "product_id": 902429,
      "name": "Phat Panda - Lemon Danish Glaze",
      "unit": "280.0 gm",
      "price": 1300,
      "med_price": null,
      "last_price": 1300,
      "quantity_on_hand": "369.7",
      "sellable_quantity": "369.7",
      "ecomm_quantity": "369.7",
      "vendor": "PIONEER PRODUCTION AND PROCESSING",
      "vendor_license": null,
      "brand": "Phat Panda",
      "category": "Bulk Flower",
      "flower_type": "hybrid",
      "concentrate_type": null,
      "product_type": "hybrid",
      "product_family": "Flower",
      "description": "A perfect wake and bake strain. Sweet lemon and mell...",
      "image": [
        null
      ],
      "active": false,
      "bulk_item": true,
      "strain": "Lemon Danish",
      "thc_measure": "21.5%",
      "cbd_measure": "0.7%",
      "sku": "3264-902429",
      "discountable": true,
      "tier_name": "Top Shelf Tier",
      "created_at": "2019-10-16T20:37:49.000Z",
      "updated_at": "2022-07-05T17:31:23.000Z",
      "rooms": [
        {
          "Display Case 3": "369.7"
        }
      ]
    }
  ]
}

Manifest Items

1 endpoints
GET /api/v2/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 Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/manifest_items" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

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/v2/venue/manifests

Get all manifest items for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/manifests" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

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"
    }
  ]
}

Menu Feeds

2 endpoints
GET /api/v2/menu_feeds/{menu_feed_id}/options

Check that a feed key is valid and authorized

Returns an empty object. This is a reachability and authorization check: 200 when the feed key resolves for the authenticated venue, 404 when it does not. It previously returned menu widget display settings (theme, fonts, colors, allow_orders and so on). Those columns were removed in 2019 and the values now reach the widget through the embed snippet the venue pastes into their site, not through this endpoint, so the body has been emptied rather than left raising. Despite the name this is a GET, and it has no role in CORS -- browser preflight is answered by the CORS middleware before routing.

Parameters

Name Type In Required Description
menu_feed_id integer path Yes Feed Key

Example

curl -X GET "https://app.posabit.com/api/v2/menu_feeds/{menu_feed_id}/options" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
404 Could not find menu feed
422 Invalid parameters
500 Internal Server Error
GET /api/{token}/v2/menu_feeds/{id}

Show a Menu Feed

Parameters

Name Type In Required Description
id integer path Yes Feed Key

Example

curl -X GET "https://app.posabit.com/api/YOUR_API_TOKEN/v2/menu_feeds/{id}" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Sales Histories

2 endpoints
The Sales window, is where you can see and sort through all of your previous transactions. Use the filters on the left side of the page to sort the transactions however you'd like. You can use this tab when looking for a return or if you'd like to dive into the details of a specific transaction.
GET /api/v2/venue/sales_histories

Get all sales histories for a venue

When no filters are provided, results are limited to sales ordered since the start of day (venue-local) two days ago. The applied ordered_at_gt value is echoed in the response along with default_filter_applied.

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)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/sales_histories" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

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"
    }
  ]
}
GET /api/v2/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/v2/venue/sales_histories/{id}" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Example

{
  "sales_history": {
    "id": 49054557,
    "is_medical": false,
    "ordered_at": "2024-08-02T18:42:21.000Z",
    "ordered_at_local": "2024-08-02T18:42:21.000Z",
    "sale_type": "sale",
    "order_source": "walk_in",
    "terminal_till_id": 5906,
    "terminal_id": 8829,
    "local_order_id": "3221-169-8082-114218",
    "customer_id": 187408,
    "user_id": 12794,
    "sub_total": 8063,
    "discount": 4130,
    "tax": 722,
    "total": 4655,
    "cost": 764,
    "status": "COMPLETE",
    "items": [
      {
        "item_id": 91315881,
        "sales_history_id": 49054557,
        "product_id": 1031454,
        "inventory_id": 334814,
        "lot_id": 560579,
        "lot_number": "COAIQRT-20240613-001",
        "is_marijuana": true,
        "quantity": 1,
        "weight": "1.0",
        "unit_weight": "3.5",
        "unit_of_weight": "grams",
        "weight_in_grams": "3.5",
        "cost": 700,
        "sub_total": 1377,
        "tax": 123,
        "discount": 705,
        "sku": "COAIQRT-20240613-001",
        "category": "Flower",
        "brand": "Global Xtracts",
        "product_name": "The Finest Green",
        "family_name": "Flower",
        "tier_name": null,
        "discount_list": [
          {
            "coupon_id": 47626,
            "coupon_name": "Will's Test Employee Discount"
          },
          {
            "coupon_id": 47541,
            "coupon_name": "ZZ - Friends & Family 30% Off (Trove Extended)"
          },
          {
            "coupon_id": 47601,
            "coupon_name": "Tribal Tag Test"
          }
        ],
        "total": 795
      },
      {
        "item_id": 91315882,
        "sales_history_id": 49054557,
        "product_id": 801385,
        "inventory_id": 108709,
        "lot_id": 222607,
        "lot_number": "WARPOSABIT.IN33TB",
        "is_marijuana": true,
        "quantity": 1,
        "weight": "1.0",
        "unit_weight": "3.5",
        "unit_of_weight": "grams",
        "weight_in_grams": "3.5",
        "cost": 64,
        "sub_total": 6686,
        "tax": 599,
        "discount": 3425,
        "sku": "WAJPOSABIT.IN1LOY",
        "category": "Flower",
        "brand": null,
        "product_name": "Alta Nova - Blue Hawaiian (3.5g)",
        "family_name": "Flower",
        "tier_name": null,
        "discount_list": [
          {
            "coupon_id": 47626,
            "coupon_name": "Will's Test Employee Discount"
          },
          {
            "coupon_id": 47541,
            "coupon_name": "ZZ - Friends & Family 30% Off (Trove Extended)"
          },
          {
            "coupon_id": 47601,
            "coupon_name": "Tribal Tag Test"
          }
        ],
        "total": 3860
      }
    ],
    "sales_tenders": [
      {
        "sales_tender_id": 11739651,
        "subtotal": 3933,
        "tax": 722,
        "total": 4655,
        "payment_method_name": "Cash"
      }
    ],
    "created_at": "2024-08-02T18:43:01.000Z",
    "updated_at": "2024-08-02T18:43:01.000Z"
  }
}

Terminal Tills

1 endpoints
GET /api/v2/venue/terminal_tills

Get all terminal tills for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/terminal_tills" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

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/v2/venue/users

Get all users for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Limit results using ransack syntax (e.g. q[updated_at_gt]='2019-07-01' would return employees updated since 2019-07-01)

Example

curl -X GET "https://app.posabit.com/api/v2/venue/users" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

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"
    }
  ]
}