Hoppa till innehållet

Redirects

URL redirects in a channel's web shop: the old addresses that send visitors on to a new one, applied before the storefront matches a route. Covers the redirects created by hand or over this API and the 301s Fluit records itself when a product, category or page changes slug. Addressed by the pair (channelCode, id): the source path contains slashes and does not fit in a path segment.

5 calls GET POST PATCH DELETE Base URL https://api.fluit.cloud/preview

Authentication, error codes, rate limits, idempotency and pagination apply to every call and are documented once under Getting started.

GET /channels/{channelCode}/redirects

List a channel's URL redirects

Returns the redirects the channel's web shop applies before it matches a route: the ones created by hand or over this API, and the 301s Fluit records itself when a product, category or page changes slug. hitCount and lastHitAt show whether a redirect is still in use.

Show the full description

Sorted by fromPath. There is no delta sync for redirects: read the full list to reconcile.

redirects:read Paginated

Path parameters

Field Type Description
channelCode Required string Code of the channel whose redirects to list.

Query parameters

Field Type Description
search string Matches fromPath and toPath, case-insensitively and on partial words.
isActive boolean Filters on whether the redirect is active.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Responses

200 PagedResult_PublicRedirectResponse

Paginated response: the fields below sit in items[], wrapped in totalCount, page, pageSize, totalPages, hasPreviousPage and hasNextPage. Paginated

Field Type Description
channelCode Required string · nullable Code of the channel the redirect belongs to.
createdDate string(date-time)
fromPath Required string · nullable The old path that is redirected, normalized to lowercase with a leading slash and no trailing slash, e.g. `/old-product`. Unique within the channel.
hitCount integer Number of times a visitor has followed the redirect.
id string(uuid) Stable id of the redirect. Use it to update or delete it.
isActive boolean Whether the storefront applies the redirect.
lastHitAt string(date-time) · nullable When a visitor last followed the redirect, or null if never.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable
statusCode integer HTTP status code of the redirect: 301 (permanent) or 302 (temporary).
toPath Required string · nullable Where the visitor is sent: a path starting with `/` or an absolute http(s) URL.
404 ProblemDetails No channel with that code.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl "https://api.fluit.cloud/preview/channels/{channelCode}/redirects"
Response 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "channelCode": "STD",
      "createdDate": "2026-06-11T09:24:13.418",
      "fromPath": "string",
      "hitCount": 42,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isActive": true,
      "lastHitAt": "2026-06-11T09:24:13.418",
      "links": {
        "self": "string"
      },
      "modifiedDate": "2026-06-11T09:24:13.418",
      "statusCode": 42,
      "toPath": "string"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

POST /channels/{channelCode}/redirects

Create a URL redirect

Makes the channel's web shop send visitors from fromPath to toPath. Use it when an address stops working: after a move from another platform, or when a product is discontinued. fromPath is normalized (lowercase, leading slash, no trailing slash) and the response carries the stored form.

Show the full description

A path can only be redirected once per channel: to change where it leads, update the existing redirect with PATCH instead of creating a second one. Known error codes: UrlRedirect.FromPathAlreadyExists, UrlRedirect.InvalidPath, UrlRedirect.InvalidToPath, UrlRedirect.SelfReference, UrlRedirect.InvalidStatusCode, UrlRedirect.FromPathTooLong, UrlRedirect.ToPathTooLong.

Path parameters

Field Type Description
channelCode Required string Code of the channel whose web shop should apply the redirect.

Body required

Field Type Description
fromPath Required string The old path to redirect, e.g. `/old-product`. Normalized to lowercase with a leading slash and no trailing slash. Must be unique within the channel.
statusCode integer · nullable 301 (permanent, the default) or 302 (temporary).
toPath Required string Where to send the visitor: a path starting with `/` or an absolute http(s) URL.

Responses

201 PublicRedirectResponse
  • Location — URL of the newly created resource.
