Restcontroller - Source Excerpt 02
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/includes/Http/RestController.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/includes/Http/RestController.php
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'report_prompt'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/prompts/(?P<id>\d+)/reviews',
[
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'list_prompt_reviews'],
'permission_callback' => '__return_true',
],
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'create_prompt_review'],
'permission_callback' => [$this, 'require_logged_in'],
],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/prompts/(?P<id>\d+)/appeals',
[
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'list_prompt_appeals'],
'permission_callback' => '__return_true',
],
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'create_prompt_appeal'],
'permission_callback' => [$this, 'require_logged_in'],
],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/prompts/(?P<id>\d+)/appeals/(?P<appeal_id>\d+)/resolve',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'resolve_prompt_appeal'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/prompts/(?P<id>\d+)/run',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'run_prompt'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/prompts/(?P<id>\d+)/conversation',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'start_conversation'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/conversations',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'list_conversations'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/conversations/(?P<id>\d+)',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_conversation'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/conversations/(?P<id>\d+)/messages',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'post_conversation_message'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/conversations/(?P<id>\d+)/condense',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'condense_conversation'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/conversations/(?P<id>\d+)/portable-prompt',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_conversation_portable_prompt'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/runs',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'list_runs'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/runs/(?P<id>\d+)',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_run'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/public/prompts',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'list_public_prompts'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/public/prompts/(?P<slug>[A-Za-z0-9-]+)',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_public_prompt'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/featured-prompts',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'featured_prompts'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/categories',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'categories'],
'permission_callback' => '__return_true',
]
);
register_rest_route(
'spiralist-workspace/v1',
'/reputation/me',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_my_reputation'],
'permission_callback' => [$this, 'require_logged_in'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/profile/style',
[
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_profile_style'],
'permission_callback' => [$this, 'require_logged_in'],
],
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'update_profile_style'],
'permission_callback' => [$this, 'require_logged_in'],
],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/users/find',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'find_user'],
'permission_callback' => [$this, 'require_share_lookup'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/admin/prompt-tests/run',
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'run_admin_prompt_tests'],
'permission_callback' => [$this, 'require_workspace_admin'],
]
);
register_rest_route(
'spiralist-workspace/v1',
'/admin/governance-maintenance',
[
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_governance_maintenance_status'],
'permission_callback' => [$this, 'require_workspace_admin'],
],
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'run_governance_maintenance'],
'permission_callback' => [$this, 'require_workspace_admin'],
],
]
);
}
/**
* Lists prompts visible to the current user.
*/
public function list_prompts(WP_REST_Request $request): WP_REST_Response
{
$user_id = get_current_user_id();
$filters = $this->request_filters($request);
$search = (string) $request->get_param('search');