Update an existing series

Updates an existing series' name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series belongs to the specified brand. Ensures the updated name/slug are unique.

PUT/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}
API
Management
Updated
Apr 26, 2026

management-api:PUT:/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}

Updates an existing series' name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series belongs to the specified brand. Ensures the updated name/slug are unique.

API ownership

  • API family: Management API
  • Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data.
  • Do not use from: Browser-only storefront code or public clients.
  • Guide route: /apis/management/latest

The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.

Operation

  • Method: PUT
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/brands/\{brand_id\}/series/\{series_id\}
  • Summary: Update an existing series
  • Description: Updates an existing series' name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series belongs to the specified brand. Ensures the updated name/slug are unique.
  • OpenAPI contract: management-api
  • Operation ID: Not documented in the OpenAPI contract.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters4 parameters
NameInRequiredTypeDescription
app_slugpathYesstringApp slug
team_slugpathYesstringTeam slug
brand_idpathYesstringId of brand
series_idpathYesstringId of brand
Request bodyDocumented body
  • Required: Yes
  • Description: data on series
  • Content: application/json (object)

Brand Series Request

PropertyTypeRequiredDetails
cover_idstringNo-
descriptionstringNo-
emailstringNo-
logo_idstringNo-
namestringYes-
slugstringYes-

Generated example (synthetic):

{
  "cover_id": "string",
  "description": "string",
  "email": "string",
  "logo_id": "string",
  "name": "string",
  "slug": "string"
}
Responses4 statuses
StatusDescriptionContent
200Series updated successfullyapplication/json (object)
400Invalid request (e.g. bad UUID, validation error)application/json (object)
401Unauthorized accessapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Series

PropertyTypeRequiredDetails
dataobjectNo-
detailsstring[]NoAdditional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes
successbooleanNo-
Series
PropertyTypeRequiredDetails
brandobjectNobrand for which the series belong to
coverobjectNo-
created_atstringNo-
descriptionstringNoseries description
emailstringNoseries email
idstringNoid of series
logoobjectNo-
namestringNoname of series
slugstringNoslug of series
translationsobjectNo-
updated_atstringNo-
Brand Parent
PropertyTypeRequiredDetails
idstringNoid of brand
namestringNoname of brand
slugstringNoslug of brand
Image
PropertyTypeRequiredDetails
altstringNo-
app_idstringNo-
attributesobject[]No-
blurhashstringNo-
copyrightstringNo-
customobjectNo-
folder_idstringNo-
idstringNo-
parent_idstringNo-
publicbooleanNo-
source_app_idstringNo-
source_idstringNo-
statusstringNo-
titlestringNo-
translationsobjectNo-
urlstringNo-
Image Translation
PropertyTypeRequiredDetails
altobject[]No-
copyrightobject[]No-
titleobject[]No-
Brand Translations
PropertyTypeRequiredDetails
descriptionobject[]No-
{
  "data": {
    "brand": {
      "id": "string",
      "name": "string",
      "slug": "string"
    },
    "cover": {
      "alt": "string",
      "app_id": "string",
      "attributes": [
        {
          "created_at": null,
          "description": null,
          "filterable": null,
          "id": null,
          "key": null,
          "name": null,
          "template_key": null,
          "template_name": null,
          "translatable": null,
          "translations": null,
          "updated_at": null,
          "values": null
        }
      ],
      "blurhash": "string",
      "copyright": "string",
      "custom": {},
      "folder_id": "string",
      "id": "string",
      "parent_id": "string",
      "public": false,
      "source_app_id": "string",
      "source_id": "string",
      "status": "string",
      "title": "string",
      "translations": {
        "alt": [],
        "copyright": [],
        "title": []
      },
      "url": "string"
    },
    "created_at": "string",
    "description": "string",
    "email": "string",
    "id": "string",
    "logo": {
      "alt": "string",
      "app_id": "string",
      "attributes": [
        {
          "created_at": null,
          "description": null,
          "filterable": null,
          "id": null,
          "key": null,
          "name": null,
          "template_key": null,
          "template_name": null,
          "translatable": null,
          "translations": null,
          "updated_at": null,
          "values": null
        }
      ],
      "blurhash": "string",
      "copyright": "string",
      "custom": {},
      "folder_id": "string",
      "id": "string",
      "parent_id": "string",
      "public": false,
      "source_app_id": "string",
      "source_id": "string",
      "status": "string",
      "title": "string",
      "translations": {
        "alt": [],
        "copyright": [],
        "title": []
      },
      "url": "string"
    },
    "name": "string",
    "slug": "string",
    "translations": {
      "description": [
        {
          "id": null,
          "locale": null,
          "value": null
        }
      ]
    },
    "updated_at": "string"
  },
  "details": [
    "string"
  ],
  "success": false
}

400 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

401 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

500 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

Contract identity

Use these fields to confirm you are implementing the intended endpoint contract.

  • API family: Management API
  • Method: PUT
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/brands/\{brand_id\}/series/\{series_id\}
  • Operation ID: Not documented in the OpenAPI contract.
  • OpenAPI tag: Brands
  • OpenAPI summary: Update an existing series

Update an existing series

# Update an existing series Updates an existing series' name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series belongs to the specified brand. Ensures the updated name/slug are unique.
PUT /api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}
Purpose