Field Type Description
channelCode Required string · nullable Code of the channel the redirect belongs to.
createdDate string(date-time)
fromPath Required string · nullable The old path that is redirected, normalized to lowercase with a leading slash and no trailing slash, e.g. `/old-product`. Unique within the channel.
hitCount integer Number of times a visitor has followed the redirect.
id string(uuid) Stable id of the redirect. Use it to update or delete it.
isActive boolean Whether the storefront applies the redirect.
lastHitAt string(date-time) · nullable When a visitor last followed the redirect, or null if never.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable
statusCode integer HTTP status code of the redirect: 301 (permanent) or 302 (temporary).
toPath Required string · nullable Where the visitor is sent: a path starting with `/` or an absolute http(s) URL.
400 ProblemDetails fromPath or toPath is missing or too long, toPath is neither a path starting with / nor an absolute http(s) URL, the redirect points to itself, or statusCode is not 301 or 302.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails UrlRedirect.FromPathAlreadyExists — the channel already redirects that path.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl -X POST "https://api.fluit.cloud/preview/channels/{channelCode}/redirects" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Temporary redirect to another site
{
  "fromPath": "/campaign",
  "statusCode": 302,
  "toPath": "https://www.example.com/summer-campaign"
}
Permanent redirect
{
  "fromPath": "/old-product",
  "toPath": "/products/new-product"
}
Response 201
{
  "channelCode": "STD",
  "createdDate": "2026-06-11T09:24:13.418",
  "fromPath": "string",
  "hitCount": 42,
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isActive": true,
  "lastHitAt": "2026-06-11T09:24:13.418",
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418",
  "statusCode": 42,
  "toPath": "string"
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

GET /channels/{channelCode}/redirects/{id}

Get a URL redirect

Returns one redirect, in the same shape as the list and as POST /preview/channels/{channelCode}/redirects.

redirects:read Supports ETag

Path parameters

Field Type Description
channelCode Required string Code of the channel the redirect belongs to.
id Required string(uuid) Id of the redirect.

Responses

200 PublicRedirectResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Field Type Description
channelCode Required string · nullable Code of the channel the redirect belongs to.
createdDate string(date-time)
fromPath Required string · nullable The old path that is redirected, normalized to lowercase with a leading slash and no trailing slash, e.g. `/old-product`. Unique within the channel.
hitCount integer Number of times a visitor has followed the redirect.
id string(uuid) Stable id of the redirect. Use it to update or delete it.
isActive boolean Whether the storefront applies the redirect.
lastHitAt string(date-time) · nullable When a visitor last followed the redirect, or null if never.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable
statusCode integer HTTP status code of the redirect: 301 (permanent) or 302 (temporary).
toPath Required string · nullable Where the visitor is sent: a path starting with `/` or an absolute http(s) URL.
304 Empty body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No channel with that code, or no redirect with that id in it.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl "https://api.fluit.cloud/preview/channels/{channelCode}/redirects/{id}"
Response 200
{
  "channelCode": "STD",
  "createdDate": "2026-06-11T09:24:13.418",
  "fromPath": "string",
  "hitCount": 42,
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isActive": true,
  "lastHitAt": "2026-06-11T09:24:13.418",
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418",
  "statusCode": 42,
  "toPath": "string"
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

PATCH /channels/{channelCode}/redirects/{id}

Update a URL redirect

Partially updates where a redirect leads, its status code and whether it is active. Only provided fields are updated (JSON Merge Patch semantics). Omitted fields are left unchanged.

Show the full description

None of the fields can be set to null. Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. fromPath cannot be changed: to redirect a different address, create a new redirect and delete this one. Known error codes: UrlRedirect.InvalidPath, UrlRedirect.InvalidToPath, UrlRedirect.SelfReference, UrlRedirect.InvalidStatusCode.

redirects:write

Path parameters

Field Type Description
channelCode Required string Code of the channel the redirect belongs to.
id Required string(uuid) Id of the redirect.

Body required

Field Type Description
isActive boolean · nullable Whether the web shop applies the redirect.
statusCode integer · nullable 301 (permanent) or 302 (temporary).
toPath string · nullable Where to send the visitor: a path starting with `/` or an absolute http(s) URL.

Responses

204 Empty body.
400 ProblemDetails The body is not a JSON object, contains a field this endpoint does not have, a field was sent as null, toPath is neither a path starting with / nor an absolute http(s) URL, the redirect would point to itself, or statusCode is not 301 or 302.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code, or no redirect with that id in it.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl -X PATCH "https://api.fluit.cloud/preview/channels/{channelCode}/redirects/{id}" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

DELETE /channels/{channelCode}/redirects/{id}

Delete a URL redirect

Removes the redirect, so fromPath answers with whatever the web shop has at that address, often a 404. To stop a redirect while keeping it for later, PATCH it with isActive: false instead.

redirects:write

Path parameters

Field Type Description
channelCode Required string Code of the channel the redirect belongs to.
id Required string(uuid) Id of the redirect.

Responses

204 Empty body.
404 ProblemDetails No channel with that code, or no redirect with that id in it.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl -X DELETE "https://api.fluit.cloud/preview/channels/{channelCode}/redirects/{id}"
Response 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

Schemas

The objects this group's calls refer to. The field tables above go one level deep and link here rather than repeating the same schema on every endpoint.