openapi: 3.2.0 info: title: Greenbrier Aftermarket Parts Store Products API version: wp/v2 description: Public, unauthenticated read access to the Greenbrier aftermarket railcar parts catalog served by the WooCommerce Store API on www.gbrx.com. contact: name: The Greenbrier Companies url: https://www.gbrx.com/contact/ x-derived-from: https://www.gbrx.com/wp-json/ (route-index document, saved verbatim at openapi/_original/greenbrier-cos-wp-json-route-index.json) + live anonymous GET samples x-derived-on: '2026-09-12' x-api-evangelist-note: 'Third-party profile. The Greenbrier Companies publishes no developer program; this documents the anonymously readable WordPress REST surface behind www.gbrx.com. Every path, parameter, type, default and enum below was read from the server''s own published route descriptor on 2026-09-12 — nothing is invented. Only the GET methods are documented: write methods exist on the same routes but require WordPress application-password credentials and are not part of the public surface.' servers: - url: https://www.gbrx.com/wp-json description: Greenbrier WooCommerce Store API tags: - name: Products description: Aftermarket railcar replacement parts. paths: /wc/store/v1/products: get: operationId: listStoreProducts summary: List products description: Retrieve a paginated collection of purchasable Greenbrier aftermarket parts, filterable by category, tag, brand, attribute, stock status and price range. tags: - Products parameters: - name: after in: query description: Limit response to resources created after a given ISO8601 compliant date. schema: type: string format: date-time - name: attribute_relation in: query description: The logical relationship between attributes when filtering across multiple at once. schema: type: string enum: - in - and default: and - name: attributes in: query description: Limit result set to products with selected global attributes. schema: type: array items: type: object default: [] - name: before in: query description: Limit response to resources created before a given ISO8601 compliant date. schema: type: string format: date-time - name: brand in: query description: Limit result set to products assigned a set of brand IDs or slugs, separated by commas. schema: type: string - name: brand_operator in: query description: Operator to compare product brand terms. schema: type: string enum: - in - not_in - and default: in - name: catalog_visibility in: query description: Determines if hidden or visible catalog products are shown. schema: type: string enum: - any - visible - catalog - search - hidden - name: category in: query description: Limit result set to products assigned a set of category IDs or slugs, separated by commas. schema: type: string - name: category_operator in: query description: Operator to compare product category terms. schema: type: string enum: - in - not_in - and default: in - name: context in: query description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view - name: date_column in: query description: When limiting response using after/before, which date column to compare against. schema: type: string enum: - date - date_gmt - modified - modified_gmt default: date - name: exclude in: query description: Ensure result set excludes specific IDs. schema: type: array items: type: integer default: [] - name: featured in: query description: Limit result set to featured products. schema: type: boolean - name: include in: query description: Limit result set to specific ids. schema: type: array items: type: integer default: [] - name: max_price in: query description: Limit result set to products based on a maximum price, provided using the smallest unit of the currency. schema: type: string - name: min_price in: query description: Limit result set to products based on a minimum price, provided using the smallest unit of the currency. schema: type: string - name: offset in: query description: Offset the result set by a specific number of items. schema: type: integer - name: on_sale in: query description: Limit result set to products on sale. schema: type: boolean - name: order in: query description: Order sort attribute ascending or descending. schema: type: string enum: - asc - desc default: desc - name: orderby in: query description: Sort collection by object attribute. schema: type: string enum: - date - modified - id - include - title - slug - price - popularity - rating - menu_order - comment_count default: date - name: page in: query description: Current page of the collection. schema: type: integer default: 1 minimum: 1 - name: parent in: query description: Limit result set to those of particular parent IDs. schema: type: array items: type: integer default: [] - name: parent_exclude in: query description: Limit result set to all items except those of a particular parent ID. schema: type: array items: type: integer default: [] - name: per_page in: query description: Maximum number of items to be returned in result set. schema: type: integer default: 10 minimum: 1 maximum: 100 - name: rating in: query description: Limit result set to products with a certain average rating. schema: type: array items: type: integer enum: - 1 - 2 - 3 - 4 - 5 default: [] - name: related in: query description: Limit result set to products related to a specific product ID. schema: type: integer - name: search in: query description: Limit results to those matching a string. schema: type: string - name: sku in: query description: Limit result set to products with specific SKU(s). Use commas to separate. schema: type: string - name: slug in: query description: Limit result set to products with specific slug(s). Use commas to separate. schema: type: string - name: stock_status in: query description: Limit result set to products with specified stock status. schema: type: array items: type: string enum: - instock - outofstock - onbackorder default: [] - name: tag in: query description: Limit result set to products assigned a set of tag IDs or slugs, separated by commas. schema: type: string - name: tag_operator in: query description: Operator to compare product tags. schema: type: string enum: - in - not_in - and default: in - name: type in: query description: Limit result set to products assigned a specific type. schema: type: string enum: - simple - grouped - external - variable - variation responses: '200': description: A page of product records. content: application/json: schema: type: array items: $ref: '#/components/schemas/StoreProduct' headers: X-WP-Total: description: Total number of matching records. schema: type: integer X-WP-TotalPages: description: Total number of pages at the requested per_page size. schema: type: integer '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No route or resource matched (rest_no_route / rest_post_invalid_id). content: application/json: schema: $ref: '#/components/schemas/Error' /wc/store/v1/products/{id}: get: operationId: getStoreProduct summary: Get a product description: Retrieve one product by its numeric ID. tags: - Products parameters: - name: context in: query description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view - name: id in: path description: Unique identifier for the resource. required: true schema: type: integer responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/StoreProduct' '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No route or resource matched (rest_no_route / rest_post_invalid_id). content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: StoreProduct: type: object properties: id: type: integer name: type: string slug: type: string parent: type: integer type: type: string variation: type: string permalink: type: string format: uri sku: type: string short_description: type: string description: type: string on_sale: type: boolean prices: type: object properties: price: type: string regular_price: type: string sale_price: type: string price_range: type: string currency_code: type: string currency_symbol: type: string currency_minor_unit: type: integer currency_decimal_separator: type: string currency_thousand_separator: type: string currency_prefix: type: string currency_suffix: type: string price_html: type: string average_rating: type: string review_count: type: integer images: type: array items: type: object additionalProperties: true categories: type: array items: type: object additionalProperties: true tags: type: array items: type: string brands: type: array items: type: string attributes: type: array items: type: object additionalProperties: true variations: type: array items: type: object additionalProperties: true grouped_products: type: array items: type: string has_options: type: boolean is_purchasable: type: boolean is_in_stock: type: boolean is_on_backorder: type: boolean low_stock_remaining: type: string stock_availability: type: object properties: text: type: string class: type: string sold_individually: type: boolean weight: type: string dimensions: type: object properties: length: type: string width: type: string height: type: string formatted_weight: type: string formatted_dimensions: type: string add_to_cart: type: object properties: text: type: string description: type: string url: type: string format: uri single_text: type: string minimum: type: integer maximum: type: integer multiple_of: type: integer is_password_protected: type: boolean extensions: type: object _links: type: object properties: self: type: array items: type: string collection: type: array items: type: string related: type: array items: type: string description: Shape observed on a live anonymous GET of the StoreProduct collection on 2026-09-12. Error: type: object description: WordPress REST error envelope (WP_Error serialized). properties: code: type: string message: type: string data: type: object properties: status: type: integer