Hype5 Theater 0.6.17 · Pre-release
REST API
On this page
Hype5 Theater offers three public, read-only REST routes under the namespace hype5-theater/v1, and adjusts some core WordPress REST routes so that they follow the plugin's visibility rules. The routes under hype5-theater/v1/app/ are the private API of the Hype5 app: they require a logged-in user with access to the app, may change in any release and are not a public contract.
All public routes are GET, need no authentication and return JSON. Paths below are relative to the REST root, for example https://example.com/wp-json/hype5-theater/v1/productions.
GET /hype5-theater/v1/productions
Published productions, in WordPress's default order (newest first).
| Parameter | Default | Notes |
|---|---|---|
per_page |
12 |
Clamped to 1–100. |
Each item:
| Field | Type | Notes |
|---|---|---|
id |
integer | |
title |
string | WordPress title; for a password-protected production it carries WordPress's Protected: prefix. |
url |
string | Permalink. |
excerpt |
string | Teaser, or the WordPress excerpt; empty while this visitor must enter a password for the production or another language version of it. |
premiere |
string | Premiere date as stored (YYYY-MM-DD) or empty. |
protected |
boolean | true when the production, its original-language version or its reader's-language version has a password. |
status |
string | Repertory status: coming, playing, paused, archived (empty storage is reported as playing). |
elab_id |
integer | ELAB identifier, or 0. |
elab_url |
string | ELAB link, or empty. |
GET /hype5-theater/v1/performances
Upcoming performances, earliest first.
| Parameter | Default | Notes |
|---|---|---|
per_page |
20 |
Clamped to 1–100. |
production |
0 |
Production ID. |
Without production, only performances of productions that are public to everyone are returned: published without a password, both in the original language and in the reader's language. With production, the list is empty when the production is not published or when this visitor still has to enter its password (on any language version); a visitor who has entered the password (WordPress's password cookie) receives the performances.
Each item:
| Field | Type | Notes |
|---|---|---|
id, production_id |
integer | production_id is the original-language production. |
production, production_url |
string | Title and link in the reader's language when that version is published. |
venue |
string or null | Venue title; null when there is no venue or it is not published. |
starts_at_utc, ends_at_utc |
string or null | ISO 8601 in UTC, for example 2026-11-14T17:00:00Z; ends_at_utc may be null. |
timezone |
string | The performance's own time zone (IANA name or offset). |
status |
string | scheduled, sold_out, cancelled or postponed. Cancelled and postponed future performances are included. |
room |
string | |
ticket_url |
string | URL of the first ticket offer, or empty (kept for older clients). |
ticket_offers |
array | Each offer: provider, label, url, price_min, price_max, currency, availability (available, sold_out, closed, unknown), note, sort_order. |
Internal notes and attendance are never included. A client should apply its own purchase rule; the plugin shows a purchase link only for a future, scheduled performance whose offer has a URL and availability available or unknown.
GET /hype5-theater/v1/productions/{id}/credits
Public credits of a published production, in editor order.
| Response | When |
|---|---|
404 hype5t_not_found |
The ID is not a published production, or its original-language production (which owns the credits) is not published. |
401 hype5t_password_required |
This visitor must enter a password for the production, its original-language version or its reader's-language version. |
Each item:
| Field | Type | Notes |
|---|---|---|
id |
integer | Credit row ID. |
person_id |
integer or null | null for a name without a profile. |
person |
string | Display name. Credits whose profile is not published are left out. |
person_url |
string or null | null when the profile page is not allowed or there is no profile. |
role |
string | The job. |
character |
string | |
group |
string | cast, creative, production, technical, thanks (or a legacy value). |
alternate_group |
string or null | Rows with the same value form an alternating set. |
Hidden credits are never returned.
Core WordPress routes
The post types hype5t_production, hype5t_person and hype5t_venue and the taxonomies hype5t_genre, hype5t_audience, hype5t_warning and hype5t_profession are registered with show_in_rest, so the core routes /wp/v2/hype5t_production and so on exist. The plugin changes them as follows:
- People with a hidden profile are left out of
/wp/v2/hype5t_personfor users who cannot edit people, and a single request for one returns404hype5t_profile_hiddenunless the user can edit it. - Sitemaps leave out people with a hidden profile, and so do
/wp/v2/search, site search and feeds (also translations of a hidden original). - Registered meta. The Hype5 post types do not declare
custom-fieldssupport, so core responses carry nometaobject. If a site adds that support, the plugin masks values for users who cannot edit the production: the premiere venue is reported only while that venue is published, and a password-protected production's Hype5 values are emptied except premiere, repertory status and ELAB identifiers, unless the request carries the rightpasswordparameter.
WordPress itself protects the content and excerpt of password-protected posts in core responses.
Private app routes
/hype5-theater/v1/app/* serves the Hype5 app: productions, credits, people, performances, venues, appearance, vocabularies, settings and the overview. Every route requires a logged-in user, access to the app (hype5_theater_fuajee_enabled) and the same capability as the corresponding classic screen; answers are not cached. These routes are an implementation detail of the app. Do not build integrations on them.