Information

A product is any "primary" type of good produced by a brand. Each product is always assigned a unique Weedmaps Standard Identification Number, or WMSIN. Two main types of products exist: Master and Custom.

Master Product

Weedmaps provides the opportunity for organizations that own a brand to provide curated product content. Weedmaps may also curate content for a product that is common in the industry. A curated product is called a "Master" product and is designated by the attribute is_master: true.

A Master product is discoverable by any integration and can help reduce the burden of data upload when used as a reference. Referencing a Master product may also help improve search results. For more information on linking your information to a Master product, see Catalog Item.

Below are Master product examples:

Custom Product

Although a Master product provides a great way to get curated content through referencing instead of data upload, not every product will already exist on Weedmaps. When a dispensary or other retail seller needs to add product content that doesn't already exist, a Custom (non-master) product can be created and is designated by the attribute is_master: false. Resources referencing a Custom product must be created on behalf of the same organization for which the Custom product was created.

Below are Custom product examples:

  • Sally’s Wicked House of Wax > Sour Diesel Shatter
  • Green MJ Wellness Products > Sativa Topical Lotion
  • My Dispenary's Prerolls > Sativa Blend

API Requests

Master Product

The request types and routes available for this resource as well as details on how to structure your requests are below. See API Reference - Product for examples on how the requests might look in various languages and to test the requests in the browser.

RequestRouteDescription
GET/catalog/v1/productsRequest the information for all Master products (see Note 1 below)
GET/catalog/v1/products/:idRequest the information for a particular Master product (see Note 1 below)

📘

A previous version of this information referenced "Verified" products. Backward compatibility is maintained as a Master product is a superset of what is still considered a Verified product.
Switching API usage from "Verified" to "Master" is strongly recommended but not required.

🚧

When fetching a Master product via the API, we do not return the full description or images. However, these will be displayed on Weedmaps when posted to a Listing's Menu.

Master GET Index

To fetch all Master Products, send a request to
/catalog/v1/products?scope_by[organization_id]=ORGANIZATION_ID&filter[is_master]=true. By default, we only return the first 10 results from the request. You can adjust the number of returned results with page[size], or adjust the returned page with page[page].

Path

scope_by[organization_id] string
Required. Organization UUID.


page[size] int32
Optional. Number of elements per page.


page[page] int32
Optional. Number of the page.


filter[is_master] string
Required. Filters by is_master value. Set to true to return only Master Products.


filter[discontinued] string
Optional. Filters by whether a Product is discontinued or not. Set to true or false.


filter[name] string
Optional. Filters by Product name.


filter[name][search] string
Optional. Allows for searching by Product name.


filter[wmsin] string
Optional. Filters by wmsin.


filter[brand_id] string
Optional. Filters by brand_id.


filter[organization_id] string
Optional. Filters by organization_id.

Master GET Show

To fetch a Master Product, send a request to
/catalog/v1/products/PRODUCT_ID?scope_by[organization_id]=ORGANIZATION_ID.

Path

scope_by[organization_id] string
Required. Organization UUID.


product_id string
Required. Master Product UUID you want to fetch.

Custom Product

The request types and routes available for this resource as well as details on how to structure your requests are below. See API Reference - Product for examples on how the requests might look in various languages and to test the requests in the browser.

RequestRouteDescription
POST/catalog/v1/productsCreate a new Custom product (see Note 2 below)
GET/catalog/v1/productsRequest the information for all Custom products
GET/catalog/v1/products/:idRequest the information for a particular Custom product
PATCH/catalog/v1/products/:idUpdate the information for an existing Custom product
DELETE/catalog/v1/products/:idDiscontinue an existing Custom product (see Note 3 below)

🚧

After creating a Custom product, associate the appropriate Category Tags to it; otherwise, the Custom product will not display on the UI. See Making Products Discoverable for more information.

🚧

The DELETE endpoint is deprecated and will not be supported after Aug. 10, 2020.

Products can no longer be deleted as it can cause problems for historical data. Instead, when sending a DELETE request, the Product will have its discontinued_at field set to the current timestamp. You can "un-delete" a Product by sending a PATCH request and setting discontinued_at to nil.

