CaaMTech Wp/v2 API
The wp/v2 API from CaaMTech — 106 operation(s) for wp/v2.
The wp/v2 API from CaaMTech — 106 operation(s) for wp/v2.
openapi: 3.2.0
info:
title: CaaMTech WordPress REST Wp/v2 API
version: wp/v2
summary: The public WordPress REST API served by caam.tech.
description: 'Machine-readable description of the REST API that caam.tech serves at /wp-json/. CaaMTech publishes no developer program and no product API; this is the standard WordPress REST API exposed by the company web site, which does make the company''s published research updates, pages, categories and media programmatically readable without credentials.
PROVENANCE: this document was DERIVED by API Evangelist from the discovery document the site itself publishes at https://caam.tech/wp-json/ (saved verbatim alongside as caamtech-wordpress-rest-routes-original.json). Every path, method, parameter name, type, enum and default below is copied from that document. CaaMTech did not author or publish this OpenAPI. Response schemas are not described in the WordPress discovery document and are therefore left open rather than invented.'
x-provenance:
method: derived
source: https://caam.tech/wp-json/
derived_from: openapi/caamtech-wordpress-rest-routes-original.json
derived_by: API Evangelist enrichment pipeline
generated: '2026-08-08'
provider_authored: false
servers:
- url: https://caam.tech/wp-json
description: WordPress REST API root on caam.tech
tags:
- name: wp/v2
paths:
/wp/v2:
get:
operationId: get_wp_v2
summary: GET /wp/v2
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: namespace
in: query
required: false
schema:
default: wp/v2
- name: context
in: query
required: false
schema:
default: view
/wp/v2/posts:
get:
operationId: get_wp_v2_posts
summary: GET /wp/v2/posts
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
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
minimum: 1
description: Current page of the collection.
- name: per_page
in: query
required: false
schema:
type: integer
default: 10
minimum: 1
maximum: 100
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
format: date-time
description: Limit response to posts published after a given ISO8601 compliant date.
- name: modified_after
in: query
required: false
schema:
type: string
format: date-time
description: Limit response to posts modified after a given ISO8601 compliant date.
- name: author
in: query
required: false
schema:
type: array
default: []
items:
type: integer
description: Limit result set to posts assigned to specific authors.
- name: author_exclude
in: query
required: false
schema:
type: array
default: []
items:
type: integer
description: Ensure result set excludes posts assigned to specific authors.
- name: before
in: query
required: false
schema:
type: string
format: date-time
description: Limit response to posts published before a given ISO8601 compliant date.
- name: modified_before
in: query
required: false
schema:
type: string
format: date-time
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:
enum:
- post_title
- post_content
- post_excerpt
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:
enum:
- publish
- future
- draft
- pending
- private
- trash
- auto-draft
- inherit
- request-pending
- request-confirmed
- request-failed
- request-completed
- in-progress
- failed
- acf-disabled
- any
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: categories
in: query
required: false
schema:
type:
- object
- array
description: Limit result set to items with specific terms assigned in the categories taxonomy.
- name: categories_exclude
in: query
required: false
schema:
type:
- object
- array
description: Limit result set to items except those with specific terms assigned in the categories taxonomy.
- name: tags
in: query
required: false
schema:
type:
- object
- array
description: Limit result set to items with specific terms assigned in the tags taxonomy.
- name: tags_exclude
in: query
required: false
schema:
type:
- object
- array
description: Limit result set to items except those with specific terms assigned in the tags taxonomy.
- name: sticky
in: query
required: false
schema:
type: boolean
description: Limit result set to items that are sticky.
- name: ignore_sticky
in: query
required: false
schema:
type: boolean
default: true
description: Whether to ignore sticky posts or not.
- name: format
in: query
required: false
schema:
type: array
items:
enum:
- standard
- aside
- chat
- gallery
- link
- image
- quote
- status
- video
- audio
type: string
description: Limit result set to items assigned one or more given formats.
post:
operationId: post_wp_v2_posts
summary: POST /wp/v2/posts
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
date:
type: string
format: date-time
description: The date the post was published, in the site's timezone.
date_gmt:
type: string
format: date-time
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
- in-progress
- failed
- 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
properties:
raw:
description: Title for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML title for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
description: The title for the post.
content:
type: object
properties:
raw:
description: Content for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML content for the post, transformed for display.
type: string
context:
- view
- edit
readonly: true
block_version:
description: Version of the content block format used by the post.
type: integer
context:
- edit
readonly: true
protected:
description: Whether the content is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The content for the post.
author:
type: integer
description: The ID for the author of the post.
excerpt:
type: object
properties:
raw:
description: Excerpt for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML excerpt for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
protected:
description: Whether the excerpt is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The excerpt for the post.
featured_media:
type: integer
description: The ID of the featured media for the post.
comment_status:
type: string
enum:
- open
- closed
description: Whether or not comments are open on the post.
ping_status:
type: string
enum:
- open
- closed
description: Whether or not the post can be pinged.
format:
type: string
enum:
- standard
- aside
- chat
- gallery
- link
- image
- quote
- status
- video
- audio
description: The format for the post.
meta:
type: object
properties:
_acf_changed:
type: boolean
title: ''
description: ''
default: false
footnotes:
type: string
title: ''
description: ''
default: ''
description: Meta fields.
sticky:
type: boolean
description: Whether or not the post should be treated as sticky.
template:
type: string
description: The theme file to use to display the post.
categories:
type: array
items:
type: integer
description: The terms assigned to the post in the category taxonomy.
tags:
type: array
items:
type: integer
description: The terms assigned to the post in the post_tag taxonomy.
security:
- applicationPassword: []
- cookieAuth: []
/wp/v2/posts/{id}:
get:
operationId: get_wp_v2_posts_id
summary: GET /wp/v2/posts/{id}
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- 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.
- name: excerpt_length
in: query
required: false
schema:
type: integer
description: Override the default excerpt length.
- name: password
in: query
required: false
schema:
type: string
description: The password for the post if it is password protected.
post:
operationId: post_wp_v2_posts_id
summary: POST /wp/v2/posts/{id}
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
date:
type: string
format: date-time
description: The date the post was published, in the site's timezone.
date_gmt:
type: string
format: date-time
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
- in-progress
- failed
- 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
properties:
raw:
description: Title for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML title for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
description: The title for the post.
content:
type: object
properties:
raw:
description: Content for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML content for the post, transformed for display.
type: string
context:
- view
- edit
readonly: true
block_version:
description: Version of the content block format used by the post.
type: integer
context:
- edit
readonly: true
protected:
description: Whether the content is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The content for the post.
author:
type: integer
description: The ID for the author of the post.
excerpt:
type: object
properties:
raw:
description: Excerpt for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML excerpt for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
protected:
description: Whether the excerpt is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The excerpt for the post.
featured_media:
type: integer
description: The ID of the featured media for the post.
comment_status:
type: string
enum:
- open
- closed
description: Whether or not comments are open on the post.
ping_status:
type: string
enum:
- open
- closed
description: Whether or not the post can be pinged.
format:
type: string
enum:
- standard
- aside
- chat
- gallery
- link
- image
- quote
- status
- video
- audio
description: The format for the post.
meta:
type: object
properties:
_acf_changed:
type: boolean
title: ''
description: ''
default: false
footnotes:
type: string
title: ''
description: ''
default: ''
description: Meta fields.
sticky:
type: boolean
description: Whether or not the post should be treated as sticky.
template:
type: string
description: The theme file to use to display the post.
categories:
type: array
items:
type: integer
description: The terms assigned to the post in the category taxonomy.
tags:
type: array
items:
type: integer
description: The terms assigned to the post in the post_tag taxonomy.
security:
- applicationPassword: []
- cookieAuth: []
put:
operationId: put_wp_v2_posts_id
summary: PUT /wp/v2/posts/{id}
tags:
- wp/v2
responses:
'200':
description: Successful response
content:
application/json:
schema: {}
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: No route was found matching the URL and request method
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
date:
type: string
format: date-time
description: The date the post was published, in the site's timezone.
date_gmt:
type: string
format: date-time
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
- in-progress
- failed
- 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
properties:
raw:
description: Title for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML title for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
description: The title for the post.
content:
type: object
properties:
raw:
description: Content for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML content for the post, transformed for display.
type: string
context:
- view
- edit
readonly: true
block_version:
description: Version of the content block format used by the post.
type: integer
context:
- edit
readonly: true
protected:
description: Whether the content is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The content for the post.
author:
type: integer
description: The ID for the author of the post.
excerpt:
type: object
properties:
raw:
description: Excerpt for the post, as it exists in the database.
type: string
context:
- edit
rendered:
description: HTML excerpt for the post, transformed for display.
type: string
context:
- view
- edit
- embed
readonly: true
protected:
description: Whether the excerpt is protected with a password.
type: boolean
context:
- view
- edit
- embed
readonly: true
description: The excerpt for the post.
featured_media:
type: integer
description: The ID of the featured media for the post.
comment_status:
type: string
enum:
- open
- closed
description: Whether or not comments are open on the post.
ping_status:
type: string
enum:
- open
- closed
description: Whether or not the post can be pinged.
format:
type: string
enum:
- standard
- aside
- chat
- gallery
- link
- image
- quote
- status
- video
- audio
description: The format for the post.
meta:
type: object
properties:
_acf_changed:
type: boolean
title: ''
description: ''
default: false
footnotes:
type: string
title: ''
description: ''
default: ''
description: Meta fields.
# --- truncated at 32 KB (567 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/caamtech/refs/heads/main/openapi/caamtech-wp-v2-api-openapi.yml