> ## Documentation Index
> Fetch the complete documentation index at: https://docs.msportal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Set company URLs for external dashboard

> Set company-specific URL overrides for an external dashboard. This replaces all existing company URL assignments with the provided list. All URLs must use HTTPS. Companies must exist and belong to your tenant.



## OpenAPI

````yaml /openapi.json put /api/public/v1/dashboards/external/{id}/company-urls
openapi: 3.0.3
info:
  title: MSPortal Public API
  version: 1.0.0
  description: >-
    Public API for MSPortal - provides programmatic access to tenant data.


    ## Authentication


    All endpoints require authentication via API key passed as a Bearer token:


    ```

    Authorization: Bearer <your-api-key>

    ```


    API keys can be created in the MSPortal dashboard under Settings →
    Integrations → API Access.


    **Important:** Do not include cookies in API requests. The public API uses
    stateless authentication only.


    ## Scopes


    API keys are granted specific scopes that determine what operations they can
    perform. Each endpoint documents its required scope(s).


    ## Rate Limiting


    API calls are rate limited per API key. Rate limit information is returned
    in response headers:


    - `X-RateLimit-Limit`: Maximum requests per minute

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: When the rate limit resets (ISO 8601)


    ## Request ID


    All responses include an `X-Request-Id` header for debugging and support.
    You can also pass your own `X-Request-Id` header to correlate requests.
  contact:
    name: MSPortal Support
    email: support@msportal.ai
  license:
    name: Proprietary
servers:
  - url: https://app.msportal.ai
    description: Production environment
security:
  - BearerAuth: []
tags:
  - name: Budgets
    description: >-
      Budget management - create, track, and forecast budgets with line items,
      categories, and products
  - name: Calendar
    description: Calendar and meeting management - events, participants, and meeting types
  - name: Companies
    description: Company management endpoints
  - name: Company Users
    description: Company user management - client portal contacts (read-only, paginated)
  - name: Compliance
    description: Compliance check management - runs, assigned checks, and status updates
  - name: Dashboards
    description: Dashboard management - external iframe resources and internal dashboards
  - name: Devices
    description: Device management - inventory, types, and locations
  - name: Goals
    description: Goal management - create, track, and manage goals with tasks and updates
  - name: NPS Surveys
    description: >-
      NPS survey management - Net Promoter Score surveys, responses, and
      analytics
  - name: Reports
    description: >-
      Report management - create, manage, and schedule reports with templates
      and types
  - name: Planner
    description: >-
      Planner item management - tasks, roadmap items, and project planning with
      linked goals, compliance, and projects
  - name: Surveys
    description: >-
      General survey management - multi-question surveys, responses, and
      statistics
  - name: Tickets
    description: Ticket management - view and filter tickets from PSA integrations
  - name: Training
    description: >-
      Training management - courses, enrollments, certificates, and progress
      tracking
  - name: Users
    description: Tenant user management - internal staff and team members (read-only)
  - name: Automation Rules
    description: >-
      Automation rule management - create, configure, and monitor automation
      rules with triggers, conditions, and actions
  - name: Analytics
    description: >-
      Analytics and reporting - company audit data, training analytics, user
      activity, and portfolio metrics
paths:
  /api/public/v1/dashboards/external/{id}/company-urls:
    put:
      tags:
        - Dashboards
      summary: Set company URLs for external dashboard
      description: >-
        Set company-specific URL overrides for an external dashboard. This
        replaces all existing company URL assignments with the provided list.
        All URLs must use HTTPS. Companies must exist and belong to your tenant.
      parameters:
        - schema:
            type: string
            format: uuid
            description: External dashboard ID
          required: true
          description: External dashboard ID
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCompanyUrlsRequest'
      responses:
        '200':
          description: Company URLs updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalDashboardSingleResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden - Missing required scope (dashboards.write)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: External dashboard or company not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    SetCompanyUrlsRequest:
      type: object
      properties:
        companyUrls:
          type: array
          items:
            type: object
            properties:
              companyId:
                type: string
                format: uuid
                description: Company ID
              url:
                type: string
                format: uri
                description: Company-specific URL (must be HTTPS)
            required:
              - companyId
              - url
          description: Company URL assignments
      required:
        - companyUrls
    ExternalDashboardSingleResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ExternalDashboard'
      required:
        - data
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        requestId:
          type: string
          description: Request correlation ID
        details:
          nullable: true
          description: Additional error details
        code:
          type: string
          description: Error code
      required:
        - error
    ExternalDashboard:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique dashboard identifier
        name:
          type: string
          description: Dashboard name
        description:
          type: string
          nullable: true
          description: Dashboard description
        url:
          type: string
          format: uri
          description: Base URL for the dashboard
        iconUrl:
          type: string
          nullable: true
          description: Icon URL
        displayOrder:
          type: integer
          description: Display order in sidebar
        isActive:
          type: boolean
          description: Whether the dashboard is active
        isDefault:
          type: boolean
          description: Whether this is the default dashboard
        allowInIframe:
          type: boolean
          nullable: true
          description: Whether the URL allows iframe embedding
        framePolicy:
          type: string
          nullable: true
          description: X-Frame-Options policy
        roleIds:
          type: array
          items:
            type: string
            format: uuid
          description: Assigned role IDs
        roleNames:
          type: array
          items:
            type: string
          description: Assigned role names
        companyUrls:
          type: array
          items:
            $ref: '#/components/schemas/CompanyUrl'
          description: Company-specific URL overrides
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp (ISO 8601)
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp (ISO 8601)
      required:
        - id
        - name
        - description
        - url
        - iconUrl
        - displayOrder
        - isActive
        - isDefault
        - allowInIframe
        - framePolicy
        - roleIds
        - roleNames
        - companyUrls
        - createdAt
        - updatedAt
    CompanyUrl:
      type: object
      properties:
        companyId:
          type: string
          format: uuid
          description: Company ID
        companyName:
          type: string
          description: Company name
        url:
          type: string
          format: uri
          description: Company-specific URL
      required:
        - companyId
        - companyName
        - url
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Use your API key as a Bearer token. API keys can be generated in
        Settings → Integrations → API Access.

````