After August 10, 2020, you will need to send a PATCH request to set a discontinued_at timestamp to designate a Custom Product resource as no longer active.

Custom POST

To create a Product, send a payload with the below structure to
/catalog/v1/products?scope_by[organization_id]=ORGANIZATION_ID&filter[is_master]=false. By default, we only return the first 10 results from the request. You can increase this number with page[size].

{
  "data": {
    "type": "products",
    "attributes": {
      "description": "The hottest of weed.",
      "name": "420 Fire"
    },
    "relationships": {
      "brand": {
        "data": {
          "type": "brands",
          "id": "BRAND_ID"
          }
      },
      "organization": {
        "data": {
          "type": "organizations",
          "id": "ORGANIZATION_ID"
          }
      }
    }
  }
}

Path

scope_by[organization_id] string
Required. Organization UUID.

Attributes

id string
Optional. UUID for the resource.


name string
Required. The human-readable name of the Product.


is_master boolean
Required. Defaults to false. Designates whether it is a Master or Custom Product. Not updateable directly.


description string
Optional. The marketing description of the Product.


last_sellable_at string
Optional. When the Product is last sellable (ISO-8601).


type string
Required. Must be products.

Relationships

Organization

organization_id string
Required. Related Organization UUID.


type string
Required. Must be organizations.

Brand

brand_id string
Required. Related Brand UUID.


type string
Required. Must be brands.

Custom GET Index

To fetch all Custom Products, send a request to
/catalog/v1/products?scope_by[organization_id]=ORGANIZATION_ID.

Path

scope_by[organization_id] string
Required. Organization UUID.


page[size] int32
Optional. Number of elements per page.


page[page] int32
Optional. Number of the page.


filter[is_master] string
Required. Filters by is_master value. Set to false to return only Custom Products.


filter[discontinued] string
Optional. Filters by whether a Product is discontinued or not. Set to true or false.


filter[name] string
Optional. Filters by Product name.


filter[name][search] string
Optional. Allows for searching by Product name.


filter[wmsin] string
Optional. Filters by wmsin.


filter[brand_id] string
Optional. Filters by brand_id.


filter[organization_id] string
Optional. Filters by organization_id.

Custom GET Show

To fetch a Custom Product, send a request to
/catalog/v1/products/PRODUCT_ID?scope_by[organization_id]=ORGANIZATION_ID.

Path

scope_by[organization_id] string
Required. Organization UUID.


product_id string
Required. Custom Product UUID you want to fetch.

Custom PATCH

To update a Custom Product, send a payload with the below structure to
/catalog/v1/products/PRODUCT_ID?scope_by[organization_id]=ORGANIZATION_ID.

{
  "data": {
    "type": "products",
    "attributes": {
      "description": "Pretty good weed."
    },
    "relationships": {
      "brand": {
        "data": {
          "type": "brands",
          "id": "BRAND_ID"
          }
      },
      "organization": {
        "data": {
          "type": "organizations",
          "id": "ORGANIZATION_ID"
          }
      }
    }
  }
}

Path

scope_by[organization_id] string
Required. Organization UUID.


product_id string
Required. Product UUID you want to update.

Attributes

name string
Optional. The human-readable name of the Product.


description string
Optional. The marketing description of the Product.


discontinued_at string
Optional. When the Product will be discontinued. Timestamp must be set to now or in the future (ISO-8601).


last_sellable_at string
Optional. When the Product is last sellable (ISO-8601).


type string
Required. Must be products.

Relationships

Organization

organization_id string
Required. Related Organization UUID.


type string
Required. Must be organizations.

Brand

brand_id string
Required. Related Brand UUID.


type string
Required. Must be brands.

Custom DELETE

To delete a Product, send a request to
/catalog/v1/products/PRODUCT_ID?scope_by[organization_id]=ORGANIZATION_ID.

Path

scope_by[organization_id] string
Required. Organization UUID.


product_id string
Required. Product UUID you want to delete.