openapi: 3.0.0 info: title: ThoughtSpot Public REST 10.1.0.cl Style Customization API version: '2.0' servers: - url: '{base-url}' variables: base-url: default: https://localhost:443 security: - bearerAuth: [] tags: - name: Style Customization paths: /api/rest/2.0/customization/styles/fonts/delete: post: operationId: deleteStyleFonts description: "\n Version: 26.7.0.cl or later\n\nDeletes one or more custom fonts from the cluster-level or org-level font library. If a deleted font is assigned to visualization areas, those assignments automatically fallback to the cluster/system default font. The response lists all affected areas where the font was explicitly set. Note: dry_run defaults to true. To actually delete fonts, you must explicitly pass dry_run: false.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Provide one or more font UUIDs or names in `font_identifiers`.\n- Set `scope` to `CLUSTER` to delete from the cluster-level library. Set `scope` to `ORG` (default) to delete from the authenticated user's org library.\n- Use `dry_run: true` to preview which visualization areas would be affected without actually deleting the font. The response lists affected assignments; no changes are applied.\n- Deletions cannot be undone. Re-upload the font file using `uploadStyleFont` if needed.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteStyleFontsRequest' required: true parameters: [] responses: '200': description: Font deleted successfully. content: application/json: schema: $ref: '#/components/schemas/StyleFontDeleteData' examples: example_1: summary: Font deleted with affected assignments value: affected_assignments: - org: id: 1234567890 name: Sales visualization_areas: - CHART_X_AXIS_LABELS - CHART_Y_AXIS_LABELS example_2: summary: Font deleted with no affected assignments value: affected_assignments: [] '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Field 'font_identifiers' must contain at least one identifier. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to delete custom fonts from the font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Only Tenant admin can delete cluster-level fonts. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while deleting fonts from the font library. /api/rest/2.0/customization/styles/logos/export: post: operationId: exportStyleLogos description: "\n Version: 26.7.0.cl or later\n\nDownloads the active logos (default and wide slots) at the requested scope as a single ZIP archive containing both logo image files. If no custom logo has been uploaded at the ORG scope, the archive contains the resolved logo falling through from the cluster. If no cluster logo has been uploaded, no file is returned.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to download cluster-level logos.\n- Set `scope` to `ORG` (default) to download logos for the authenticated user's org.\n- The response is a ZIP archive (`application/zip`). Save the response body directly to a `.zip` file.\n- The archive always contains two files — one for the DEFAULT slot and one for the WIDE slot — even if no custom logo is set at the requested scope.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: application/json: schema: $ref: '#/components/schemas/ExportStyleLogosRequest' required: true parameters: - name: Accept in: header schema: type: string enum: - application/zip default: application/zip responses: '200': description: Logo ZIP archive retrieved successfully. content: application/zip: {} '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to export style logos. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster-level logos can only be exported from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while exporting style logos. /api/rest/2.0/customization/styles/search: post: operationId: searchStyleCustomizations description: "\n Version: 26.7.0.cl or later\n\nRetrieves style preferences at cluster level or for the authenticated user's org. Cluster-level preferences serve as defaults for all orgs. Org-level preferences override cluster defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to retrieve cluster-level style defaults.\n- Set `scope` to `ORG` (default) to retrieve preferences for the authenticated user's org.\n- Each field in the response includes an `is_overridden` flag indicating whether the value was explicitly set at the requested scope or inherited from a parent scope (cluster or system default).\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchStyleCustomizationsRequest' required: true parameters: [] responses: '200': description: Style preferences retrieved successfully. content: application/json: schema: type: array items: $ref: '#/components/schemas/StylePreference' examples: example_1: value: - scope: CLUSTER navigation_panel: theme: DARK is_overridden: false chart_color_palette: colors: - primary: '#2359B6' secondary: - '#1A4690' - '#0E2E66' - '#07194A' - '#030D30' - primary: '#E8552D' secondary: - '#C4421A' - '#9E2F0D' - '#7A2005' - '#581302' - primary: '#F5A623' secondary: - '#D08B0E' - '#A86E05' - '#825202' - '#5E3900' - primary: '#7ED321' secondary: - '#62A815' - '#488009' - '#305A03' - '#1C3800' - primary: '#9B59B6' secondary: - '#7D3F9A' - '#612C7E' - '#481C62' - '#320F48' - primary: '#1ABC9C' secondary: - '#0E9E81' - '#077F67' - '#03624E' - '#014838' - primary: '#E74C3C' secondary: - '#C0392B' - '#9A2518' - '#761409' - '#540703' - primary: '#3498DB' secondary: - '#1A7DC0' - '#0E60A0' - '#074580' - '#032C60' disable_color_rotation: false is_overridden: false embedded_footer_text: value: '' is_overridden: false logo: default_logo: id: a1b2c3d4-0001-0001-0001-000000000001 is_overridden: false wide_logo: id: a1b2c3d4-0002-0002-0002-000000000002 is_overridden: false visualization_fonts: chart_visualization_fonts: - visualization_area: CHART_X_AXIS_LABELS font_id: null font_name: null is_overridden: false table_visualization_fonts: - visualization_area: TABLE_VALUE_CELLS font_id: null font_name: null is_overridden: false - scope: ORG org: id: 1234567890 name: Sales navigation_panel: theme: CUSTOM base_color: '#2359B6' is_overridden: true chart_color_palette: colors: - primary: '#2359B6' secondary: - '#1A4690' - '#0E2E66' - '#07194A' - '#030D30' - primary: '#E8552D' secondary: - '#C4421A' - '#9E2F0D' - '#7A2005' - '#581302' - primary: '#F5A623' secondary: - '#D08B0E' - '#A86E05' - '#825202' - '#5E3900' - primary: '#7ED321' secondary: - '#62A815' - '#488009' - '#305A03' - '#1C3800' - primary: '#9B59B6' secondary: - '#7D3F9A' - '#612C7E' - '#481C62' - '#320F48' - primary: '#1ABC9C' secondary: - '#0E9E81' - '#077F67' - '#03624E' - '#014838' - primary: '#E74C3C' secondary: - '#C0392B' - '#9A2518' - '#761409' - '#540703' - primary: '#3498DB' secondary: - '#1A7DC0' - '#0E60A0' - '#074580' - '#032C60' disable_color_rotation: false is_overridden: false embedded_footer_text: value: Powered by Sales Analytics is_overridden: true logo: default_logo: id: b2c3d4e5-0001-0001-0001-000000000011 is_overridden: true wide_logo: id: b2c3d4e5-0002-0002-0002-000000000022 is_overridden: true visualization_fonts: chart_visualization_fonts: - visualization_area: CHART_X_AXIS_LABELS font_id: c3d4e5f6-1111-1111-1111-111111111111 font_name: Acme Sans is_overridden: true table_visualization_fonts: - visualization_area: TABLE_VALUE_CELLS font_id: null font_name: Optimo-Plain, Helvetica Neue, Helvetica, Arial, sans-serif is_overridden: false '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Field 'org_identifiers' is only allowed when scope is ORG. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to retrieve style preferences for the cluster or org. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while retrieving style customization preferences. /api/rest/2.0/customization/styles/fonts/search: post: operationId: searchStyleFonts description: "\n Version: 26.7.0.cl or later\n\nReturns custom fonts from the cluster-level or org-level font library. Omitting all filter fields returns all fonts in the target scope.\n\nWhen `include_font_assignments` is `true`, the response includes only the visualization areas explicitly assigned to each font. For cluster-scoped fonts, `org` is returned as `null`.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Set `scope` to `CLUSTER` to search the cluster-level library. Set `scope` to `ORG` (default) to search the authenticated user's org library.\n- Use `font_identifier` to look up a specific font by UUID or name.\n- Use `name_pattern` for partial, case-insensitive name matching.\n- Set `include_font_assignments` to `true` to include visualization areas this font is currently assigned to. Defaults to `false`.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchStyleFontsRequest' required: true parameters: [] responses: '200': description: Custom fonts retrieved successfully. content: application/json: schema: type: array items: $ref: '#/components/schemas/StyleFontRecord' examples: example_1: value: - id: c3d4e5f6-1111-1111-1111-111111111111 scope: ORG org: id: 1234567890 name: Sales name: Acme Sans weight: NORMAL style: NORMAL color: '#333333' creation_time_in_millis: 1714000000000 assignments: - org: id: 1234567890 name: Sales visualization_areas: - CHART_X_AXIS_LABELS - CHART_Y_AXIS_LABELS - id: d4e5f6a7-2222-2222-2222-222222222222 scope: CLUSTER name: Corporate Bold weight: BOLD style: NORMAL color: '#000000' creation_time_in_millis: 1713500000000 assignments: [] '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Only one of 'font_identifier' or 'name_pattern' may be provided. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to search the cluster-level or org-level font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while searching the font library. /api/rest/2.0/customization/styles/update: post: operationId: updateStyleCustomization description: "\n Version: 26.7.0.cl or later\n\nUpdates style preferences at cluster level or for the authenticated user's org, including navigation panel color, chart color palette, embedded footer text, logo, and font assignments per visualization area. Cluster-level preferences serve as defaults for all orgs. Org-level preferences override cluster defaults. Resetting an Org-level preference falls back to Cluster-level preference, which on reset falls back to system defaults.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\nTwo operations are supported via the `operation` field:\n\n- **REPLACE** (default): Applies the fields provided in the request. Omitted fields remain unchanged.\n- **RESET**: Reverts specific fields to defaults. Specify which fields to reset using `reset_options.style` (for style fields) and `reset_options.visualization_areas` (for font assignments). Fields not listed in `reset_options` are not affected.\n\n#### Logo upload\n\nLogo files are uploaded as binary fields using `multipart/form-data`:\n\n- `default_logo`: Square app icon and favicon. Recommended size: 140×140 px. Accepted formats: PNG, JPG.\n- `wide_logo`: Horizontal top nav bar logo. Recommended size: 230×45 px. Accepted formats: PNG, JPG.\n\nTo reset a logo to the default, use `operation: RESET` with `reset_options.style` set to `DEFAULT_LOGO` or `WIDE_LOGO`.\n\n#### Navigation panel color\n\nSet `navigation_panel.theme` to one of:\n\n- `DARK`: Default dark theme.\n- `TWO_TONE`: Dual-tone panel style.\n- `CUSTOM`: User-defined color. Provide `navigation_panel.base_color` as a 6-digit hex string (e.g. `#2359B6`).\n\n#### Chart color palette\n\nProvide exactly 8 color entries in `chart_color_palette.colors`. Each entry requires a `primary` hex color. If `secondary` shades are omitted, the server auto-generates 4 shades from the primary color.\n\n#### Font assignments\n\nSpecify `visualization_fonts.chart_visualization_fonts`, `visualization_fonts.table_visualization_fonts`, and `visualization_fonts.advanced_chart_visualization_fonts` to assign custom fonts to specific visualization areas. Only provide the areas you want to update; omitted areas remain unchanged.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: multipart/form-data: schema: type: object properties: scope: description: 'Scope at which to apply the preferences. CLUSTER sets cluster-level defaults for all orgs. ORG applies to the authenticated user''s org.' default: ORG type: string enum: - CLUSTER - ORG operation: description: 'Operation to perform. REPLACE (default) applies the provided fields and leaves omitted fields unchanged. RESET reverts fields listed in reset_options to defaults.' default: REPLACE type: string enum: - REPLACE - RESET reset_options: description: 'Fields to reset when operation is RESET. Specify style fields and visualization areas to revert to defaults.' allOf: - $ref: '#/components/schemas/StyleResetOptionsInput' navigation_panel: description: 'Navigation panel color. Provide theme and, when theme is CUSTOM, also provide base_color.' allOf: - $ref: '#/components/schemas/NavigationPanelInput' chart_color_palette: description: 'Chart color palette. When provided with operation REPLACE, exactly 8 color entries must be specified in colors.' allOf: - $ref: '#/components/schemas/StyleColorPaletteInput' embedded_footer_text: description: 'Custom footer text for the embedded application. An empty string clears the footer.' type: string visualization_fonts: description: 'Font assignments per visualization area. Provide only the areas to update; omitted areas remain unchanged.' allOf: - $ref: '#/components/schemas/VisualizationFontsInput' default_logo: description: 'Binary image for the DEFAULT logo slot (square app icon and favicon; recommended 140x140 px). Accepted formats: PNG, JPG.' type: string format: binary wide_logo: description: 'Binary image for the WIDE logo slot (horizontal top nav bar logo; recommended 230x45 px). Accepted formats: PNG, JPG.' type: string format: binary required: - scope encoding: reset_options: contentType: application/json navigation_panel: contentType: application/json chart_color_palette: contentType: application/json visualization_fonts: contentType: application/json required: true parameters: [] responses: '204': description: Style preferences updated successfully. '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: chart_color_palette must specify exactly 8 color entries when operation is REPLACE. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to update style customization preferences. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster-level style customization can only be updated from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while updating style customization preferences. /api/rest/2.0/customization/styles/fonts/{font_identifier}/update: post: operationId: updateStyleFont description: "\n Version: 26.7.0.cl or later\n\nUpdates the metadata of an existing custom font in the cluster-level or org-level font library. Only the fields provided in the request are modified; omitted fields remain unchanged.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Identify the font using `font_identifier` (UUID or name).\n- Set `scope` to `CLUSTER` to target the cluster-level library. Set `scope` to `ORG` (default) to target the authenticated user's org library.\n- To replace the font file itself (WOFF/WOFF2 binary), delete the existing font and re-upload using `uploadStyleFont`.\n- `color` must be a valid 6-digit hex string (e.g. `#333333`) if provided.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateStyleFontRequest' required: true parameters: - in: path name: font_identifier required: true schema: type: string description: UUID or name of the font to update. responses: '204': description: Font metadata updated successfully. '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Font color must be a valid 6-digit hex string (e.g. '#333333'). '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to update a custom font. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Only Tenant admin can update cluster-level fonts. '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while updating the custom font. /api/rest/2.0/customization/styles/fonts/upload: post: operationId: uploadStyleFont description: "\n Version: 26.7.0.cl or later\n\nUploads a custom font to the cluster-level or org-level font library. Cluster-level fonts are available as defaults for all orgs. Org-level fonts are only available within that org.\n\nRequires `ADMINISTRATION` (**Can administer ThoughtSpot**) or `DEVELOPER` (**Has developer privilege**) privilege.\n\n#### Usage guidelines\n\n- Only **WOFF** and **WOFF2** font formats are accepted. TTF and OTF files are rejected with an error.\n- Set `scope` to `CLUSTER` to upload to the cluster-level library. Set `scope` to `ORG` (default) to upload to the authenticated user's org library.\n- `weight` defaults to `NORMAL` if omitted. Supported values: `NORMAL`, `LIGHT`, `BOLD`.\n- `style` defaults to `NORMAL` if omitted. Supported values: `NORMAL`, `ITALIC`, `OBLIQUE`.\n- `color` defaults to `#000000` (black) if omitted. Provide as a 6-digit hex string (e.g. `#333333`).\n- The uploaded font can be assigned to visualization areas using the `updateStyleCustomization` endpoint.\n\n\n\n\n#### Endpoint URL\n" tags: - Style Customization requestBody: content: multipart/form-data: schema: type: object properties: scope: description: 'Scope of the font library to upload to. CLUSTER uploads to the cluster-level library, making the font available as a default for all orgs. ORG uploads to the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG name: description: Display name for the font (e.g. "Acme Sans"). type: string weight: description: 'Weight of the font. Supported values: NORMAL, LIGHT, BOLD. Defaults to NORMAL if omitted.' default: NORMAL type: string enum: - NORMAL - LIGHT - BOLD style: description: 'Style of the font. Supported values: NORMAL, ITALIC, OBLIQUE. Defaults to NORMAL if omitted.' default: NORMAL type: string enum: - NORMAL - ITALIC - OBLIQUE color: description: 'Color of the font as a 6-digit hex string (e.g. "#333333"). Defaults to #000000 (black) if omitted. Returns an error if the value is malformed.' type: string file_content: description: 'Binary WOFF or WOFF2 font file to upload. Only WOFF and WOFF2 formats are accepted; TTF and OTF are rejected. The file is validated on upload.' type: string format: binary required: - name - file_content required: true parameters: [] responses: '200': description: Font uploaded successfully. content: application/json: schema: $ref: '#/components/schemas/StyleFontUploadData' examples: example_1: value: id: c3d4e5f6-1111-1111-1111-111111111111 name: Acme Sans '400': description: Invalid request. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: invalid_request: summary: Invalid request value: error: message: code: 10002 incident_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 trace_id_guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 debug: Unsupported font format. Only WOFF and WOFF2 are accepted. '401': description: Unauthorized access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unauthorized_access: summary: Unauthorized access value: error: message: code: 10097 incident_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 trace_id_guid: b2c3d4e5-f678-9012-bcde-f23456789012 debug: Authentication required to upload a custom font to the font library. '403': description: Forbidden access. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: forbidden_access: summary: Forbidden access value: error: message: code: 10023 incident_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 trace_id_guid: c3d4e5f6-7890-1234-cdef-345678901234 debug: Cluster config can only be accessed from PRIMARY org. '500': description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: unexpected_error: summary: Unexpected error value: error: message: code: 10038 incident_id_guid: d4e5f678-9012-3456-defa-456789012345 trace_id_guid: d4e5f678-9012-3456-defa-456789012345 debug: Unexpected server error while uploading the custom font. components: schemas: StyleNavigationPanel: type: object properties: theme: type: string enum: - DARK - TWO_TONE - CUSTOM description: Navigation panel color mode. nullable: true base_color: type: string description: Base color as a 6-digit hex string. Present only when theme is CUSTOM. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Navigation panel color configuration for a specific scope. StyleFontRecord: type: object required: - id - name properties: id: type: string description: Unique UUID identifier of the font. scope: type: string enum: - CLUSTER - ORG description: Scope indicating whether this font belongs to the cluster or org library. nullable: true org: $ref: '#/components/schemas/StyleOrgInfo' description: Org associated with this font. Present only when scope is ORG. nullable: true name: type: string description: Display name of the font. weight: type: string enum: - NORMAL - LIGHT - BOLD description: Weight of the font. nullable: true style: type: string enum: - NORMAL - ITALIC - OBLIQUE description: Style of the font. nullable: true color: type: string description: Color of the font as a 6-digit hex string. nullable: true creation_time_in_millis: type: number format: float description: Timestamp in milliseconds when the font was uploaded. nullable: true assignments: type: array items: $ref: '#/components/schemas/StyleFontAssignment' description: 'Visualization areas currently assigned to this font. Empty if not assigned to any area. Populated only when include_font_assignments is true.' nullable: true description: A custom font record in the font library. StyleFontDeleteAffectedAssignment: type: object properties: org: $ref: '#/components/schemas/StyleOrgInfo' description: Org context for this assignment. Present only when scope is ORG. nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: 'Visualization areas that used the deleted font and were automatically reset to the system default font.' nullable: true description: A visualization area assignment affected by a font deletion. ChartFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS description: Chart visualization area to assign the font to. font_identifier: type: string description: UUID or name of the font to assign to this area. description: Font assignment for a single chart visualization area. StyleColorEntry: type: object properties: primary: type: string description: Primary color as a 6-digit hex string. nullable: true secondary: type: array items: type: string description: Array of 4 secondary shade hex strings. nullable: true description: A single color entry in the chart color palette. StyleEmbeddedFooterText: type: object properties: value: type: string description: Footer text value. Empty string indicates no footer is set. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Embedded footer text configuration for a specific scope. NavigationPanelInput: type: object properties: theme: type: string enum: - DARK - TWO_TONE - CUSTOM description: 'Color mode for the navigation panel. DARK applies the default dark theme. TWO_TONE applies a dual-tone style. CUSTOM enables a user-defined base color; base_color is required when theme is CUSTOM.' nullable: true base_color: type: string description: 'Base color as a 6-digit hex string (e.g. "#2359B6"). Required when theme is CUSTOM.' nullable: true description: Navigation panel color configuration. StyleOrgInfo: type: object properties: id: type: integer format: int32 description: Unique integer ID of the org. nullable: true name: type: string description: Name of the org. nullable: true description: Org information returned in style API responses. StyleFontDeleteData: type: object properties: affected_assignments: type: array items: $ref: '#/components/schemas/StyleFontDeleteAffectedAssignment' description: 'Visualization areas that used the deleted font(s) and were automatically reset to the system default font. Empty if no areas were affected.' nullable: true description: Result data for font deletion. ErrorResponse: type: object properties: error: type: object nullable: true StyleChartColorPalette: type: object properties: colors: type: array items: $ref: '#/components/schemas/StyleColorEntry' description: Ordered array of 8 color entries. nullable: true disable_color_rotation: type: boolean description: When true, automatic color rotation across chart data series is disabled. nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Chart color palette configuration for a specific scope. TableVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - TABLE_VALUE_CELLS description: Table visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for a table visualization area in the response. AdvancedChartFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - ADVANCED_CHART_LABELS description: 'Advanced chart visualization area to assign the font to.
Version: 26.7.0.cl or later' font_identifier: type: string description: 'UUID or name of the font to assign to this area.
Version: 26.7.0.cl or later' description: Font assignment for a single advanced chart visualization area. StyleLogoSlot: type: object properties: id: type: string description: UUID of the active logo. nullable: true is_overridden: type: boolean description: 'True if a custom logo is uploaded at this scope. False if the system default or cluster logo is active.' nullable: true description: Status of a single logo slot. StyleFontUploadData: type: object required: - id - name properties: id: type: string description: Unique UUID identifier of the uploaded font. name: type: string description: Display name of the uploaded font. description: Font data returned after a successful upload. StyleColorEntryInput: type: object required: - primary properties: primary: type: string description: Primary color as a 6-digit hex string (e.g. "#2359B6"). Required. secondary: type: array items: type: string description: 'Array of exactly 4 secondary shade hex strings. If omitted, the server auto-generates 4 shades from the primary color. If provided, must contain exactly 4 valid 6-digit hex color strings.' nullable: true description: A single color entry in the chart color palette. VisualizationFontsInput: type: object properties: chart_visualization_fonts: type: array items: $ref: '#/components/schemas/ChartFontAssignmentInput' description: 'Font assignments for chart visualization areas. Provide only the areas to update; omitted areas remain unchanged.' nullable: true table_visualization_fonts: type: array items: $ref: '#/components/schemas/TableFontAssignmentInput' description: 'Font assignments for table visualization areas. Provide only the areas to update; omitted areas remain unchanged.' nullable: true advanced_chart_visualization_fonts: type: array items: $ref: '#/components/schemas/AdvancedChartFontAssignmentInput' description: 'Font assignments for advanced chart visualization areas. Provide only the areas to update; omitted areas remain unchanged.
Version: 26.7.0.cl or later' nullable: true description: Font assignments grouped by visualization type. StyleColorPaletteInput: type: object properties: colors: type: array items: $ref: '#/components/schemas/StyleColorEntryInput' description: Ordered array of exactly 8 color entries defining the chart color palette. nullable: true disable_color_rotation: type: boolean description: When true, disables automatic color rotation across chart data series. nullable: true description: Chart color palette configuration. UpdateStyleFontRequest: type: object properties: scope: description: 'Scope of the font library containing this font. CLUSTER targets the cluster-level library. ORG targets the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG name: description: New display name for the font. type: string weight: description: 'New weight for the font. Supported values: NORMAL, LIGHT, BOLD.' type: string enum: - NORMAL - LIGHT - BOLD style: description: 'New style for the font. Supported values: NORMAL, ITALIC, OBLIQUE.' type: string enum: - NORMAL - ITALIC - OBLIQUE color: description: 'New color for the font as a 6-digit hex string (e.g. "#333333"). Returns an error if the value is malformed.' type: string StyleLogoStatus: type: object properties: default_logo: $ref: '#/components/schemas/StyleLogoSlot' description: 'Status of the DEFAULT logo slot (square app icon and favicon; recommended 140x140 px).' nullable: true wide_logo: $ref: '#/components/schemas/StyleLogoSlot' description: 'Status of the WIDE logo slot (horizontal top nav bar logo; recommended 230x45 px).' nullable: true description: Logo status per slot. SearchStyleFontsRequest: type: object properties: scope: description: 'Scope of the font library to search. CLUSTER searches the cluster-level library. ORG searches the authenticated user''s org library. Returns both Cluster and Org level font if omitted.' type: string enum: - CLUSTER - ORG font_identifier: description: Filter by UUID or name of a specific font. type: string name_pattern: description: Filter by font display name. Supports partial, case-insensitive matching. type: string include_font_assignments: description: 'When true, includes visualization areas this font is assigned to in the response. Defaults to false if omitted.' default: false type: boolean nullable: true StyleResetOptionsInput: type: object properties: style: type: array items: type: string enum: - CHART_COLOR_PALETTE - EMBEDDED_FOOTER_TEXT - NAV_PANEL_COLOR - DEFAULT_LOGO - WIDE_LOGO description: 'Style fields to reset. Supported values: CHART_COLOR_PALETTE, EMBEDDED_FOOTER_TEXT, NAV_PANEL_COLOR, DEFAULT_LOGO, WIDE_LOGO.' nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: 'Visualization areas whose font assignments should revert to the system default font.' nullable: true description: Fields to revert to defaults when operation is RESET. DeleteStyleFontsRequest: type: object properties: scope: description: 'Scope of the font library to delete from. CLUSTER deletes from the cluster-level library. ORG deletes from the authenticated user''s org library. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG font_identifiers: description: 'UUIDs or names of the fonts to delete. At least one identifier is required.' type: array items: type: string dry_run: description: 'When true, returns affected assignments without applying the deletion. Use this to preview the impact before committing. Defaults to true if omitted.' default: true type: boolean nullable: true required: - font_identifiers ChartVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS description: Chart visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for a chart visualization area in the response. AdvancedChartVisualizationFontRecord: type: object properties: visualization_area: type: string enum: - ADVANCED_CHART_LABELS description: Advanced chart visualization area. nullable: true font_id: type: string description: 'UUID of the font assigned to this area. Null when the system default font is active.' nullable: true font_name: type: string description: 'Display name of the font assigned to this area. Null when the system default font is active.' nullable: true is_overridden: type: boolean description: True if explicitly set at this scope, overriding any inherited value. nullable: true description: Font assignment for an advanced chart visualization area in the response. SearchStyleCustomizationsRequest: type: object properties: scope: description: 'Scope of the style preferences to retrieve. CLUSTER returns cluster-level defaults. ORG returns preferences for the authenticated user''s org, which may override cluster defaults. If not specified, returns both cluster and org preferences based on user privileges.' type: string enum: - CLUSTER - ORG ExportStyleLogosRequest: type: object properties: scope: description: 'Scope of the logos to export. CLUSTER exports cluster-level logos. ORG exports logos for the authenticated user''s org, falling back to cluster or defaults if no custom logo is set. Defaults to ORG if omitted.' default: ORG type: string enum: - CLUSTER - ORG StyleVisualizationFonts: type: object properties: chart_visualization_fonts: type: array items: $ref: '#/components/schemas/ChartVisualizationFontRecord' description: Font assignments for chart visualization areas. nullable: true table_visualization_fonts: type: array items: $ref: '#/components/schemas/TableVisualizationFontRecord' description: Font assignments for table visualization areas. nullable: true advanced_chart_visualization_fonts: type: array items: $ref: '#/components/schemas/AdvancedChartVisualizationFontRecord' description: 'Font assignments for advanced chart visualization areas.
Version: 26.7.0.cl or later' nullable: true description: Effective font assignments per visualization type. StylePreference: type: object properties: scope: type: string enum: - CLUSTER - ORG description: Scope at which these style preferences apply. nullable: true org: $ref: '#/components/schemas/StyleOrgInfo' description: Org associated with these preferences. Present only when scope is ORG. nullable: true navigation_panel: $ref: '#/components/schemas/StyleNavigationPanel' description: Navigation panel color configuration. nullable: true chart_color_palette: $ref: '#/components/schemas/StyleChartColorPalette' description: Chart color palette configuration. nullable: true embedded_footer_text: $ref: '#/components/schemas/StyleEmbeddedFooterText' description: Embedded footer text configuration. nullable: true logo: $ref: '#/components/schemas/StyleLogoStatus' description: Logo status per slot. nullable: true visualization_fonts: $ref: '#/components/schemas/StyleVisualizationFonts' description: Effective font assignments per visualization area. nullable: true description: Style preferences for a single scope entry. TableFontAssignmentInput: type: object required: - visualization_area - font_identifier properties: visualization_area: type: string enum: - TABLE_VALUE_CELLS description: Table visualization area to assign the font to. font_identifier: type: string description: UUID or name of the font to assign to this area. description: Font assignment for a single table visualization area. StyleFontAssignment: type: object properties: org: $ref: '#/components/schemas/StyleOrgInfo' description: Org context for this assignment. Present only when scope is ORG. nullable: true visualization_areas: type: array items: type: string enum: - CHART_X_AXIS_LABELS - CHART_X_AXIS_TITLE - CHART_Y_AXIS_LABELS - CHART_Y_AXIS_TITLE - CHART_TOOLTIP - CHART_SCATTER_DATA_LABELS - CHART_DONUT_DATA_LABELS - CHART_LINE_DATA_LABELS - CHART_COLUMN_DATA_LABELS - CHART_BAR_DATA_LABELS - CHART_AREA_DATA_LABELS - TABLE_VALUE_CELLS - ADVANCED_CHART_LABELS description: Visualization areas using this font. nullable: true description: Visualization areas assigned to a font, grouped by org context. securitySchemes: bearerAuth: type: http scheme: bearer x-roles: - name: 26.2.0.cl id: 26.2.0.cl tags: - 26.2.0.cl description: Roles for version 26.2.0.cl - name: 10.4.0.cl id: 10.4.0.cl tags: - 10.4.0.cl description: Roles for version 10.4.0.cl - name: 26.7.0.cl id: 26.7.0.cl tags: - 26.7.0.cl description: Roles for version 26.7.0.cl - name: 26.8.0.cl id: 26.8.0.cl tags: - 26.8.0.cl description: Roles for version 26.8.0.cl - name: 26.6.0.cl id: 26.6.0.cl tags: - 26.6.0.cl description: Roles for version 26.6.0.cl - name: 10.15.0.cl id: 10.15.0.cl tags: - 10.15.0.cl description: Roles for version 10.15.0.cl - name: 10.13.0.cl id: 10.13.0.cl tags: - 10.13.0.cl description: Roles for version 10.13.0.cl - name: 26.9.0.cl id: 26.9.0.cl tags: - 26.9.0.cl description: Roles for version 26.9.0.cl - name: 10.7.0.cl id: 10.7.0.cl tags: - 10.7.0.cl description: Roles for version 10.7.0.cl - name: 26.5.0.cl id: 26.5.0.cl tags: - 26.5.0.cl description: Roles for version 26.5.0.cl - name: 9.0.0.cl id: 9.0.0.cl tags: - 9.0.0.cl description: Roles for version 9.0.0.cl - name: 9.4.0.cl id: 9.4.0.cl tags: - 9.4.0.cl description: Roles for version 9.4.0.cl - name: 9.12.0.cl id: 9.12.0.cl tags: - 9.12.0.cl description: Roles for version 9.12.0.cl - name: 26.4.0.cl id: 26.4.0.cl tags: - 26.4.0.cl description: Roles for version 26.4.0.cl - name: 10.12.0.cl id: 10.12.0.cl tags: - 10.12.0.cl description: Roles for version 10.12.0.cl - name: 9.2.0.cl id: 9.2.0.cl tags: - 9.2.0.cl description: Roles for version 9.2.0.cl - name: 9.9.0.cl id: 9.9.0.cl tags: - 9.9.0.cl description: Roles for version 9.9.0.cl - name: 9.6.0.cl id: 9.6.0.cl tags: - 9.6.0.cl description: Roles for version 9.6.0.cl - name: 10.10.0.cl id: 10.10.0.cl tags: - 10.10.0.cl description: Roles for version 10.10.0.cl - name: 10.6.0.cl id: 10.6.0.cl tags: - 10.6.0.cl description: Roles for version 10.6.0.cl - name: 10.3.0.cl id: 10.3.0.cl tags: - 10.3.0.cl description: Roles for version 10.3.0.cl - name: 10.1.0.cl id: 10.1.0.cl tags: - 10.1.0.cl description: Roles for version 10.1.0.cl - name: 10.9.0.cl id: 10.9.0.cl tags: - 10.9.0.cl description: Roles for version 10.9.0.cl - name: 10.8.0.cl id: 10.8.0.cl tags: - 10.8.0.cl description: Roles for version 10.8.0.cl - name: 9.5.0.cl id: 9.5.0.cl tags: - 9.5.0.cl description: Roles for version 9.5.0.cl - name: 26.3.0.cl id: 26.3.0.cl tags: - 26.3.0.cl description: Roles for version 26.3.0.cl - name: 10.14.0.cl id: 10.14.0.cl tags: - 10.14.0.cl description: Roles for version 10.14.0.cl - name: 9.7.0.cl id: 9.7.0.cl tags: - 9.7.0.cl description: Roles for version 9.7.0.cl