The job.status can be returned any time during the job run, where as the result.status (and result section in its entirety) is only returned in the response body after the job we are querying has run to completion. Therefore the job.status and result.status value will always be the same, however the job.status has a larger range of possible values, since it will also return the status whilst the job is in progress.
The list of possible values is as follows:
SUBMITTED - The job has been received by the FME Server but has not been added to the job queue.
QUEUED - The job has been added to the job queue and is waiting for a free FME Engine before it is processed.
ABORTED - The job has been aborted.
SUCCESS - The job has been completed and the FME Engine reported that the transformation was successful.
FME_FAILURE - The job has completed, but the FME Engine reported a failure while attempting to run the translation.
JOB_FAILURE - FME Server could not process the job. (If a job fails in this way, this is when Job Recovery will kick in).
PULLED - The job has been pulled from the queue and us being processed by FME Engine.
The job.status can return any of the values above and the result.status will only ever return ABORTED, SUCCESS, FME_FAILURE, JOB_FAILURE as these are the ones that indicate the job has finished processing.
As well as GET /transformations/jobs/completed other requests that will return the job.status and result.status are:
GET /transformations/jobs/id/< jobid >
GET /transformations/jobs/id/< jobid >/result
GET /transformations/jobs/id/queued
GET /transformations/jobs/id/running