Updating the vertex positions of a ray-picked face

i am porting my old editor from desktop opengl to webgl using threejs,
my goal is to select a face of a mesh, get the face, and the modify the mesh by raising or lowering the Y of the vertices.

I am doing initial discovery prior to implementation and I can see that the Raycast.IntersectObject returns information such as face, faceIndex and object as described here: three.js docs

now my question is, is it possible to modify the vertices of a face using this returned face?
or what are the ways to performed this? (modifying a vertex of a selected face)

As to updating vertices in general, a geometry contains an array of x,y,z triplets for each vertex, that can be accessed like so: geometry.attributes.position.array, you can change any elements of this array. If you do it after the first render, you need to set the update flag for the position after the change is made: geometry.attributes.position.needsUpdate = true;

In case of indexed geometry there is also geometry.index.array that contains indexes of triplets in the position array.

After updating geometry you might also want to update normals and uvs.

It is actually not recommended to directly access BufferAttribute.array unless you really know what you are doing. Users might unknowingly work with interleaved data in which context the direct array access breaks.

Ideally, you access buffer attribute data over the get/set interface. Apart from that, there are a few convenience methods called fromBufferAttribute() which makes it a bit easier to read buffer data into vectors. Example:

vector.fromBufferAttribute( attribute, 0 );

using vector.fromBufferAttribute doesnt really solves and achieve the goal, doesnt it?
I assume the vertices are just copied to the vector and not referenced it, so if I update the values in the vector, it will not update the values in the buffer, unless im mistaken?

Yes, you have to write the vertex back to the attribute after updating them.