Elastic Path Jobs API

Jobs manage the indexing operations for catalog search. When catalogs are published or when reindexing is required, jobs process the product data and build search indexes. ### Job Types | Type | Description | |---------------------------|-----------------------------------------------------------------------------------------------------| | `index-release` | Index a specific catalog release. Created automatically when a search-enabled catalog is published. | | `delete-release` | Remove the search index for a catalog release. | | `reindex-tenant-releases` | Reindex all catalog releases for the store. Use when indexable fields have changed. | ### Job Lifecycle Jobs progress through the following states: 1. **pending**: Job has been created and is waiting to be processed 2. **processing**: Job is actively indexing products 3. **complete**: Job finished successfully 4. **failed**: Job encountered an error ### Automatic Indexing When you publish a catalog with search enabled, an `index-release` job is automatically created. The catalog release remains in a publishing state until the indexing job completes successfully. ### Manual Reindexing Use the reindex endpoint when: - You've added, modified, or deleted indexable fields - Search indexes are out of sync (check via [Search Indexes](/docs/api/pxm/catalog-search/search-indexes)) - You need to rebuild indexes after a failure The reindex operation creates jobs for all catalog releases that need updating. You can optionally force a full reindex of all releases regardless of their sync status. ### Conflict Handling Only one reindexing operation can run at a time. If you attempt to start a reindex while another is in progress, the API returns a 409 Conflict error.

Operations 13

POST /pcm/catalogs/reindex-releases Reindex all releases for tenant #
GET /v2/jobs Get All Jobs #
POST /v2/jobs Create Job #
GET /v2/jobs/{jobID} Get a Job #
GET /v2/jobs/{jobID}/file Get a Job File #
GET /pcm/jobs Get All Jobs #
GET /pcm/jobs/{jobID} Get a Job #
POST /pcm/jobs/{jobID}/cancel Cancel a Job #
GET /pcm/jobs/{jobID}/errors Get Job Errors #
POST /v2/subscriptions/jobs Create a job #
GET /v2/subscriptions/jobs List jobs #
GET /v2/subscriptions/jobs/{job_uuid} Get job #
DELETE /v2/subscriptions/jobs/{job_uuid} Delete job #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/elastic-path-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

elastic-path-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Elastic Path Jobs API
  x-refined-note:
  - x-version-timestamp differs across the merged source definitions and was not carried
  version: '1.0'
  description: 'Operations tagged Jobs across 4 of this provider''s published API definitions: catalog-search.yaml, exporter.yaml, pim.yaml, subscriptions.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://euwest.api.elasticpath.com/v2
  description: EU west cluster
- url: https://useast.api.elasticpath.com/v2
  description: US east cluster
- url: https://api.moltin.com
  description: EU West Production Server
- url: https://useast.api.elasticpath.com
  description: US East Production Server
- url: https://euwest.api.elasticpath.com
  description: EU West Production Server
tags:
- name: Jobs
  description: 'Jobs manage the indexing operations for catalog search. When catalogs are published or when reindexing is required, jobs process the product data and build search indexes.


    ### Job Types


    | Type                      | Description                                                                                         |

    |---------------------------|-----------------------------------------------------------------------------------------------------|

    | `index-release`           | Index a specific catalog release. Created automatically when a search-enabled catalog is published. |

    | `delete-release`          | Remove the search index for a catalog release.                                                      |

    | `reindex-tenant-releases` | Reindex all catalog releases for the store. Use when indexable fields have changed.                 |


    ### Job Lifecycle


    Jobs progress through the following states:


    1. **pending**: Job has been created and is waiting to be processed

    2. **processing**: Job is actively indexing products

    3. **complete**: Job finished successfully

    4. **failed**: Job encountered an error


    ### Automatic Indexing


    When you publish a catalog with search enabled, an `index-release` job is automatically created. The catalog release remains in a publishing state until the indexing job completes successfully.


    ### Manual Reindexing


    Use the reindex endpoint when:


    - You''ve added, modified, or deleted indexable fields

    - Search indexes are out of sync (check via [Search Indexes](/docs/api/pxm/catalog-search/search-indexes))

    - You need to rebuild indexes after a failure


    The reindex operation creates jobs for all catalog releases that need updating. You can optionally force a full reindex of all releases regardless of their sync status.


    ### Conflict Handling


    Only one reindexing operation can run at a time. If you attempt to start a reindex while another is in progress, the API returns a 409 Conflict error.

    '
