# Start a review generation job for given customer location Ids and review template Id

Starts a review generation job that sends the review requests to the given customer locations using an existing review template. NOTE: delivery is immediate; scheduling for a future time is not supported. The formerly documented scheduledDateTimeUtc parameter has been removed and is ignored when sent. When the user lacks the required feature or the review template id does not exist, the response is HTTP 200 with an empty jobs list and an explanatory message. If any review link cannot be resolved for any of the given locations, the entire request is rejected: no jobs are created and the failure reasons are reported in the errors field.

Endpoint: POST /customer-engagement/review-template/job
Version: 20260701

## Request fields (application/json):

  - `customerLocationIds` (array, required)
    Ids of the customer locations (created via the customer-management service) that should receive the review request

  - `reviewTemplateId` (integer, required)
    Id of an existing review template

## Response 200 fields (application/json):

  - `jobs` (array)
    Scheduled jobs, one per customer location. Empty when nothing was scheduled.

  - `jobs.batchId` (integer, required)

  - `jobs.reviewTemplate` (object)

  - `jobs.reviewTemplate.name` (string, required)

  - `jobs.reviewTemplate.bodyText` (string, required)

  - `jobs.reviewTemplate.senderEmailId` (string)

  - `jobs.reviewTemplate.senderName` (string)

  - `jobs.reviewTemplate.type` (string, required)
    Enum: "EMAIL", "SMS"

  - `jobs.reviewTemplate.createdAt` (string, required)
    UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    Example: 2026-08-04T12:34:56.789

  - `jobs.reviewTemplate.updatedAt` (string, required)
    UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    Example: 2026-08-04T12:34:56.789

  - `jobs.reviewTemplate.id` (integer)

  - `jobs.reviewTemplate.version` (integer)
    Internal optimistic-locking counter, not meaningful to API consumers

  - `jobs.customerLocationId` (integer, required)

  - `jobs.status` (string, required)
    Enum: "CREATED", "IN_PROGRESS", "DONE", "FAILED"

  - `jobs.createdAt` (string, required)
    UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    Example: 2026-08-04T12:34:56.789

  - `jobs.scheduledDateTimeUtc` (string, required)
    UTC date-time without timezone offset, formatted as yyyy-MM-dd'T'HH:mm:ss.SSS
    Example: 2026-08-04T12:34:56.789

  - `jobs.id` (integer)

  - `jobs.version` (integer)
    Internal optimistic-locking counter, not meaningful to API consumers

  - `message` (string)
    Explanation when nothing or only part of the request could be scheduled

  - `errors` (array, required)
    Validation problems that blocked scheduling, e.g. review links that cannot be resolved for a location

## Response 500 fields (application/json):

  - `errorMessage` (string, required)
    Human-readable error summary
    Example: An uncaught exception happened

  - `errorCode` (string)
    Reference code of the internal error report; include it when contacting support

