#ifndef MRJUNEJUNE_ADMIN_API_H
#define MRJUNEJUNE_ADMIN_API_H

#include "dowa/dowa.h"
#include "seobeo/seobeo.h"

/* Route paths */
#define ADMIN_API_PAGE_PATH          "/admin/users"
#define ADMIN_API_LIST_PATH          "/api/admin/users"
#define ADMIN_API_PATCH_PATH         "/api/admin/users/:id"
#define ADMIN_API_REVOKE_SESS_PATH   "/api/admin/users/:id/sessions"

/* Pagination defaults */
#define ADMIN_API_DEFAULT_LIMIT  50
#define ADMIN_API_MAX_LIMIT     100

/*
 * Register all admin routes.  Call after Auth_API_Init.
 */
void Admin_API_Register_Routes(void);

#ifdef ADMIN_API_TEST_HOOKS
/*
 * Direct handler entry-points for in-process testing.
 * Only available when ADMIN_API_TEST_HOOKS is defined.
 */
Seobeo_Request_Entry *Admin_API_Test_Page_Handler(
    Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena);
Seobeo_Request_Entry *Admin_API_Test_List_Handler(
    Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena);
Seobeo_Request_Entry *Admin_API_Test_Create_Handler(
    Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena);
Seobeo_Request_Entry *Admin_API_Test_Update_Handler(
    Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena);
Seobeo_Request_Entry *Admin_API_Test_Revoke_Sessions_Handler(
    Seobeo_Request_Entry *p_req, Dowa_Arena *p_arena);
#endif /* ADMIN_API_TEST_HOOKS */

#endif /* MRJUNEJUNE_ADMIN_API_H */
