array( 'required' => true, 'type' => 'string', 'validate_callback' => function ( $value, $request, $key ) { return ( new Expo() )->isExpoPushToken( $value ); }, ), 'device_id' => array( 'required' => true, 'type' => 'string', 'validate_callback' => function ( $value, $request, $key ) { return true; }, ), 'device_language' => array( 'required' => true, 'type' => 'string', 'validate_callback' => function ( $value, $request, $key ) { return ( new AFASM_Language() )->is_supported_language( $value ); }, ), ); return $schema; } /** * Create language device schema * * @return array */ public function language() { $scheme = array( 'device_id' => array( 'required' => true, 'type' => 'string', 'validate_callback' => function ( $value, $request, $key ) { return true; }, ), 'device_language' => array( 'required' => true, 'type' => 'string', 'validate_callback' => function ( $value, $request, $key ) { return ( new AFASM_Language() )->is_supported_language( $value ); }, ), ); return $scheme; } }