paths:
  /pcm/catalogs/reindex-releases:
    post:
      tags:
      - Jobs
      operationId: ReindexTenantReleases
      summary: Reindex all releases for tenant
      description: Create a new job to reindex all releases for the tenant.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReindexTenantReleasesJobRequest'
      responses:
        '200':
          description: Reindex tenant releases request successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict - another reindexing job already queued or in progress
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - BearerToken: []
    servers:
    - url: https://euwest.api.elasticpath.com/v2
      description: EU west cluster
    - url: https://useast.api.elasticpath.com/v2
      description: US east cluster
  /v2/jobs:
    get:
      tags:
      - Jobs
      summary: Get All Jobs
      description: You can use this endpoint to display the status of your jobs.
      operationId: getMultipleJobs
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Job_2'
              examples:
                default:
                  value:
                    data:
                    - id: 974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      type: job
                      job_type: order_export
                      status: failed
                      error: No results matched the supplied filter
                      link:
                        href: ''
                      links:
                        self: https://useast.api.elasticpath.com/v2/jobs/974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      timestamps:
                        created_at: '2018-10-04T11:08:49.156490335Z'
                        updated_at: '2018-10-04T11:08:49.162867081Z'
        '500':
          $ref: '#/components/responses/InternalServerError_2'
      security:
      - bearerAuth: []
    post:
      tags:
      - Jobs
      summary: Create Job
      description: Create a Job to export orders to a CSV file. Jobs automatically expire one week after creation. You must fetch the exported data before the jobs expire.
      operationId: createJob
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CreateJob'
              - examples:
                - data:
                    description: Extends the default product object
                    enabled: true
                    name: Products
                    slug: products
                    type: flow
              contentMediaType: application/json
            examples:
              default:
                value:
                  data:
                    filter: gt(created_at,2018-09-01):lt(created_at,2018-10-01):eq(payment,refunded)
                    job_type: order_export
                    type: job
        required: true
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Job_2'
              examples:
                default:
                  value:
                    data:
                    - id: 974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      type: job
                      job_type: order_export
                      status: failed
                      error: No results matched the supplied filter
                      link:
                        href: ''
                      links:
                        self: https://useast.api.elasticpath.com/v2/jobs/974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      timestamps:
                        created_at: '2018-10-04T11:08:49.156490335Z'
                        updated_at: '2018-10-04T11:08:49.162867081Z'
        '500':
          $ref: '#/components/responses/InternalServerError_2'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.moltin.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /v2/jobs/{jobID}:
    get:
      tags:
      - Jobs
      summary: Get a Job
      description: Retrieves the specified job.
      operationId: getAJob
      parameters:
      - name: jobID
        description: The unique identifier of the requested job.
        in: path
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Job_2'
              examples:
                default:
                  value:
                    data:
                      id: 974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      type: job
                      job_type: order_export
                      status: failed
                      error: No results matched the supplied filter
                      link:
                        href: ''
                      links:
                        self: https://useast.api.elasticpath.com/v2/jobs/974c9db4-38da-4dbf-90c2-33eed5f3e77c
                      timestamps:
                        created_at: '2018-10-04T11:08:49.156490335Z'
                        updated_at: '2018-10-04T11:08:49.162867081Z'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError_2'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.moltin.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /v2/jobs/{jobID}/file:
    get:
      tags:
      - Jobs
      summary: Get a Job File
      description: Retrieves a link to the CSV file that contains your exported order.
      operationId: getAJobFile
      parameters:
      - name: jobID
        description: The unique identifier of the job whose CSC file you want to retrieve.
        in: path
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/FileLink'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError_2'
      security:
      - bearerAuth: []
    servers:
    - url: https://api.moltin.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /pcm/jobs:
    get:
      summary: Get All Jobs
      description: The jobs endpoints displays the status of a number of endpoints that function as jobs, for example, product import and export, price book import, building child products, and duplicating hierarchies.
      operationId: getAllJobs
      tags:
      - Jobs
      responses:
        '200':
          description: Returns all the jobs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/multi'
              examples:
                completed:
                  summary: Get all jobs
                  $ref: '#/components/examples/multi'
        '400':
          $ref: '#/components/responses/bad_request'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
      security:
      - bearerAuth: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /pcm/jobs/{jobID}:
    get:
      summary: Get a Job
      operationId: getJob
      tags:
      - Jobs
      parameters:
      - $ref: '#/components/parameters/job_id'
      responses:
        '200':
          description: Returns a job with the following attributes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/single'
              examples:
                started:
                  summary: Started Job
                  $ref: '#/components/examples/started'
                successful:
                  summary: Product Import Job
                  $ref: '#/components/examples/successful'
                product-export:
                  summary: Product Export Job
                  $ref: '#/components/examples/product-export'
                hierarchy-duplicate:
                  summary: Hierarchy Duplicate Job
                  $ref: '#/components/examples/hierarchy-duplicate'
                build-child-products:
                  summary: Build Child Products Job
                  $ref: '#/components/examples/build-child-products'
        '400':
          $ref: '#/components/responses/bad_request'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
      security:
      - bearerAuth: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /pcm/jobs/{jobID}/cancel:
    post:
      summary: Cancel a Job
      description: 'The jobs endpoints display the status of a number of endpoints that function as jobs, for example, product import and export, and duplicating hierarchies.


        Jobs are processed one at a time. You can continue to send job requests, but those jobs are queued. In other words, Commerce looks for any jobs that have a status of PENDING and starts the job with the earliest created date. If you decide that a specific job needs to be prioritized over another, you can cancel the less critical job using the `Cancel a job` endpoint. You can only cancel jobs whose status is PENDING.

        '
      operationId: cancelJob
      tags:
      - Jobs
      requestBody:
        content:
          application/json:
            schema:
              type: object
      parameters:
      - $ref: '#/components/parameters/job_id'
      responses:
        '200':
          description: Successfully cancelled job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/single'
              examples:
                cancelled:
                  summary: Cancelled Job
                  $ref: '#/components/examples/cancelled'
        '400':
          $ref: '#/components/responses/bad_request'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
      security:
      - bearerAuth: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /pcm/jobs/{jobID}/errors:
    get:
      summary: Get Job Errors
      operationId: getJobErrors
      tags:
      - Jobs
      parameters:
      - $ref: '#/components/parameters/job_id'
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
              examples:
                errors:
                  summary: Errors Returned
                  $ref: '#/components/examples/errors'
        '400':
          $ref: '#/components/responses/bad_request'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
      security:
      - bearerAuth: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU West Production Server
    - url: https://useast.api.elasticpath.com
      description: US East Production Server
  /v2/subscriptions/jobs:
    parameters:
    - $ref: '#/components/parameters/Filter'
    post:
      tags:
      - Jobs
      summary: Create a job
      operationId: CreateJob
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: JobCreateJSON
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/JobCreate'
      responses:
        '201':
          description: Success. The job was created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Job_3'
        '400':
          $ref: '#/components/responses/ValidationError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - BearerToken: []
    get:
      tags:
      - Jobs
      summary: List jobs
      description: "Retrieves a list of all jobs.\n\n### Filtering\n\nThis endpoint supports filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering).\n\nThe following attributes and operators are supported.\n\n| Operator | Attribute | Description |\n| --- | --- | --- | \n| `eq` | `external_ref` | Equals. Checks if the values of two operands are equal. If they are, the condition is true. |\n| `in` | `external_ref` | In. Checks if the value is in the specified list. If it is, the condition is true. |\n"
      parameters:
      - $ref: '#/components/parameters/PageOffset'
      - $ref: '#/components/parameters/PageLimit'
      operationId: ListJobs
      responses:
        '200':
          description: Success. A list of jobs is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Job_3'
                  links:
                    $ref: '#/components/schemas/Links_2'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - BearerToken: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU west cluster
    - url: https://useast.api.elasticpath.com
      description: US east cluster
  /v2/subscriptions/jobs/{job_uuid}:
    parameters:
    - name: job_uuid
      in: path
      description: The unique identifier of the job.
      required: true
      schema:
        $ref: '#/components/schemas/UUID_2'
    get:
      tags:
      - Jobs
      summary: Get job
      operationId: GetJob
      responses:
        '200':
          description: Success. The job is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Job_3'
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          $ref: '#/components/responses/NotFoundError_2'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - BearerToken: []
    delete:
      tags:
      - Jobs
      summary: Delete job
      operationId: DeleteJob
      responses:
        '204':
          description: Success. The job was deleted.
        '409':
          $ref: '#/components/responses/WriteConflictError'
      security:
      - BearerToken: []
    servers:
    - url: https://euwest.api.elasticpath.com
      description: EU west cluster
    - url: https://useast.api.elasticpath.com
      description: US east cluster
