Upload rebranding assets for a product

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://api.my.nethesis.it/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "my.nethesis.it MCP server": {
    "url": "https://api.my.nethesis.it/mcp"
  }
}

Close
PUT /rebranding/{org_id}/products/{product_id}

Multipart upload of logos, favicon, background, and product name for a single product. Only the fields provided are written; the assets named in clear are emptied. Requires rebranding to be enabled for the organization.

The configuration form of the product uses PUT /rebranding/{org_id}/config instead, which writes several products in one transaction.

Path parameters

  • org_id string Required

    Logto organization ID (logto_id, not the database UUID)

  • product_id string Required
multipart/form-data

Body

  • product_name string

    Sent empty, it clears the stored name. Omitted entirely, the stored name is left unchanged.

    Maximum length is 100.

  • clear string

    Asset names to empty, comma-separated or repeated (e.g. favicon,background_image).

  • logo_light_rect string(binary)
  • logo_dark_rect string(binary)
  • logo_light_square string(binary)
  • logo_dark_square string(binary)
  • favicon string(binary)
  • background_image string(binary)

Responses

  • 200

    Assets uploaded

  • 400 application/json

    Validation failed. data.type is always validation_error. data.errors[] lists per-field failures with stable message codes the UI consumes for i18n: at_least_one_required (no product selected), unknown (product id, asset name or organization id that does not exist), max (brand name longer than 100 characters).

    A malformed multipart body, a file over its size limit or an unsupported content type answer 400 with a plain message instead: they are not field validation, they are a request the server could not read.

    Hide response attributes Show response attributes object
    • code integer

      HTTP error code

    • message string

      Error message

    • data object
      Hide data attributes Show data attributes object
      • type string

        Type of error

        Values are validation_error or external_api_error.

      • errors array[object]
        Hide errors attributes Show errors attributes object
        • key string

          Field name that failed validation

        • message string

          Error code or message

        • value string

          Value that failed validation

      • details

        Additional error details

  • 403 application/json

    Forbidden - insufficient permissions

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
PUT /rebranding/{org_id}/products/{product_id}
curl \
 --request PUT 'https://my.nethesis.it/backend/api/rebranding/{org_id}/products/{product_id}' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: multipart/form-data" \
 --form "product_name=string" \
 --form "clear=string" \
 --form "logo_light_rect=@file" \
 --form "logo_dark_rect=@file" \
 --form "logo_light_square=@file" \
 --form "logo_dark_square=@file" \
 --form "favicon=@file" \
 --form "background_image=@file"
Response examples (400)
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "products",
        "message": "at_least_one_required"
      }
    ]
  }
}
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "products",
        "message": "unknown",
        "value": "nethvoice-pro"
      }
    ]
  }
}
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "organization_ids",
        "message": "unknown",
        "value": "org-che-non-esiste"
      }
    ]
  }
}
{
  "code": 400,
  "message": "validation failed",
  "data": {
    "type": "validation_error",
    "errors": [
      {
        "key": "brand_name",
        "message": "max"
      }
    ]
  }
}
Response examples (403)
{
  "code": 403,
  "message": "insufficient permissions",
  "data": {}
}