user-defined apis