REST API

SIA Publishing and Play — REST API

Reference for all REST endpoints and WordPress hooks provided by the SIA custom plugins.

See WP-CLI.md for the command-line interface reference.


REST API

All endpoints live under /wp-json/. Routes that bypass Restricted Site Access are allowed through automatically by each plugin’s filter__restricted_site_access_is_restricted filter.


Ariel — Play entities (/wp-json/play/)

Plugin: sia-ariel Class: SIA_Ariel_REST Auth: Bearer token — Authorization: Bearer <token> where the token is password_verify-checked against the AIRTABLE_TEAM_CRM_REST_TOKEN env variable. Body: JSON, passed as the raw request body (POST/PATCH) or as a base64-encoded body query parameter (GET). Must include an environment key matching WP_ENV.

Method Route Description
GET /wp-json/play/profile Read a profile. Payload: { post_id, environment }. Returns name, active.
POST /wp-json/play/profile Create a new profile. Payload must not include post_id. Returns post_id, post_status, active.
PATCH /wp-json/play/profile Update an existing profile. Payload: { post_id, environment, … }. Returns post_id, post_status, active.
GET /wp-json/play/organization Read an organization. Payload: { post_id, environment }. Returns name.
POST /wp-json/play/organization Create an organization. Returns post_id, post_status, name.
PATCH /wp-json/play/organization Update an organization. Returns post_id, post_status, name.
GET /wp-json/play/team Read a team. Payload: { post_id, environment }. Returns name.
POST /wp-json/play/team Create a team. Returns post_id, post_status, name.
PATCH /wp-json/play/team Update a team. Returns post_id, post_status.
GET /wp-json/play/team_member Read a team member. Payload: { user_id, environment }. Returns name.
POST /wp-json/play/team_member Create a WP user and link it to a profile. Payload must include profile_post_id. Returns user_id, username, user_email, user_password, invite_sent.
PATCH /wp-json/play/team_member Update a team member’s account. Payload: { user_id, environment, … }. Returns user_id, user_email.

Ariel — A&AP data (/wp-json/team/)

Plugin: sia-ariel Class: SIA_Ariel_REST Auth: Legacy token query parameter (?token=…). Deprecated since 9.2.0 in favour of the Bearer auth used by the play/ group. Body: JSON base64-encoded in the text query parameter.

Method Route Description
GET /wp-json/team/country_aap_data Retrieve stored A&AP data for a country. Payload: { iso }. Returns the AAP object.
GET,POST /wp-json/team/store_country_aap_data Store or update A&AP data for a country. Payload: { iso, slug, state }. Returns blog_id, country.

Ariel — Slack event listener (/wp-json/app/)

Plugin: sia-ariel Class: SIA_Ariel_Slack_Event_Listener Auth: Slack signing-secret header verification.

Method Route Description
POST /wp-json/app/netcrm Receives event callbacks from the Net/CRM Slack app. Handles url_verification (challenge handshake) and event_callback (user events: team_join, user_change).

Play — Slack slash commands (/wp-json/slack/)

Plugin: sia-play Class: SIA_Play_REST Auth: token query parameter matched against a hardcoded constant. Input: Slack slash-command POST body (token, text). In development mode GET is also accepted.

Method Route Description
POST /wp-json/slack/directory Search profiles by keyword. Returns up to 5 Slack-formatted results with name, role, and team.
POST /wp-json/slack/team Show team details and active members for a country slug or all. Supports a format param (slack or JSON).
POST /wp-json/slack/glossary Search glossary terms by keyword. Returns up to 5 results.
POST /wp-json/slack/playbook Search playbook entries by keyword. Returns up to 5 results.

Play — Notifications (/wp-json/notifications/)

Plugin: sia-play Class: SIA_Play_REST Auth: Same token as Slack routes above.

Method Route Description
POST /wp-json/notifications/get_notification Return a single formatted notification by ID (hyphens converted to underscores). text param = notification ID.

Play — Community voting (/wp-json/community-voting/)

Plugin: sia-play Class: SIA_Play_REST Auth: Same token as Slack routes above.

Method Route Description
POST /wp-json/community-voting/stats Return competition voting statistics. Delegates to SIAProjectVoting::stats().

WordPress Hooks

Actions

Hook Parameters Plugin Description
sia_slack_search_{$post_type} WP_REST_Request $request, array $results sia-play Fired after every Slack search request completes, whether it found results or not. $post_type is the machine name of the searched type (e.g. profile, playbook, glossary_term). $results contains total_results, error, and output.