---
title: "POST /v2/exchangeSet/s100/productVersions"
method: POST
path: "/v2/exchangeSet/s100/productVersions"
tags: ["public"]
---

# POST /v2/exchangeSet/s100/productVersions

`POST /v2/exchangeSet/s100/productVersions`

Given a list of Product name identifiers and their edition and update numbers, return all the versions of the Products that are releasable from that version onwards.

**Business Rules:**

If none of the requested products exist, the status will be Accepted and an empty Exchange Set will be created. The total number of requested products will be reflected in requestedProductsNotReturned.

If none of the requested products have updates available, the status will be Accepted and an empty Exchange Set will be created. The total number of requested products will be reflected in requestedProductsAlreadyUpToDateCount.

## Query parameters

- `callbackUri` string

## Headers

- `X-Correlation-ID` string, required

## Request body

- ProductVersionRequest[]
  - `productName` string, nullable
  - `editionNumber` integer, nullable
  - `updateNumber` integer, nullable

## Response `202`

Request to create Exchange Set is accepted. Response body has Exchange Set status URL to track changes to the status of the task. It also contains the URL that the Exchange Set will be available on as well as the number of products in that Exchange Set.

 If there are no updates for any of the productVersions, then status code 202 ('Accepted') will be returned with an empty Exchange Set and the exchangeSetProductCount will be 0.

If a requested Product has been cancelled or replaced, then the replacement Product will not be included in the response payload. Only the specific Products requested will be returned.

- CustomExchangeSetResponse
  - `links` ExchangeSetLinks, required
    - `exchangeSetBatchStatusUri` Link, required
      - `uri` string, uri, required
    - `exchangeSetBatchDetailsUri` Link, required
      - `uri` string, uri, required
    - `exchangeSetFileUri` Link2, nullable
      - `uri` string, uri, required
  - `exchangeSetUrlExpiryDateTime` string, date-time
  - `requestedProductCount` unknown
  - `exchangeSetProductCount` unknown
  - `requestedProductsAlreadyUpToDateCount` unknown
  - `requestedProductsNotInExchangeSet` unknown
  - `fssBatchId` unknown

## Other responses

- `400` — Bad Request. In case of a malformed request, only the HTTP status code will be returned without an error body.
- `401` — Unauthorised - either you have not provided any credentials, or your credentials are not recognised.
- `403` — Forbidden - you have been authorised, but you are not allowed to access this resource.
- `429` — You have sent too many requests in a given amount of time. Please back-off for the time in the Retry-After header (in seconds) and try again.
- `500` — Internal Server Error.

---

[API](https://skmtc.net/uk-hydrographic-office/apis/s100-exchange-set-service-api.md) · [All operations](https://skmtc.net/uk-hydrographic-office/apis/s100-exchange-set-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uk-hydrographic-office/s100-exchange-set-service-api/revisions/4f2e5a0c4400/schema)
