generated: '2026-08-12' method: derived source: >- openapi/_original/effect-photonics-wp-rest-openapi.yml plus live response headers observed on https://effectphotonics.com/wp-json/ and https://effectphotonics.com/wp-json/wp/v2/posts on 2026-08-12 summary: >- The cross-cutting semantics of the WordPress REST API as this host actually serves it. Every field below was read from the live route-discovery document or from response headers observed on the wire; the provider publishes no API documentation of its own, so nothing here is quoted from a developer portal because there is none. authentication: style: none-for-public-reads public_read: >- Published content in wp/v2 is readable with no credential (HTTP 200 observed on posts, pages, product, career, event, partner, team, faq and the taxonomy collections). privileged: - {mechanism: application-password, transport: HTTP Basic, authorize_url: 'https://effectphotonics.com/wp-admin/authorize-application.php'} - {mechanism: cookie + nonce, header: X-WP-Nonce} - {mechanism: oauth2, scope: mcp, applies_to: 'the /wp-json/mcp namespace only'} detail: authentication/effect-photonics-authentication.yml idempotency: supported: false header: null note: >- No idempotency contract exists on this surface. WordPress exposes no idempotency-key header, the route-discovery document declares no such parameter on any of the 439 operations, and no Idempotency pointer is emitted in apis.yml. Retrying a POST creates a second resource. pagination: style: page-number parameters: page: {type: integer, default: 1, minimum: 1} per_page: {type: integer, default: 10, minimum: 1, maximum: 100} offset: {type: integer, note: alternative to page} search: {type: string} order: {enum: [asc, desc]} orderby: {type: string, note: 'per-collection enum, e.g. date, id, title, slug, relevance'} response_headers: X-WP-Total: total matching items X-WP-TotalPages: total pages at the current per_page Link: 'RFC 8288 rel="next" / rel="prev" pagination links' exposed_via: 'Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link' observed: - {url: 'https://effectphotonics.com/wp-json/wp/v2/posts?per_page=1', x_wp_total: 144, x_wp_totalpages: 144} field_selection: sparse_fields: parameter: _fields note: Comma-separated list of top-level response fields to return; supported on every collection. embedding: parameter: _embed note: Inlines linked resources (author, featured media, terms) under _embedded. envelope: parameter: _envelope note: Wraps body, status and headers into a single JSON object for clients that cannot read headers. context: parameter: context enum: [view, embed, edit] default: view note: '`edit` requires authentication; it is the field-visibility switch, not a mode flag.' metadata: note: >- Custom fields are exposed per post type through the `meta` object only where the site registers them with show_in_rest. Product hardware attributes on this site are modelled as taxonomies (product_line, form_factor, output_power, tuning_range, target_application, temperature, management_interface), not as meta, so they are queried as term-id filters on /wp-json/wp/v2/product. request_tracing: request_id_header: null note: >- No request-id or correlation header is returned. Observed response headers are limited to content-type, link, etag, vary, x-content-type-options, x-robots-tag, the CORS expose/allow lists, and LiteSpeed cache headers (x-litespeed-cache). caching: etag: true note: >- ETag is returned on discovery and collection reads (observed `"10185-1786543658;;;"` on /wp-json/) and the origin is fronted by LiteSpeed cache (x-litespeed-cache: hit). Conditional GET with If-None-Match is therefore usable. MCP endpoints return cache-control: no-store. versioning: style: uri-namespace current: wp/v2 note: >- The version is the namespace segment (wp/v2, wp-abilities/v1, oembed/1.0, effect/v1). There is no version header, no date-based version and no published version policy. detail: lifecycle/effect-photonics-lifecycle.yml error_envelope: format: wordpress-rest rfc9457: false content_type: application/json shape: '{"code": "", "message": "", "data": {"status": }}' detail: errors/effect-photonics-problem-types.yml rate_limits: published: false response_headers: [] note: >- No RateLimit-*, X-RateLimit-* or Retry-After header was observed on any response, and the provider documents no limits. See rate-limits/effect-photonics-rate-limits.yml. cors: allow_headers: [Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type] expose_headers: [X-WP-Total, X-WP-TotalPages, Link] batching: endpoint: /wp-json/batch/v1 method: POST note: >- WordPress request batching — up to 25 sub-requests, with a `validation` mode of `require-all-validate` (default) or `normal`. Advertised in the live route-discovery document. x-evidence: fetched: '2026-08-12' probes: - {url: 'https://effectphotonics.com/wp-json/', http_status: 200} - {url: 'https://effectphotonics.com/wp-json/wp/v2/posts?per_page=1', http_status: 200} - {url: 'https://effectphotonics.com/wp-json/wp/v2/product?per_page=2', http_status: 200}