openapi: 3.2.0 info: title: Automattic Menus API x-derived-by: API Evangelist enrichment pipeline x-refined-note: - x-derived-from differs across the merged source definitions and was not carried version: '1.0' description: 'Operations tagged menus across 2 of this provider''s published API definitions: automattic-wordpress-com-rest-v1-1-openapi.yml, automattic-wordpress-com-wp-v2-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://public-api.wordpress.com/rest/v1.1 - url: https://public-api.wordpress.com security: - bearerAuth: [] tags: - name: menus paths: /sites/{site}/menus: get: operationId: getSitesBySiteMenus summary: Get a list of all navigation menus. description: Get a list of all navigation menus. tags: - menus responses: '200': description: OK content: application/json: schema: type: object properties: menus: type: array items: {} description: "A list of menu objects.\n\t\t\tA menu object contains a name, items, locations, etc.\n\t\t\tCheck the example response for the full structure.\n\t\t\t\n\t\t\tItem objects contain fields relating to that item, e.g. id, type, content_id,\n\t\t\tbut they can also contain other items objects - this nesting represents parents\n\t\t\tand child items in the item tree." locations: type: array items: {} description: Locations where menus can be placed. List of objects, one per location. '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: - name: site in: path required: true schema: type: string description: Site ID or domain - name: context in: query required: false schema: type: string enum: - display - edit description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..' - name: http_envelope in: query required: false schema: type: boolean description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.' - name: pretty in: query required: false schema: type: boolean description: 'false: (default); true: Output pretty JSON' - name: meta in: query required: false schema: type: string description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes' - name: fields in: query required: false schema: type: string description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title' - name: callback in: query required: false schema: type: string description: An optional JSONP callback function. servers: - url: https://public-api.wordpress.com/rest/v1.1 /sites/{site}/menus/new: post: operationId: postSitesBySiteMenusNew summary: Create a new navigation menu. description: Create a new navigation menu. tags: - menus responses: '200': description: OK content: application/json: schema: type: object properties: id: type: integer description: Newly created menu ID '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: - name: site in: path required: true schema: type: string description: Site ID or domain - name: context in: query required: false schema: type: string enum: - display - edit description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..' - name: http_envelope in: query required: false schema: type: boolean description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.' - name: pretty in: query required: false schema: type: boolean description: 'false: (default); true: Output pretty JSON' - name: meta in: query required: false schema: type: string description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes' - name: fields in: query required: false schema: type: string description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title' - name: callback in: query required: false schema: type: string description: An optional JSONP callback function. requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Name of menu servers: - url: https://public-api.wordpress.com/rest/v1.1 /sites/{site}/menus/{menu_id}: get: operationId: getSitesBySiteMenusByMenuId summary: Get a single navigation menu. description: Get a single navigation menu. tags: - menus responses: '200': description: OK content: application/json: schema: type: object properties: menu: type: object description: "A menu object.\n\t\t\tA menu object contains a name, items, locations, etc.\n\t\t\tCheck the example response for the full structure.\n\t\t\t\n\t\t\tItem objects contain fields relating to that item, e.g. id, type, content_id,\n\t\t\tbut they can also contain other items objects - this nesting represents parents\n\t\t\tand child items in the item tree." '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: - name: site in: path required: true schema: type: string description: Site ID or domain - name: menu_id in: path required: true schema: type: integer description: Menu ID - name: context in: query required: false schema: type: string enum: - display - edit description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..' - name: http_envelope in: query required: false schema: type: boolean description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.' - name: pretty in: query required: false schema: type: boolean description: 'false: (default); true: Output pretty JSON' - name: meta in: query required: false schema: type: string description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes' - name: fields in: query required: false schema: type: string description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title' - name: callback in: query required: false schema: type: string description: An optional JSONP callback function. post: operationId: postSitesBySiteMenusByMenuId summary: Update a navigation menu. description: Update a navigation menu. tags: - menus responses: '200': description: OK content: application/json: schema: type: object properties: menu: type: object description: Updated menu object '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: - name: site in: path required: true schema: type: string description: Site ID or domain - name: menu_id in: path required: true schema: type: integer description: Menu ID - name: context in: query required: false schema: type: string enum: - display - edit description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..' - name: http_envelope in: query required: false schema: type: boolean description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.' - name: pretty in: query required: false schema: type: boolean description: 'false: (default); true: Output pretty JSON' - name: meta in: query required: false schema: type: string description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes' - name: fields in: query required: false schema: type: string description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title' - name: callback in: query required: false schema: type: string description: An optional JSONP callback function. requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Name of menu items: type: array items: {} description: "A list of menu item objects.\n\t\t\t\n\t\t\tItem objects contain fields relating to that item, e.g. id, type, content_id,\n\t\t\tbut they can also contain other items objects - this nesting represents parents\n\t\t\tand child items in the item tree." servers: - url: https://public-api.wordpress.com/rest/v1.1 /sites/{site}/menus/{menu_id}/delete: post: operationId: postSitesBySiteMenusByMenuIdDelete summary: Delete a navigation menu description: Delete a navigation menu tags: - menus responses: '200': description: OK content: application/json: schema: type: object properties: deleted: type: boolean description: Has the menu been deleted? '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: - name: site in: path required: true schema: type: string description: Site ID or domain - name: menu_id in: path required: true schema: type: integer description: Menu ID - name: context in: query required: false schema: type: string enum: - display - edit description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..' - name: http_envelope in: query required: false schema: type: boolean description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.' - name: pretty in: query required: false schema: type: boolean description: 'false: (default); true: Output pretty JSON' - name: meta in: query required: false schema: type: string description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes' - name: fields in: query required: false schema: type: string description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title' - name: callback in: query required: false schema: type: string description: An optional JSONP callback function. servers: - url: https://public-api.wordpress.com/rest/v1.1 /wp/v2/sites/{wpcom_site}/menus: get: operationId: getWpV2SitesbyWpcomSiteMenus summary: GET /wp/v2/sites/{wpcom_site}/menus tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site 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. - 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: 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: 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: asc description: Order sort attribute ascending or descending. - name: orderby in: query required: false schema: type: string enum: - id - include - name - slug - include_slugs - term_group - description - count default: name description: Sort collection by term attribute. - name: hide_empty in: query required: false schema: type: boolean default: false description: Whether to hide terms not assigned to any posts. - name: post in: query required: false schema: type: integer description: Limit result set to terms assigned to a specific post. - name: slug in: query required: false schema: type: array items: type: string description: Limit result set to terms with one or more specific slugs. post: operationId: postWpV2SitesbyWpcomSiteMenus summary: POST /wp/v2/sites/{wpcom_site}/menus tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: description: type: string description: HTML description of the term. name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. meta: type: object description: Meta fields. locations: type: array items: type: string description: The locations assigned to the menu. auto_add: type: boolean description: Whether to automatically add top level pages to this menu. required: - name servers: - url: https://public-api.wordpress.com /wp/v2/sites/{wpcom_site}/menus/{id}: get: operationId: getWpV2SitesbyWpcomSiteMenusbyId summary: GET /wp/v2/sites/{wpcom_site}/menus/{id} tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: id 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. post: operationId: postWpV2SitesbyWpcomSiteMenusbyId summary: POST /wp/v2/sites/{wpcom_site}/menus/{id} tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: description: type: string description: HTML description of the term. name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. meta: type: object description: Meta fields. locations: type: array items: type: string description: The locations assigned to the menu. auto_add: type: boolean description: Whether to automatically add top level pages to this menu. put: operationId: putWpV2SitesbyWpcomSiteMenusbyId summary: PUT /wp/v2/sites/{wpcom_site}/menus/{id} tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: description: type: string description: HTML description of the term. name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. meta: type: object description: Meta fields. locations: type: array items: type: string description: The locations assigned to the menu. auto_add: type: boolean description: Whether to automatically add top level pages to this menu. patch: operationId: patchWpV2SitesbyWpcomSiteMenusbyId summary: PATCH /wp/v2/sites/{wpcom_site}/menus/{id} tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: content: application/json: schema: type: object properties: description: type: string description: HTML description of the term. name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. meta: type: object description: Meta fields. locations: type: array items: type: string description: The locations assigned to the menu. auto_add: type: boolean description: Whether to automatically add top level pages to this menu. delete: operationId: deleteWpV2SitesbyWpcomSiteMenusbyId summary: DELETE /wp/v2/sites/{wpcom_site}/menus/{id} tags: - menus responses: '200': description: OK '401': description: Authentication required content: application/json: schema: $ref: '#/components/schemas/WPRestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/WPRestError' parameters: - name: wpcom_site in: path required: true schema: type: string - name: id in: path required: true schema: type: string - name: force in: query required: false schema: type: boolean default: false description: Required to be true, as terms do not support trashing. servers: - url: https://public-api.wordpress.com components: schemas: Error: type: object description: WordPress.com REST API error envelope (observed live). properties: error: type: string examples: - not_found message: type: string WPRestError: type: object description: WordPress REST API error envelope (observed on public-api.wordpress.com). properties: code: type: string example: rest_unauthorized message: type: string example: Authentication required. data: type: object properties: status: type: integer example: 401 securitySchemes: oauth2: type: oauth2 description: WordPress.com OAuth 2.1 (see /.well-known/openid-configuration). flows: authorizationCode: authorizationUrl: https://public-api.wordpress.com/oauth2-1/authorize tokenUrl: https://public-api.wordpress.com/oauth2-1/token refreshUrl: https://public-api.wordpress.com/oauth2-1/token scopes: global: '' auth: '' openid: '' profile: '' email: '' users: '' sites: '' posts: '' comments: '' taxonomy: '' follow: '' sharing: '' freshly-pressed: '' notifications: '' insights: '' read: '' stats: '' media: '' menus: '' batch: '' videos: '' bearerAuth: type: http scheme: bearer description: 'Authorization: Bearer ' x-refined-from: - automattic-wordpress-com-rest-v1-1-openapi.yml - automattic-wordpress-com-wp-v2-openapi.yml