Greif WordPress REST API

The WordPress REST API served by Greif's corporate website at https://www.greif.com/wp-json — 554 routes across 39 namespaces, 182 of them under wp/v2, discovered by probing the API host root on 2026-09-12. This is the only machine-readable contract Greif publishes. It is CMS infrastructure rather than a product — Greif runs no developer program, publishes no documentation, SDKs, pricing or terms for programmatic use, and every response carries x-robots-tag noindex — but unlike most corporate WordPress sites, Greif has registered its OWN domain entities for REST, so the surface carries real packaging data: product (the packaging catalog), the product_category, product_material, product_capacity, product_attribute, product_market, product_tag and regional_availability taxonomies, market, technology, sustainability_items, and the facility locator as wpsl_stores plus the store_location taxonomy. Anonymous reads on all of those were verified live; /wp/v2/settings, /wp/v2/users and /wpsl/v1/block-data return 401, and writes require a WordPress account on Greif's own site, which a third party cannot obtain.

Operations 429

Showing the first 250 of 429. The full set is in the contract, and via get_provider_operations.

GET /wp/v2 GET /wp/v2 #
GET /wp/v2/block-directory/search GET /wp/v2/block-directory/search #
GET /wp/v2/block-patterns/categories GET /wp/v2/block-patterns/categories #
GET /wp/v2/block-patterns/patterns GET /wp/v2/block-patterns/patterns #
GET /wp/v2/block-renderer/{name} GET /wp/v2/block-renderer/{name} #
POST /wp/v2/block-renderer/{name} POST /wp/v2/block-renderer/{name} #
GET /wp/v2/block-types GET /wp/v2/block-types #
GET /wp/v2/block-types/{namespace} GET /wp/v2/block-types/{namespace} #
GET /wp/v2/block-types/{namespace}/{name} GET /wp/v2/block-types/{namespace}/{name} #
GET /wp/v2/blocks GET /wp/v2/blocks #
POST /wp/v2/blocks POST /wp/v2/blocks #
GET /wp/v2/blocks/{id} GET /wp/v2/blocks/{id} #
POST /wp/v2/blocks/{id} POST /wp/v2/blocks/{id} #
PUT /wp/v2/blocks/{id} PUT /wp/v2/blocks/{id} #
PATCH /wp/v2/blocks/{id} PATCH /wp/v2/blocks/{id} #
DELETE /wp/v2/blocks/{id} DELETE /wp/v2/blocks/{id} #
GET /wp/v2/blocks/{id}/autosaves GET /wp/v2/blocks/{id}/autosaves #
POST /wp/v2/blocks/{id}/autosaves POST /wp/v2/blocks/{id}/autosaves #
GET /wp/v2/blocks/{parent}/autosaves/{id} GET /wp/v2/blocks/{parent}/autosaves/{id} #
GET /wp/v2/blocks/{parent}/revisions GET /wp/v2/blocks/{parent}/revisions #
GET /wp/v2/blocks/{parent}/revisions/{id} GET /wp/v2/blocks/{parent}/revisions/{id} #
DELETE /wp/v2/blocks/{parent}/revisions/{id} DELETE /wp/v2/blocks/{parent}/revisions/{id} #
GET /wp/v2/categories GET /wp/v2/categories #
POST /wp/v2/categories POST /wp/v2/categories #
GET /wp/v2/categories/{id} GET /wp/v2/categories/{id} #
POST /wp/v2/categories/{id} POST /wp/v2/categories/{id} #
PUT /wp/v2/categories/{id} PUT /wp/v2/categories/{id} #
PATCH /wp/v2/categories/{id} PATCH /wp/v2/categories/{id} #
DELETE /wp/v2/categories/{id} DELETE /wp/v2/categories/{id} #
GET /wp/v2/comments GET /wp/v2/comments #
POST /wp/v2/comments POST /wp/v2/comments #
GET /wp/v2/comments/{id} GET /wp/v2/comments/{id} #
POST /wp/v2/comments/{id} POST /wp/v2/comments/{id} #
PUT /wp/v2/comments/{id} PUT /wp/v2/comments/{id} #
PATCH /wp/v2/comments/{id} PATCH /wp/v2/comments/{id} #
DELETE /wp/v2/comments/{id} DELETE /wp/v2/comments/{id} #
GET /wp/v2/e-floating-buttons GET /wp/v2/e-floating-buttons #
POST /wp/v2/e-floating-buttons POST /wp/v2/e-floating-buttons #
GET /wp/v2/e-floating-buttons/{id} GET /wp/v2/e-floating-buttons/{id} #
POST /wp/v2/e-floating-buttons/{id} POST /wp/v2/e-floating-buttons/{id} #
PUT /wp/v2/e-floating-buttons/{id} PUT /wp/v2/e-floating-buttons/{id} #
PATCH /wp/v2/e-floating-buttons/{id} PATCH /wp/v2/e-floating-buttons/{id} #
DELETE /wp/v2/e-floating-buttons/{id} DELETE /wp/v2/e-floating-buttons/{id} #
GET /wp/v2/e-floating-buttons/{id}/autosaves GET /wp/v2/e-floating-buttons/{id}/autosaves #
POST /wp/v2/e-floating-buttons/{id}/autosaves POST /wp/v2/e-floating-buttons/{id}/autosaves #
GET /wp/v2/e-floating-buttons/{parent}/autosaves/{id} GET /wp/v2/e-floating-buttons/{parent}/autosaves/{id} #
GET /wp/v2/e-floating-buttons/{parent}/revisions GET /wp/v2/e-floating-buttons/{parent}/revisions #
GET /wp/v2/e-floating-buttons/{parent}/revisions/{id} GET /wp/v2/e-floating-buttons/{parent}/revisions/{id} #
DELETE /wp/v2/e-floating-buttons/{parent}/revisions/{id} DELETE /wp/v2/e-floating-buttons/{parent}/revisions/{id} #
GET /wp/v2/elementor_library GET /wp/v2/elementor_library #
POST /wp/v2/elementor_library POST /wp/v2/elementor_library #
GET /wp/v2/elementor_library/{id} GET /wp/v2/elementor_library/{id} #
POST /wp/v2/elementor_library/{id} POST /wp/v2/elementor_library/{id} #
PUT /wp/v2/elementor_library/{id} PUT /wp/v2/elementor_library/{id} #
PATCH /wp/v2/elementor_library/{id} PATCH /wp/v2/elementor_library/{id} #
DELETE /wp/v2/elementor_library/{id} DELETE /wp/v2/elementor_library/{id} #
GET /wp/v2/elementor_library/{parent}/revisions GET /wp/v2/elementor_library/{parent}/revisions #
GET /wp/v2/elementor_library/{parent}/revisions/{id} GET /wp/v2/elementor_library/{parent}/revisions/{id} #
DELETE /wp/v2/elementor_library/{parent}/revisions/{id} DELETE /wp/v2/elementor_library/{parent}/revisions/{id} #
GET /wp/v2/elementor_snippet GET /wp/v2/elementor_snippet #
POST /wp/v2/elementor_snippet POST /wp/v2/elementor_snippet #
GET /wp/v2/elementor_snippet/{id} GET /wp/v2/elementor_snippet/{id} #
POST /wp/v2/elementor_snippet/{id} POST /wp/v2/elementor_snippet/{id} #
PUT /wp/v2/elementor_snippet/{id} PUT /wp/v2/elementor_snippet/{id} #
PATCH /wp/v2/elementor_snippet/{id} PATCH /wp/v2/elementor_snippet/{id} #
DELETE /wp/v2/elementor_snippet/{id} DELETE /wp/v2/elementor_snippet/{id} #
GET /wp/v2/font-collections GET /wp/v2/font-collections #
GET /wp/v2/font-collections/{slug} GET /wp/v2/font-collections/{slug} #
GET /wp/v2/font-families GET /wp/v2/font-families #
POST /wp/v2/font-families POST /wp/v2/font-families #
GET /wp/v2/font-families/{font_family_id}/font-faces GET /wp/v2/font-families/{font_family_id}/font-faces #
POST /wp/v2/font-families/{font_family_id}/font-faces POST /wp/v2/font-families/{font_family_id}/font-faces #
GET /wp/v2/font-families/{font_family_id}/font-faces/{id} GET /wp/v2/font-families/{font_family_id}/font-faces/{id} #
DELETE /wp/v2/font-families/{font_family_id}/font-faces/{id} DELETE /wp/v2/font-families/{font_family_id}/font-faces/{id} #
GET /wp/v2/font-families/{id} GET /wp/v2/font-families/{id} #
POST /wp/v2/font-families/{id} POST /wp/v2/font-families/{id} #
PUT /wp/v2/font-families/{id} PUT /wp/v2/font-families/{id} #
PATCH /wp/v2/font-families/{id} PATCH /wp/v2/font-families/{id} #
DELETE /wp/v2/font-families/{id} DELETE /wp/v2/font-families/{id} #
GET /wp/v2/global-styles/{id} GET /wp/v2/global-styles/{id} #
POST /wp/v2/global-styles/{id} POST /wp/v2/global-styles/{id} #
PUT /wp/v2/global-styles/{id} PUT /wp/v2/global-styles/{id} #
PATCH /wp/v2/global-styles/{id} PATCH /wp/v2/global-styles/{id} #
GET /wp/v2/global-styles/{parent}/revisions GET /wp/v2/global-styles/{parent}/revisions #
GET /wp/v2/global-styles/{parent}/revisions/{id} GET /wp/v2/global-styles/{parent}/revisions/{id} #
GET /wp/v2/global-styles/themes/{stylesheet}/variations GET /wp/v2/global-styles/themes/{stylesheet}/variations #
GET /wp/v2/global-styles/themes/{stylesheet} GET /wp/v2/global-styles/themes/{stylesheet} #
GET /wp/v2/greif_custom_table GET /wp/v2/greif_custom_table #
POST /wp/v2/greif_custom_table POST /wp/v2/greif_custom_table #
GET /wp/v2/greif_custom_table/{id} GET /wp/v2/greif_custom_table/{id} #
POST /wp/v2/greif_custom_table/{id} POST /wp/v2/greif_custom_table/{id} #
PUT /wp/v2/greif_custom_table/{id} PUT /wp/v2/greif_custom_table/{id} #
PATCH /wp/v2/greif_custom_table/{id} PATCH /wp/v2/greif_custom_table/{id} #
DELETE /wp/v2/greif_custom_table/{id} DELETE /wp/v2/greif_custom_table/{id} #
GET /wp/v2/jet-menu GET /wp/v2/jet-menu #
POST /wp/v2/jet-menu POST /wp/v2/jet-menu #
GET /wp/v2/jet-menu/{id} GET /wp/v2/jet-menu/{id} #
POST /wp/v2/jet-menu/{id} POST /wp/v2/jet-menu/{id} #
PUT /wp/v2/jet-menu/{id} PUT /wp/v2/jet-menu/{id} #
PATCH /wp/v2/jet-menu/{id} PATCH /wp/v2/jet-menu/{id} #
DELETE /wp/v2/jet-menu/{id} DELETE /wp/v2/jet-menu/{id} #
GET /wp/v2/jet-menu/{id}/autosaves GET /wp/v2/jet-menu/{id}/autosaves #
POST /wp/v2/jet-menu/{id}/autosaves POST /wp/v2/jet-menu/{id}/autosaves #
GET /wp/v2/jet-menu/{parent}/autosaves/{id} GET /wp/v2/jet-menu/{parent}/autosaves/{id} #
GET /wp/v2/jet-menu/{parent}/revisions GET /wp/v2/jet-menu/{parent}/revisions #
GET /wp/v2/jet-menu/{parent}/revisions/{id} GET /wp/v2/jet-menu/{parent}/revisions/{id} #
DELETE /wp/v2/jet-menu/{parent}/revisions/{id} DELETE /wp/v2/jet-menu/{parent}/revisions/{id} #
GET /wp/v2/leadership-council GET /wp/v2/leadership-council #
POST /wp/v2/leadership-council POST /wp/v2/leadership-council #
GET /wp/v2/leadership-council/{id} GET /wp/v2/leadership-council/{id} #
POST /wp/v2/leadership-council/{id} POST /wp/v2/leadership-council/{id} #
PUT /wp/v2/leadership-council/{id} PUT /wp/v2/leadership-council/{id} #
PATCH /wp/v2/leadership-council/{id} PATCH /wp/v2/leadership-council/{id} #
DELETE /wp/v2/leadership-council/{id} DELETE /wp/v2/leadership-council/{id} #
GET /wp/v2/leadership-council/{id}/autosaves GET /wp/v2/leadership-council/{id}/autosaves #
POST /wp/v2/leadership-council/{id}/autosaves POST /wp/v2/leadership-council/{id}/autosaves #
GET /wp/v2/leadership-council/{parent}/autosaves/{id} GET /wp/v2/leadership-council/{parent}/autosaves/{id} #
GET /wp/v2/market GET /wp/v2/market #
POST /wp/v2/market POST /wp/v2/market #
GET /wp/v2/market/{id} GET /wp/v2/market/{id} #
POST /wp/v2/market/{id} POST /wp/v2/market/{id} #
PUT /wp/v2/market/{id} PUT /wp/v2/market/{id} #
PATCH /wp/v2/market/{id} PATCH /wp/v2/market/{id} #
DELETE /wp/v2/market/{id} DELETE /wp/v2/market/{id} #
GET /wp/v2/market/{id}/autosaves GET /wp/v2/market/{id}/autosaves #
POST /wp/v2/market/{id}/autosaves POST /wp/v2/market/{id}/autosaves #
GET /wp/v2/market/{parent}/autosaves/{id} GET /wp/v2/market/{parent}/autosaves/{id} #
GET /wp/v2/market/{parent}/revisions GET /wp/v2/market/{parent}/revisions #
GET /wp/v2/market/{parent}/revisions/{id} GET /wp/v2/market/{parent}/revisions/{id} #
DELETE /wp/v2/market/{parent}/revisions/{id} DELETE /wp/v2/market/{parent}/revisions/{id} #
GET /wp/v2/media GET /wp/v2/media #
POST /wp/v2/media POST /wp/v2/media #
GET /wp/v2/media/{id} GET /wp/v2/media/{id} #
POST /wp/v2/media/{id} POST /wp/v2/media/{id} #
PUT /wp/v2/media/{id} PUT /wp/v2/media/{id} #
PATCH /wp/v2/media/{id} PATCH /wp/v2/media/{id} #
DELETE /wp/v2/media/{id} DELETE /wp/v2/media/{id} #
POST /wp/v2/media/{id}/edit POST /wp/v2/media/{id}/edit #
POST /wp/v2/media/{id}/post-process POST /wp/v2/media/{id}/post-process #
GET /wp/v2/menu-items GET /wp/v2/menu-items #
POST /wp/v2/menu-items POST /wp/v2/menu-items #
GET /wp/v2/menu-items/{id} GET /wp/v2/menu-items/{id} #
POST /wp/v2/menu-items/{id} POST /wp/v2/menu-items/{id} #
PUT /wp/v2/menu-items/{id} PUT /wp/v2/menu-items/{id} #
PATCH /wp/v2/menu-items/{id} PATCH /wp/v2/menu-items/{id} #
DELETE /wp/v2/menu-items/{id} DELETE /wp/v2/menu-items/{id} #
GET /wp/v2/menu-items/{id}/autosaves GET /wp/v2/menu-items/{id}/autosaves #
POST /wp/v2/menu-items/{id}/autosaves POST /wp/v2/menu-items/{id}/autosaves #
GET /wp/v2/menu-items/{parent}/autosaves/{id} GET /wp/v2/menu-items/{parent}/autosaves/{id} #
GET /wp/v2/menu-locations GET /wp/v2/menu-locations #
GET /wp/v2/menu-locations/{location} GET /wp/v2/menu-locations/{location} #
GET /wp/v2/menus GET /wp/v2/menus #
POST /wp/v2/menus POST /wp/v2/menus #
GET /wp/v2/menus/{id} GET /wp/v2/menus/{id} #
POST /wp/v2/menus/{id} POST /wp/v2/menus/{id} #
PUT /wp/v2/menus/{id} PUT /wp/v2/menus/{id} #
PATCH /wp/v2/menus/{id} PATCH /wp/v2/menus/{id} #
DELETE /wp/v2/menus/{id} DELETE /wp/v2/menus/{id} #
GET /wp/v2/navigation GET /wp/v2/navigation #
POST /wp/v2/navigation POST /wp/v2/navigation #
GET /wp/v2/navigation/{id} GET /wp/v2/navigation/{id} #
POST /wp/v2/navigation/{id} POST /wp/v2/navigation/{id} #
PUT /wp/v2/navigation/{id} PUT /wp/v2/navigation/{id} #
PATCH /wp/v2/navigation/{id} PATCH /wp/v2/navigation/{id} #
DELETE /wp/v2/navigation/{id} DELETE /wp/v2/navigation/{id} #
GET /wp/v2/navigation/{id}/autosaves GET /wp/v2/navigation/{id}/autosaves #
POST /wp/v2/navigation/{id}/autosaves POST /wp/v2/navigation/{id}/autosaves #
GET /wp/v2/navigation/{parent}/autosaves/{id} GET /wp/v2/navigation/{parent}/autosaves/{id} #
GET /wp/v2/navigation/{parent}/revisions GET /wp/v2/navigation/{parent}/revisions #
GET /wp/v2/navigation/{parent}/revisions/{id} GET /wp/v2/navigation/{parent}/revisions/{id} #
DELETE /wp/v2/navigation/{parent}/revisions/{id} DELETE /wp/v2/navigation/{parent}/revisions/{id} #
GET /wp/v2/pages GET /wp/v2/pages #
POST /wp/v2/pages POST /wp/v2/pages #
GET /wp/v2/pages/{id} GET /wp/v2/pages/{id} #
POST /wp/v2/pages/{id} POST /wp/v2/pages/{id} #
PUT /wp/v2/pages/{id} PUT /wp/v2/pages/{id} #
PATCH /wp/v2/pages/{id} PATCH /wp/v2/pages/{id} #
DELETE /wp/v2/pages/{id} DELETE /wp/v2/pages/{id} #
GET /wp/v2/pages/{id}/autosaves GET /wp/v2/pages/{id}/autosaves #
POST /wp/v2/pages/{id}/autosaves POST /wp/v2/pages/{id}/autosaves #
GET /wp/v2/pages/{parent}/autosaves/{id} GET /wp/v2/pages/{parent}/autosaves/{id} #
GET /wp/v2/pages/{parent}/revisions GET /wp/v2/pages/{parent}/revisions #
GET /wp/v2/pages/{parent}/revisions/{id} GET /wp/v2/pages/{parent}/revisions/{id} #
DELETE /wp/v2/pages/{parent}/revisions/{id} DELETE /wp/v2/pages/{parent}/revisions/{id} #
GET /wp/v2/pattern-directory/patterns GET /wp/v2/pattern-directory/patterns #
GET /wp/v2/plugins GET /wp/v2/plugins #
POST /wp/v2/plugins POST /wp/v2/plugins #
GET /wp/v2/plugins/{plugin} GET /wp/v2/plugins/{plugin} #
POST /wp/v2/plugins/{plugin} POST /wp/v2/plugins/{plugin} #
PUT /wp/v2/plugins/{plugin} PUT /wp/v2/plugins/{plugin} #
PATCH /wp/v2/plugins/{plugin} PATCH /wp/v2/plugins/{plugin} #
DELETE /wp/v2/plugins/{plugin} DELETE /wp/v2/plugins/{plugin} #
GET /wp/v2/posts GET /wp/v2/posts #
POST /wp/v2/posts POST /wp/v2/posts #
GET /wp/v2/posts/{id} GET /wp/v2/posts/{id} #
POST /wp/v2/posts/{id} POST /wp/v2/posts/{id} #
PUT /wp/v2/posts/{id} PUT /wp/v2/posts/{id} #
PATCH /wp/v2/posts/{id} PATCH /wp/v2/posts/{id} #
DELETE /wp/v2/posts/{id} DELETE /wp/v2/posts/{id} #
GET /wp/v2/posts/{id}/autosaves GET /wp/v2/posts/{id}/autosaves #
POST /wp/v2/posts/{id}/autosaves POST /wp/v2/posts/{id}/autosaves #
GET /wp/v2/posts/{parent}/autosaves/{id} GET /wp/v2/posts/{parent}/autosaves/{id} #
GET /wp/v2/posts/{parent}/revisions GET /wp/v2/posts/{parent}/revisions #
GET /wp/v2/posts/{parent}/revisions/{id} GET /wp/v2/posts/{parent}/revisions/{id} #
DELETE /wp/v2/posts/{parent}/revisions/{id} DELETE /wp/v2/posts/{parent}/revisions/{id} #
GET /wp/v2/product GET /wp/v2/product #
POST /wp/v2/product POST /wp/v2/product #
GET /wp/v2/product/{id} GET /wp/v2/product/{id} #
POST /wp/v2/product/{id} POST /wp/v2/product/{id} #
PUT /wp/v2/product/{id} PUT /wp/v2/product/{id} #
PATCH /wp/v2/product/{id} PATCH /wp/v2/product/{id} #
DELETE /wp/v2/product/{id} DELETE /wp/v2/product/{id} #
GET /wp/v2/product/{id}/autosaves GET /wp/v2/product/{id}/autosaves #
POST /wp/v2/product/{id}/autosaves POST /wp/v2/product/{id}/autosaves #
GET /wp/v2/product/{parent}/autosaves/{id} GET /wp/v2/product/{parent}/autosaves/{id} #
GET /wp/v2/product/{parent}/revisions GET /wp/v2/product/{parent}/revisions #
GET /wp/v2/product/{parent}/revisions/{id} GET /wp/v2/product/{parent}/revisions/{id} #
DELETE /wp/v2/product/{parent}/revisions/{id} DELETE /wp/v2/product/{parent}/revisions/{id} #
GET /wp/v2/product_attribute GET /wp/v2/product_attribute #
POST /wp/v2/product_attribute POST /wp/v2/product_attribute #
GET /wp/v2/product_attribute/{id} GET /wp/v2/product_attribute/{id} #
POST /wp/v2/product_attribute/{id} POST /wp/v2/product_attribute/{id} #
PUT /wp/v2/product_attribute/{id} PUT /wp/v2/product_attribute/{id} #
PATCH /wp/v2/product_attribute/{id} PATCH /wp/v2/product_attribute/{id} #
DELETE /wp/v2/product_attribute/{id} DELETE /wp/v2/product_attribute/{id} #
GET /wp/v2/product_capacity GET /wp/v2/product_capacity #
POST /wp/v2/product_capacity POST /wp/v2/product_capacity #
GET /wp/v2/product_capacity/{id} GET /wp/v2/product_capacity/{id} #
POST /wp/v2/product_capacity/{id} POST /wp/v2/product_capacity/{id} #
PUT /wp/v2/product_capacity/{id} PUT /wp/v2/product_capacity/{id} #
PATCH /wp/v2/product_capacity/{id} PATCH /wp/v2/product_capacity/{id} #
DELETE /wp/v2/product_capacity/{id} DELETE /wp/v2/product_capacity/{id} #
GET /wp/v2/product_category GET /wp/v2/product_category #
POST /wp/v2/product_category POST /wp/v2/product_category #
GET /wp/v2/product_category/{id} GET /wp/v2/product_category/{id} #
POST /wp/v2/product_category/{id} POST /wp/v2/product_category/{id} #
PUT /wp/v2/product_category/{id} PUT /wp/v2/product_category/{id} #
PATCH /wp/v2/product_category/{id} PATCH /wp/v2/product_category/{id} #
DELETE /wp/v2/product_category/{id} DELETE /wp/v2/product_category/{id} #
GET /wp/v2/product_market GET /wp/v2/product_market #
POST /wp/v2/product_market POST /wp/v2/product_market #
GET /wp/v2/product_market/{id} GET /wp/v2/product_market/{id} #
POST /wp/v2/product_market/{id} POST /wp/v2/product_market/{id} #
PUT /wp/v2/product_market/{id} PUT /wp/v2/product_market/{id} #
PATCH /wp/v2/product_market/{id} PATCH /wp/v2/product_market/{id} #
DELETE /wp/v2/product_market/{id} DELETE /wp/v2/product_market/{id} #
GET /wp/v2/product_material GET /wp/v2/product_material #
POST /wp/v2/product_material POST /wp/v2/product_material #
GET /wp/v2/product_material/{id} GET /wp/v2/product_material/{id} #
POST /wp/v2/product_material/{id} POST /wp/v2/product_material/{id} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/greif-wordpress-rest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