Updates an existing series' name, slug, logo, cover image, and description.

Required inputs

app_slug path team_slug path brand_id path series_id path

Primary response

200 ยท Series updated successfully

Operation key

management-api:PUT:/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}

## API ownership - API family: Management API - Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data. - Do not use from: Browser-only storefront code or public clients. - Guide route: [/apis/management/latest](/apis/management/latest) The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation. ## Operation - Method: `PUT` - Path: `/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}` - Summary: Update an existing series - Description: Updates an existing series' name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series belongs to the specified brand. Ensures the updated name/slug are unique. - OpenAPI contract: management-api - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:PUT:/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}` Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID. ## Parameters | Name | In | Required | Type | Description | | --- | --- | --- | --- | --- | | app_slug | path | Yes | string | App slug | | team_slug | path | Yes | string | Team slug | | brand_id | path | Yes | string | Id of brand | | series_id | path | Yes | string | Id of brand | ## Request body - Required: Yes - Description: data on series - Content: application/json (object) ### Brand Series Request | Property | Type | Required | Details | | --- | --- | --- | --- | | `cover_id` | string | No | - | | `description` | string | No | - | | `email` | string | No | - | | `logo_id` | string | No | - | | `name` | string | Yes | - | | `slug` | string | Yes | - | **Generated example (synthetic):** ```json { "cover_id": "string", "description": "string", "email": "string", "logo_id": "string", "name": "string", "slug": "string" } ``` ## Responses | Status | Description | Content | | --- | --- | --- | | 200 | Series updated successfully | application/json (object) | | 400 | Invalid request (e.g. bad UUID, validation error) | application/json (object) | | 401 | Unauthorized access | application/json (object) | | 500 | Internal server error | application/json (object) | ### 200 - object #### Series | Property | Type | Required | Details | | --- | --- | --- | --- | | `data` | object | No | - | | `details` | string[] | No | Additional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes | | `success` | boolean | No | - | ##### Series | Property | Type | Required | Details | | --- | --- | --- | --- | | `brand` | object | No | brand for which the series belong to | | `cover` | object | No | - | | `created_at` | string | No | - | | `description` | string | No | series description | | `email` | string | No | series email | | `id` | string | No | id of series | | `logo` | object | No | - | | `name` | string | No | name of series | | `slug` | string | No | slug of series | | `translations` | object | No | - | | `updated_at` | string | No | - | ##### Brand Parent | Property | Type | Required | Details | | --- | --- | --- | --- | | `id` | string | No | id of brand | | `name` | string | No | name of brand | | `slug` | string | No | slug of brand | ##### Image | Property | Type | Required | Details | | --- | --- | --- | --- | | `alt` | string | No | - | | `app_id` | string | No | - | | `attributes` | object[] | No | - | | `blurhash` | string | No | - | | `copyright` | string | No | - | | `custom` | object | No | - | | `folder_id` | string | No | - | | `id` | string | No | - | | `parent_id` | string | No | - | | `public` | boolean | No | - | | `source_app_id` | string | No | - | | `source_id` | string | No | - | | `status` | string | No | - | | `title` | string | No | - | | `translations` | object | No | - | | `url` | string | No | - | ##### Image Translation | Property | Type | Required | Details | | --- | --- | --- | --- | | `alt` | object[] | No | - | | `copyright` | object[] | No | - | | `title` | object[] | No | - | ##### Brand Translations | Property | Type | Required | Details | | --- | --- | --- | --- | | `description` | object[] | No | - |
Generated example (synthetic) ```json { "data": { "brand": { "id": "string", "name": "string", "slug": "string" }, "cover": { "alt": "string", "app_id": "string", "attributes": [ { "created_at": null, "description": null, "filterable": null, "id": null, "key": null, "name": null, "template_key": null, "template_name": null, "translatable": null, "translations": null, "updated_at": null, "values": null } ], "blurhash": "string", "copyright": "string", "custom": {}, "folder_id": "string", "id": "string", "parent_id": "string", "public": false, "source_app_id": "string", "source_id": "string", "status": "string", "title": "string", "translations": { "alt": [], "copyright": [], "title": [] }, "url": "string" }, "created_at": "string", "description": "string", "email": "string", "id": "string", "logo": { "alt": "string", "app_id": "string", "attributes": [ { "created_at": null, "description": null, "filterable": null, "id": null, "key": null, "name": null, "template_key": null, "template_name": null, "translatable": null, "translations": null, "updated_at": null, "values": null } ], "blurhash": "string", "copyright": "string", "custom": {}, "folder_id": "string", "id": "string", "parent_id": "string", "public": false, "source_app_id": "string", "source_id": "string", "status": "string", "title": "string", "translations": { "alt": [], "copyright": [], "title": [] }, "url": "string" }, "name": "string", "slug": "string", "translations": { "description": [ { "id": null, "locale": null, "value": null } ] }, "updated_at": "string" }, "details": [ "string" ], "success": false } ```
### 400 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 401 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 500 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ## Contract identity Use these fields to confirm you are implementing the intended endpoint contract. - API family: Management API - Method: `PUT` - Path: `/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}` - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:PUT:/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series/{series_id}` - OpenAPI tag: Brands - OpenAPI summary: Update an existing series