api functional