Save the whole rebranding configuration

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}/config

The configuration form in one multipart request: the products the branding applies to, the brand name, the assets being uploaded and the ones being emptied. Written in a single transaction — products left out of products lose their configuration, assets named in clear are emptied, and assets that are neither uploaded nor cleared keep their current value.

Requires rebranding to be enabled for the organization. A partner may only write its own organization; the organizations below inherit the branding.

Path parameters

  • org_id string Required

    Logto organization ID (logto_id, not the database UUID)

multipart/form-data

Body Required

  • products string Required

    Product ids the branding applies to, comma-separated or repeated (e.g. nethvoice,nsec).

  • brand_name string

    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 application/json

    Configuration saved

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object
      Hide data attribute Show data attribute object
      • applied_to_organizations integer

        Organizations downstream that display this branding because they have none of their own.

  • 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}/config
curl \
 --request PUT 'https://api.your-domain.com/api/rebranding/{org_id}/config' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: multipart/form-data" \
 --form "products=nethvoice,nsec" \
 --form "brand_name=UrbanGrid" \
 --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 (200)
{
  "code": 42,
  "message": "string",
  "data": {
    "applied_to_organizations": 45
  }
}
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": {}
}