greif-wordpress-rest-openapi.yml Raw ↑
# Derived by the API Evangelist enrichment pipeline from Greif's own WordPress REST
# route-discovery document (https://www.greif.com/wp-json/, HTTP 200, 2026-09-12).
# Nothing in this file was invented: every path, method, parameter, default and enum
# is a mechanical transform of that document. See openapi/greif-wp-json-discovery.json
# for the verbatim source.
openapi: 3.1.0
info:
  title: Greif WordPress REST API (wp/v2)
  version: wp/v2
  description: The WordPress REST API namespace `wp/v2` as served by Greif at https://www.greif.com/wp-json/. Greif
    publishes no first-party developer documentation for this surface; it is the WordPress content API exposed by
    the corporate site (WP Engine hosted), extended with Greif's OWN custom post types and taxonomies — product,
    product_category, product_material, product_capacity, product_attribute, product_market, product_tag, regional_availability,
    market, technology, sustainability_items, wpsl_stores, wpsl_store_category, store_location, sales-contact, leadership-council,
    visibility and greif_custom_table — which makes the packaging product catalog, its material/capacity/market
    taxonomies and the facility locator anonymously readable as JSON. Every path, method and parameter in this document
    was mechanically derived from Greif's own route-discovery document at https://www.greif.com/wp-json/ (HTTP 200,
    554 routes across 39 namespaces, 182 of them wp/v2, fetched 2026-09-12). Nothing here was authored by hand.
    Anonymous reads were verified on /wp/v2/product, /wp/v2/product_category, /wp/v2/product_material, /wp/v2/product_capacity,
    /wp/v2/product_attribute, /wp/v2/product_market, /wp/v2/regional_availability, /wp/v2/market, /wp/v2/technology,
    /wp/v2/sustainability_items, /wp/v2/wpsl_stores, /wp/v2/store_location, /wp/v2/posts, /wp/v2/types, /wp/v2/taxonomies
    and /wp/v2/search; /wp/v2/settings and /wp/v2/users return 401. Write operations require authentication (WordPress
    application passwords or a cookie + X-WP-Nonce) and are not open to third parties.
  contact:
    name: Greif
    url: https://www.greif.com/contact/
  termsOfService: https://www.greif.com/terms-and-conditions/
