Yes, that is possible.
You have to pull in the current access rules for the project, create the new access rule, add the new rule to the existing rules array, and then PUT the array back onto the project.
1. Current access rules: GET call, field = accessRules:*
2. Create a collection including:
• coreAction (string, the permission you want to grant, in this case VIEW),
• objCode (string) = ACSRUL,
• accessorID (string, ID of object you are granting access, i.e. user),
• securityObjID (string, ID of the object whose permission you are changing, in this case project ID)
• accessorObjCode (string, object code you are granting access, i.e. user)
• securityObjCode (string, object code you are adding the permission to, PROJ in this case)
• forbiddenActions (array of strings, actions which are forbidden)
• secondaryActions (array of strings, actions which are permitted)
3. Merge 1 and 2 into a single array
4. PUT call to {objCode}/{ID}/?fields=accessRules, include array from 3 in body as json string