components:
  schemas:
    JobMetaResult:
      description: Result of the job
      type: object
    ErrorResponse:
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    JobMeta:
      description: Meta information of the job
      type: object
      properties:
        results:
          description: Results of the job
          type: array
          items:
            $ref: '#/components/schemas/JobMetaResult'
        errors:
          description: Errors occurred during the job
          type: array
          items:
            $ref: '#/components/schemas/JobMetaError'
    Job:
      type: object
      required:
      - id
      - type
      - attributes
      properties:
        id:
          description: The unique identifier for the job.
          type: string
          format: uuid
          example: 4c9efe34-57bb-4117-abed-184008d3ae0a
          x-go-name: ID
        type:
          description: The type of the resource object.
          type: string
          enum:
          - job
          example: job
        attributes:
          description: The attributes of the job.
          $ref: '#/components/schemas/JobAttributes'
        meta:
          $ref: '#/components/schemas/JobMeta'
    Error:
      required:
      - status
      - title
      properties:
        status:
          type: string
          description: The HTTP response code of the error.
          example: '500'
        title:
          type: string
          description: A brief summary of the error.
          example: Internal server error
        detail:
          type: string
          description: Optional additional detail about the error.
          example: An internal error has occurred.
        meta:
          type: object
          description: Additional supporting meta data for the error.
          example:
            missing_ids:
            - e7d50bd5-1833-43c0-9848-f9d325b08be8
    JobMetaError:
      type: object
      required:
      - detail
      properties:
        detail:
          description: A string describing the error.
          type: string
          example: Failed to get release
        context:
          description: Any additional context of the error.
          type: object
    ReindexTenantReleasesJobRequest:
      type: object
      properties:
        data:
          description: The primary data for the request.
          type: object
          required:
          - force_reindex
    JobAttributes:
      type: object
      required:
      - status
      - type
      properties:
        status:
          description: The status of the job.
          type: string
          enum:
          - pending
          - processing
          - complete
          - failed
          example: pending
        catalog_id:
          description: The ID of the catalog.
          type: string
          format: uuid
          example: ac107ce9-96ac-4bd5-aa3d-59f40b91279b
          x-go-name: CatalogID
        catalog_release_id:
          description: The ID of the catalog release.
          type: string
          format: uuid
          example: c12c4e5b-f5e4-4bd0-ac86-9f1202fc27f9
          x-go-name: CatalogReleaseID
        type:
          description: The type of the job.
          type: string
          enum:
          - index-release
          - delete-release
          - reindex-tenant-releases
          example: index-release
          default: index
          x-go-type: model.JobType
          x-go-type-import:
            name: model
            path: gitlab.elasticpath.com/commerce-cloud/ncl-projects/paragon/catalog-search.svc/internal/domain/model
    Timestamps:
      type: object
      description: The date and time a job is created/updated.
      properties:
        created_at:
          description: The date and time a job is created.
          type: string
          example: '2018-10-04T11:08:49.156490335Z'
        updated_at:
          description: The date and time a job is updated.
          type: string
          example: '2018-10-04T11:08:49.162867081Z'
    UUID:
      type: string
      description: A unique ID generated when a job is created.
      format: uuid
      example: 00000000-0000-0000-0000-000000000000
    CreateJob:
      type: object
      properties:
        data:
          type: object
          properties:
            filter:
              type: string
              example: gt(created_at,2018-09-01):lt(created_at,2018-10-01):eq(payment,refunded)
            job_type:
              description: This represents the type of job. For example, `order_export`.
              type: string
              example: order_export
            type:
              description: This represents the type of object being returned. Always `job`.
              type: string
              example: job
    Job_2:
      properties:
        id:
          description: A unique ID generated when a job is created
          $ref: '#/components/schemas/UUID'
        type:
          description: This represents the type of object being returned. Always `job`.
          type: string
          example: job
        job_type:
          description: This represents the type of job. For example, `order_export`.
          type: string
          example: order_export
        status:
          description: 'The status of a job.

            - PENDING - Commerce has received the request but is currently busy processing other requests.

            - STARTED - Commerce has started processing the job.

            - SUCCESS - The job has successfully completed.

            - FAILED - The job has failed.'
          type: string
          example: failed
        error:
          description: A message describing the error that caused a job to fail.
          type: string
          example: No results matched the supplied filter
        timestamps:
          $ref: '#/components/schemas/Timestamps'
        links:
          $ref: '#/components/schemas/Links'
        link:
          $ref: '#/components/schemas/FileLink'
    Error_2:
      required:
      - status
      - title
      properties:
        status:
          type: integer
          format: int
          description: The HTTP response code of the error.
          example: 500
        title:
          type: string
          description: A brief summary of the error.
          example: Internal server error
        detail:
          type: string
          description: Optional additional detail about the error.
          example: An internal error has occurred.
        request_id:
          type: string
          description: Internal request ID.
          example: 00000000-0000-0000-0000-000000000000
        meta:
          type: object
          description: Additional supporting meta data for the error.
          example:
            missing_ids:
            - e7d50bd5-1833-43c0-9848-f9d325b08be8
    Links:
      type: object
      description: Links are used to allow you to move between requests
      properties:
        self:
          description: Single entities use a self parameter with a link to that specific resource.
          type: string
          example: https://useast.api.elasticpath.com/v2/jobs/974c9db4-38da-4dbf-90c2-33eed5f3e77c
    FileLink:
      type: object
      description: A link to the exported data.
      properties:
        href:
          description: The publicly available URL for this CSV file that contains the exported data.
          type: string
    multi_links:
      type: object
      description: 'Links allow you to navigate between pages of results.


        :::caution Planned pagination changes — on or after 1 September 2026


        The pagination behaviour of PIM list endpoints (for example, `GET /pcm/products` and `GET /pcm/hierarchies`) currently differs from the rest of the Elastic Path Commerce Cloud platform. We plan to align PIM pagination with the platform standard on or after **1 September 2026**. Please review the details below and check that your integration code will handle the new behaviour correctly.


        :::


        #### Current behaviour


        The current pagination link behaviour in PIM has the following known issues:


        - The `current` link is **not returned**.

        - The `first` and `last` links are **not always returned**.

        - The `prev` link is omitted on both the first **and** second pages. It should only be omitted on the first page.

        - The `next` link is omitted on both the last **and** second-to-last pages. It should only be omitted on the last page.


        #### Planned behaviour (on or after 1 September 2026)


        On or after 1 September 2026, PIM list endpoints will adopt the following pagination link behaviour, aligning with the rest of the platform:


        - `current` — always present, pointing to the current page.

        - `first` — always present.

        - `last` — present on all pages **except the final page**. Omitting `last` on the final page is intentional, to avoid triggering infinite‑loop bugs in integration code that uses the presence of `last` to detect whether more pages remain.

        - `next` — present on all pages except the last page.

        - `prev` — present on all pages except the first page.

        '
      properties:
        current:
          description: 'A link to the current page of results. **Note:** this link is not currently returned by PIM endpoints. It will be introduced on or after 1 September 2026.

            '
          type: string
          example: /pcm/hierarchies?page[offset]=10&page[limit]=10
        first:
          description: 'A link to the first page of results. Currently this may not always be present. After the planned changes it will always be present.

            '
          type: string
          example: /pcm/hierarchies?page[offset]=0&page[limit]=10
        last:
          description: 'A link to the last page of results. Currently this may not always be present. After the planned changes it will be present on all pages except the final page (where it is intentionally omitted).

            '
          type: string
          example: /pcm/hierarchies?page[offset]=20&page[limit]=10
        next:
          description: 'A link to the next page of results. Should be absent on the last page. Currently this is incorrectly absent on the second-to-last page as well; this will be fixed on or after 1 September 2026.

            '
          type: string
          example: /pcm/hierarchies?page[offset]=10&page[limit]=10
        prev:
          description: 'A link to the previous page of results. Should be absent on the first page. Currently this is incorrectly absent on the second page as well; this will be fixed on or after 1 September 2026.

            '
          type: string
          example: /pcm/hierarchies?page[offset]=8&page[limit]=10
    job:
      type: object
      required:
      - id
      - type
      - attributes
      - meta
      properties:
        id:
          description: A unique identifier generated when a job is created.
          type: string
        type:
          description: This represents the type of resource object being returned. Always `pim-job`.
          type: string
          enum:
          - pim-job
        attributes:
          type: object
          required:
          - started_at
          - completed_at
          - created_at
          - updated_at
          - type
          - status
          properties:
            started_at:
              description: The date and time a job is started.
              type:
              - string
              - 'null'
              example: '2020-09-22T09:00:00.000Z'
              format: date-time
            completed_at:
              type:
              - string
              - 'null'
              example: '2020-09-22T09:00:00.000Z'
              format: date-time
              description: The date and time a job is completed.
            created_at:
              type: string
              description: The date and time a job is created.
              example: '2020-09-22T09:00:00.000Z'
              format: date-time
            updated_at:
              type: string
              description: The date and time a job is updated.
              example: '2020-09-22T09:00:00.000Z'
              format: date-time
            type:
              type: string
              description: 'The status of a job.


          

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elastic-path/refs/heads/main/openapi/elastic-path-jobs-api-openapi.yml