externalDocs:
  description: Upstream WordPress REST API handbook (not authored by Greif)
  url: https://developer.wordpress.org/rest-api/
servers:
- url: https://www.greif.com/wp-json
  description: Greif corporate site WordPress REST API
tags:
- name: block-directory
- name: block-patterns
- name: block-renderer
- name: block-types
- name: blocks
- name: categories
- name: comments
- name: e-floating-buttons
- name: elementor_library
- name: elementor_snippet
- name: font-collections
- name: font-families
- name: global-styles
- name: greif_custom_table
- name: index
- name: jet-menu
- name: leadership-council
- name: market
- name: media
- name: menu-items
- name: menu-locations
- name: menus
- name: navigation
- name: pages
- name: pattern-directory
- name: plugins
- name: posts
- name: product
- name: product_attribute
- name: product_capacity
- name: product_category
- name: product_market
- name: product_material
- name: product_tag
- name: regional_availability
- name: sales-contact
- name: search
- name: settings
- name: sidebars
- name: statuses
- name: store_location
- name: sustainability_items
- name: tags
- name: taxonomies
- name: technology
- name: template-parts
- name: templates
- name: themes
- name: types
- name: users
- name: visibility
- name: widget-types
- name: widgets
- name: wp_pattern_category
- name: wpsl_store_category
- name: wpsl_stores
paths:
  /wp/v2:
    get:
      operationId: getWpV2
      summary: GET /wp/v2
      tags:
      - index
      parameters:
      - name: namespace
        in: query
        required: false
        schema:
          default: wp/v2
      - name: context
        in: query
        required: false
        schema:
          default: view
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-directory/search:
    get:
      operationId: getWpV2BlockDirectorySearch
      summary: GET /wp/v2/block-directory/search
      tags:
      - block-directory
      parameters:
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          default: 10
        description: Maximum number of items to be returned in result set.
      - name: term
        in: query
        required: true
        schema:
          type: string
        description: Limit result set to blocks matching the search term.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-patterns/categories:
    get:
      operationId: getWpV2BlockPatternsCategories
      summary: GET /wp/v2/block-patterns/categories
      tags:
      - block-patterns
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-patterns/patterns:
    get:
      operationId: getWpV2BlockPatternsPatterns
      summary: GET /wp/v2/block-patterns/patterns
      tags:
      - block-patterns
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-renderer/{name}:
    get:
      operationId: getWpV2BlockRendererByName
      summary: GET /wp/v2/block-renderer/{name}
      tags:
      - block-renderer
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum: &id001
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: attributes
        in: query
        required: false
        schema:
          type: object
          default: &id002 []
        description: Attributes for the block.
      - name: post_id
        in: query
        required: false
        schema:
          type: integer
        description: ID of the post context.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createWpV2BlockRendererByName
      summary: POST /wp/v2/block-renderer/{name}
      tags:
      - block-renderer
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                context:
                  type: string
                  enum: *id001
                  default: view
                  description: Scope under which the request is made; determines fields present in response.
                attributes:
                  type: object
                  default: *id002
                  description: Attributes for the block.
                post_id:
                  type: integer
                  description: ID of the post context.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-types:
    get:
      operationId: getWpV2BlockTypes
      summary: GET /wp/v2/block-types
      tags:
      - block-types
      parameters:
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: namespace
        in: query
        required: false
        schema:
          type: string
        description: Block namespace.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-types/{namespace}:
    get:
      operationId: getWpV2BlockTypesByNamespace
      summary: GET /wp/v2/block-types/{namespace}
      tags:
      - block-types
      parameters:
      - name: namespace
        in: path
        required: true
        schema:
          type: string
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/block-types/{namespace}/{name}:
    get:
      operationId: getWpV2BlockTypesByNamespaceByName
      summary: GET /wp/v2/block-types/{namespace}/{name}
      tags:
      - block-types
      parameters:
      - name: namespace
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/blocks:
    get:
      operationId: getWpV2Blocks
      summary: GET /wp/v2/blocks
      tags:
      - blocks
      parameters:
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          default: 10
        description: Maximum number of items to be returned in result set.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: after
        in: query
        required: false
        schema:
          type: string
        description: Limit response to posts published after a given ISO8601 compliant date.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
        description: Limit response to posts modified after a given ISO8601 compliant date.
      - name: before
        in: query
        required: false
        schema:
          type: string
        description: Limit response to posts published before a given ISO8601 compliant date.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
        description: Limit response to posts modified before a given ISO8601 compliant date.
      - name: exclude
        in: query
        required: false
        schema:
          type: array
          default: []
          items:
            type: integer
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          default: []
          items:
            type: integer
        description: Limit result set to specific IDs.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
        description: Sort collection by post attribute.
      - name: search_columns
        in: query
        required: false
        schema:
          type: array
          default: []
          items:
            type: string
        description: Array of column names to be searched.
      - name: slug
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to posts with one or more specific slugs.
      - name: status
        in: query
        required: false
        schema:
          type: array
          default: publish
          items:
            type: string
        description: Limit result set to posts assigned one or more statuses.
      - name: tax_relation
        in: query
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
        description: Limit result set based on relationship between multiple taxonomies.
      - name: wp_pattern_category
        in: query
        required: false
        schema: {}
        description: Limit result set to items with specific terms assigned in the wp_pattern_category taxonomy.
      - name: wp_pattern_category_exclude
        in: query
        required: false
        schema: {}
        description: Limit result set to items except those with specific terms assigned in the wp_pattern_category
          taxonomy.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel=next / rel=prev)
              schema:
                type: string
            X-Robots-Tag:
              description: noindex — observed on every wp/v2 response from www.greif.com
              schema:
                type: string
          content:
            application/json:
              schema: {}
        '400':
          description: rest_invalid_param — a parameter failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: rest_forbidden / rest_cannot_access — authentication required for this route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '403':
          description: rest_forbidden / rest_cannot_* — authenticated but not permitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: rest_no_route / rest_post_invalid_id — route or resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createWpV2Blocks
      summary: POST /wp/v2/blocks
      tags:
      - blocks
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  description: The date the post was published, in the site's timezone.
                date_gmt:
                  description: The date the post was published, as GMT.
                slug:
                  type: string
                  description: An alphanumeric identifier for the post unique to its type.
                status:
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  description: A named status for the post.
                password:
                  type: string
                  description: A password to protect access to the content and excerpt.
                title:
                  type: object
                  description: The title for the post.
                content:
                  type: object
                  description: The content for the post.
                excerpt:
                  type: object
                  description: The excerpt for the post.
                meta:
                  type: object
                  description: Meta fields.
                template:
                  type: string
                  description: The theme file to use to display the post.
                wp_pattern_category:
                  type: array
                  items:
                    type: integer
                  description: The terms assigned to the post in the wp_pattern_category taxonomy.
      responses:
        '200':
          description: Success
          headers:
            X-WP-Total:
              description: Total number of matching records (collection routes)
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages (collection routes)
              schema:
                type: integer
            Li

# --- truncated at 32 KB (1310 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/greif/refs/heads/main/openapi/greif-wordpress-rest-openapi.yml