openapi: 3.0.0
info:
  title: Web Filtering API
  description: >-
    This is the OAS 3.0 specification for the Web Filtering API in Sophos
    Central.
  version: 1.1.0
  contact:
    name: Sophos Central APIs
    email: apis@sophos.com
    url: 'https://developer.sophos.com'
tags:
  - name: Web Filter Site List Management
    description: Web filter site list management APIs.
  - name: Web Filtering Profile Management
    description: Web filtering profile management APIs.
servers:
  - url: 'https://api-{dataRegion}.central.sophos.com/web-filters/v1'
    description: Regional service in the production environment.
    variables:
      dataRegion:
        description: The data region where tenant data is stored.
        default: eu01
        enum:
          - eu01
          - eu02
          - us01
          - us03
          - ca01
          - au01
          - jp01
          - in01
          - br01
          - ae01
security:
  - bearerAuth: []
paths:
  /profiles:
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get web filtering profiles
      description: Fetch the customer's web filtering profiles.
      operationId: getProfiles
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: query
          name: page
          required: false
          schema:
            type: integer
            default: 1
          description: 'The page number to fetch, starting with 1.'
        - in: query
          name: pageSize
          required: false
          schema:
            type: integer
            default: 50
          description: The size of the page requested.
        - in: query
          name: pageTotal
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Whether the number of pages should be calculated and returned in the
            response.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: The paginated response for web filtering profiles.
                required:
                  - items
                  - pages
                properties:
                  items:
                    type: array
                    description: The list of web filtering profiles.
                    items:
                      type: object
                      description: A web filtering profile summary.
                      required:
                        - id
                        - name
                      properties:
                        id:
                          description: Web filtering profile ID.
                          type: string
                          format: uuid
                        name:
                          description: Web filtering profile name.
                          type: string
                          minLength: 1
                          maxLength: 50
                        description:
                          description: Web filtering profile description.
                          type: string
                          maxLength: 250
                        updatedAt:
                          description: Time the web filtering profile was last updated.
                          type: string
                          format: date-time
                        updatedBy:
                          type: object
                          readOnly: true
                          required:
                            - id
                            - type
                          properties:
                            id:
                              description: Principal ID.
                              type: string
                            type:
                              description: Type of the Principal.
                              type: string
                              format: enum
                              enum:
                                - user
                                - service
                                - system
                            name:
                              description: Principal name.
                              type: string
                            accountType:
                              type: string
                              description: Account type.
                              enum:
                                - partner
                                - tenant
                                - organization
                            accountId:
                              description: Account ID.
                              type: string
                              format: uuid
                        consumers:
                          description: Resources that use the web filtering profile.
                          type: array
                          items:
                            type: object
                            description: A resource that uses the web filtering profile.
                            required:
                              - type
                              - id
                            properties:
                              type:
                                type: string
                                description: >-
                                  Type of resource that uses web filtering
                                  profiles.
                                enum:
                                  - computerWebControlPolicy
                                  - serverWebControlPolicy
                                  - mobileWebControlPolicy
                              id:
                                description: ID of the resource that uses the profile.
                                type: string
                  pages:
                    type: object
                    required:
                      - current
                      - size
                      - maxSize
                    properties:
                      current:
                        type: integer
                        description: The 1-based page number being returned.
                      size:
                        type: integer
                        description: The size of the page being returned.
                      total:
                        type: integer
                        description: >-
                          (Optional) The total number of pages that exist, if
                          pageTotal=true in the request.
                      items:
                        type: integer
                        description: (Optional) The total number of items across all pages.
                      maxSize:
                        type: integer
                        description: The maximum page size that can be requested.
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    post:
      x-soph-permissions: 'web-profiles:write'
      summary: Add a web filtering profile
      description: Create a new web filtering profile.
      operationId: createProfile
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: New web filtering profile details.
        content:
          application/json:
            schema:
              type: object
              description: A web filtering profile.
              required:
                - name
              additionalProperties: false
              properties:
                id:
                  description: Web filtering profile ID.
                  type: string
                  format: uuid
                  readOnly: true
                name:
                  description: Web filtering profile name.
                  type: string
                  minLength: 1
                  maxLength: 50
                description:
                  description: Web filtering profile description.
                  type: string
                  maxLength: 250
                updatedAt:
                  description: Time the web filtering profile was last updated.
                  type: string
                  format: date-time
                  readOnly: true
                updatedBy:
                  type: object
                  readOnly: true
                  required:
                    - id
                    - type
                  properties:
                    id:
                      description: Principal ID.
                      type: string
                    type:
                      description: Type of the Principal.
                      type: string
                      format: enum
                      enum:
                        - user
                        - service
                        - system
                    name:
                      description: Principal name.
                      type: string
                    accountType:
                      type: string
                      description: Account type.
                      enum:
                        - partner
                        - tenant
                        - organization
                    accountId:
                      description: Account ID.
                      type: string
                      format: uuid
                consumers:
                  description: Resources that use the web filtering profile.
                  type: array
                  items:
                    type: object
                    description: A resource that uses the web filtering profile.
                    required:
                      - type
                      - id
                    properties:
                      type:
                        type: string
                        description: Type of resource that uses web filtering profiles.
                        enum:
                          - computerWebControlPolicy
                          - serverWebControlPolicy
                          - mobileWebControlPolicy
                      id:
                        description: ID of the resource that uses the profile.
                        type: string
                  readOnly: true
                filterByCategory:
                  description: >-
                    Whether filtering by website category is turned on in this
                    web filtering profile.
                  type: boolean
                  default: false
                preset:
                  description: >-
                    Use a preset selection of website category filters.
                    Overrides values defined by 'groups' and 'categories'
                    fields.
                  type: string
                categoryGroupActions:
                  description: >-
                    Define actions for groups of website categories. Will be
                    ignored if 'preset' is defined.
                  type: array
                  items:
                    type: object
                    description: >-
                      A group action defines the action for a group of website
                      categories.
                    required:
                      - name
                      - action
                    properties:
                      name:
                        description: Name of the group of website categories.
                        type: string
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                categoryActions:
                  description: >-
                    Define actions for individual website categories. A website
                    category will be ignored if 'preset' is defined or if it is
                    covered by a group in 'groups'.
                  type: array
                  items:
                    type: object
                    description: Defines the action taken for a website category.
                    required:
                      - name
                      - action
                    properties:
                      name:
                        description: Name of the website category.
                        type: string
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                filterBySiteList:
                  description: >-
                    Whether filtering by site list is turned on in this web
                    filtering profile.
                  type: boolean
                  default: false
                siteListActions:
                  description: Site list filters.
                  type: array
                  items:
                    type: object
                    description: >-
                      Defines the action taken for a site list, with each site
                      list having a priority.
                    required:
                      - id
                      - action
                      - priority
                    properties:
                      id:
                        description: ID of a site list.
                        type: string
                        format: uuid
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                      priority:
                        description: >-
                          Priority of the site list. Higher value takes priority
                          over lower. Each site list must have a unique priority
                          value.
                        type: integer
                        minimum: 0
      responses:
        '201':
          description: Web filtering profile created.
          content:
            application/json:
              schema:
                type: object
                description: A web filtering profile.
                required:
                  - name
                additionalProperties: false
                properties:
                  id:
                    description: Web filtering profile ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Web filtering profile name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Web filtering profile description.
                    type: string
                    maxLength: 250
                  updatedAt:
                    description: Time the web filtering profile was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  consumers:
                    description: Resources that use the web filtering profile.
                    type: array
                    items:
                      type: object
                      description: A resource that uses the web filtering profile.
                      required:
                        - type
                        - id
                      properties:
                        type:
                          type: string
                          description: Type of resource that uses web filtering profiles.
                          enum:
                            - computerWebControlPolicy
                            - serverWebControlPolicy
                            - mobileWebControlPolicy
                        id:
                          description: ID of the resource that uses the profile.
                          type: string
                    readOnly: true
                  filterByCategory:
                    description: >-
                      Whether filtering by website category is turned on in this
                      web filtering profile.
                    type: boolean
                    default: false
                  preset:
                    description: >-
                      Use a preset selection of website category filters.
                      Overrides values defined by 'groups' and 'categories'
                      fields.
                    type: string
                  categoryGroupActions:
                    description: >-
                      Define actions for groups of website categories. Will be
                      ignored if 'preset' is defined.
                    type: array
                    items:
                      type: object
                      description: >-
                        A group action defines the action for a group of website
                        categories.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the group of website categories.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  categoryActions:
                    description: >-
                      Define actions for individual website categories. A
                      website category will be ignored if 'preset' is defined or
                      if it is covered by a group in 'groups'.
                    type: array
                    items:
                      type: object
                      description: Defines the action taken for a website category.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the website category.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  filterBySiteList:
                    description: >-
                      Whether filtering by site list is turned on in this web
                      filtering profile.
                    type: boolean
                    default: false
                  siteListActions:
                    description: Site list filters.
                    type: array
                    items:
                      type: object
                      description: >-
                        Defines the action taken for a site list, with each site
                        list having a priority.
                      required:
                        - id
                        - action
                        - priority
                      properties:
                        id:
                          description: ID of a site list.
                          type: string
                          format: uuid
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                        priority:
                          description: >-
                            Priority of the site list. Higher value takes
                            priority over lower. Each site list must have a
                            unique priority value.
                          type: integer
                          minimum: 0
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/profiles/{profileId}':
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get web filtering profile
      description: Fetch a single web filtering profile by ID.
      operationId: getProfile
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: profileId
          description: Web filtering profile ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: A web filtering profile.
                required:
                  - name
                additionalProperties: false
                properties:
                  id:
                    description: Web filtering profile ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Web filtering profile name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Web filtering profile description.
                    type: string
                    maxLength: 250
                  updatedAt:
                    description: Time the web filtering profile was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  consumers:
                    description: Resources that use the web filtering profile.
                    type: array
                    items:
                      type: object
                      description: A resource that uses the web filtering profile.
                      required:
                        - type
                        - id
                      properties:
                        type:
                          type: string
                          description: Type of resource that uses web filtering profiles.
                          enum:
                            - computerWebControlPolicy
                            - serverWebControlPolicy
                            - mobileWebControlPolicy
                        id:
                          description: ID of the resource that uses the profile.
                          type: string
                    readOnly: true
                  filterByCategory:
                    description: >-
                      Whether filtering by website category is turned on in this
                      web filtering profile.
                    type: boolean
                    default: false
                  preset:
                    description: >-
                      Use a preset selection of website category filters.
                      Overrides values defined by 'groups' and 'categories'
                      fields.
                    type: string
                  categoryGroupActions:
                    description: >-
                      Define actions for groups of website categories. Will be
                      ignored if 'preset' is defined.
                    type: array
                    items:
                      type: object
                      description: >-
                        A group action defines the action for a group of website
                        categories.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the group of website categories.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  categoryActions:
                    description: >-
                      Define actions for individual website categories. A
                      website category will be ignored if 'preset' is defined or
                      if it is covered by a group in 'groups'.
                    type: array
                    items:
                      type: object
                      description: Defines the action taken for a website category.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the website category.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  filterBySiteList:
                    description: >-
                      Whether filtering by site list is turned on in this web
                      filtering profile.
                    type: boolean
                    default: false
                  siteListActions:
                    description: Site list filters.
                    type: array
                    items:
                      type: object
                      description: >-
                        Defines the action taken for a site list, with each site
                        list having a priority.
                      required:
                        - id
                        - action
                        - priority
                      properties:
                        id:
                          description: ID of a site list.
                          type: string
                          format: uuid
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                        priority:
                          description: >-
                            Priority of the site list. Higher value takes
                            priority over lower. Each site list must have a
                            unique priority value.
                          type: integer
                          minimum: 0
        '400':
          description: Invalid format for profileId.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    put:
      x-soph-permissions: 'web-profiles:write'
      summary: Update web filtering profile
      description: Update an existing web filtering profile using its ID.
      operationId: updateProfile
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: profileId
          description: Web filtering profile ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Updated web filtering profile details.
        content:
          application/json:
            schema:
              type: object
              description: A web filtering profile.
              required:
                - name
              additionalProperties: false
              properties:
                id:
                  description: Web filtering profile ID.
                  type: string
                  format: uuid
                  readOnly: true
                name:
                  description: Web filtering profile name.
                  type: string
                  minLength: 1
                  maxLength: 50
                description:
                  description: Web filtering profile description.
                  type: string
                  maxLength: 250
                updatedAt:
                  description: Time the web filtering profile was last updated.
                  type: string
                  format: date-time
                  readOnly: true
                updatedBy:
                  type: object
                  readOnly: true
                  required:
                    - id
                    - type
                  properties:
                    id:
                      description: Principal ID.
                      type: string
                    type:
                      description: Type of the Principal.
                      type: string
                      format: enum
                      enum:
                        - user
                        - service
                        - system
                    name:
                      description: Principal name.
                      type: string
                    accountType:
                      type: string
                      description: Account type.
                      enum:
                        - partner
                        - tenant
                        - organization
                    accountId:
                      description: Account ID.
                      type: string
                      format: uuid
                consumers:
                  description: Resources that use the web filtering profile.
                  type: array
                  items:
                    type: object
                    description: A resource that uses the web filtering profile.
                    required:
                      - type
                      - id
                    properties:
                      type:
                        type: string
                        description: Type of resource that uses web filtering profiles.
                        enum:
                          - computerWebControlPolicy
                          - serverWebControlPolicy
                          - mobileWebControlPolicy
                      id:
                        description: ID of the resource that uses the profile.
                        type: string
                  readOnly: true
                filterByCategory:
                  description: >-
                    Whether filtering by website category is turned on in this
                    web filtering profile.
                  type: boolean
                  default: false
                preset:
                  description: >-
                    Use a preset selection of website category filters.
                    Overrides values defined by 'groups' and 'categories'
                    fields.
                  type: string
                categoryGroupActions:
                  description: >-
                    Define actions for groups of website categories. Will be
                    ignored if 'preset' is defined.
                  type: array
                  items:
                    type: object
                    description: >-
                      A group action defines the action for a group of website
                      categories.
                    required:
                      - name
                      - action
                    properties:
                      name:
                        description: Name of the group of website categories.
                        type: string
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                categoryActions:
                  description: >-
                    Define actions for individual website categories. A website
                    category will be ignored if 'preset' is defined or if it is
                    covered by a group in 'groups'.
                  type: array
                  items:
                    type: object
                    description: Defines the action taken for a website category.
                    required:
                      - name
                      - action
                    properties:
                      name:
                        description: Name of the website category.
                        type: string
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                filterBySiteList:
                  description: >-
                    Whether filtering by site list is turned on in this web
                    filtering profile.
                  type: boolean
                  default: false
                siteListActions:
                  description: Site list filters.
                  type: array
                  items:
                    type: object
                    description: >-
                      Defines the action taken for a site list, with each site
                      list having a priority.
                    required:
                      - id
                      - action
                      - priority
                    properties:
                      id:
                        description: ID of a site list.
                        type: string
                        format: uuid
                      action:
                        type: string
                        description: Action to take.
                        enum:
                          - allow
                          - block
                          - warn
                      priority:
                        description: >-
                          Priority of the site list. Higher value takes priority
                          over lower. Each site list must have a unique priority
                          value.
                        type: integer
                        minimum: 0
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: A web filtering profile.
                required:
                  - name
                additionalProperties: false
                properties:
                  id:
                    description: Web filtering profile ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Web filtering profile name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Web filtering profile description.
                    type: string
                    maxLength: 250
                  updatedAt:
                    description: Time the web filtering profile was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  consumers:
                    description: Resources that use the web filtering profile.
                    type: array
                    items:
                      type: object
                      description: A resource that uses the web filtering profile.
                      required:
                        - type
                        - id
                      properties:
                        type:
                          type: string
                          description: Type of resource that uses web filtering profiles.
                          enum:
                            - computerWebControlPolicy
                            - serverWebControlPolicy
                            - mobileWebControlPolicy
                        id:
                          description: ID of the resource that uses the profile.
                          type: string
                    readOnly: true
                  filterByCategory:
                    description: >-
                      Whether filtering by website category is turned on in this
                      web filtering profile.
                    type: boolean
                    default: false
                  preset:
                    description: >-
                      Use a preset selection of website category filters.
                      Overrides values defined by 'groups' and 'categories'
                      fields.
                    type: string
                  categoryGroupActions:
                    description: >-
                      Define actions for groups of website categories. Will be
                      ignored if 'preset' is defined.
                    type: array
                    items:
                      type: object
                      description: >-
                        A group action defines the action for a group of website
                        categories.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the group of website categories.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  categoryActions:
                    description: >-
                      Define actions for individual website categories. A
                      website category will be ignored if 'preset' is defined or
                      if it is covered by a group in 'groups'.
                    type: array
                    items:
                      type: object
                      description: Defines the action taken for a website category.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the website category.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  filterBySiteList:
                    description: >-
                      Whether filtering by site list is turned on in this web
                      filtering profile.
                    type: boolean
                    default: false
                  siteListActions:
                    description: Site list filters.
                    type: array
                    items:
                      type: object
                      description: >-
                        Defines the action taken for a site list, with each site
                        list having a priority.
                      required:
                        - id
                        - action
                        - priority
                      properties:
                        id:
                          description: ID of a site list.
                          type: string
                          format: uuid
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                        priority:
                          description: >-
                            Priority of the site list. Higher value takes
                            priority over lower. Each site list must have a
                            unique priority value.
                          type: integer
                          minimum: 0
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    delete:
      x-soph-permissions: 'web-profiles:write'
      summary: Delete web filtering profile
      description: Delete an existing web filtering profile using its ID.
      operationId: deleteProfile
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: profileId
          description: Web filtering profile ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Response to a request to delete a web filtering profile.
                properties:
                  deleted:
                    type: boolean
        '400':
          description: Invalid format for profileId.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '409':
          description: Conflicts with an existing parameter. Resource is in use.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/profiles/{profileId}/clone':
    post:
      x-soph-permissions: 'web-profiles:write'
      summary: Clone web filtering profile
      description: Clone an existing web filtering profile using its ID.
      operationId: cloneProfile
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: profileId
          description: Web filtering profile ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Specifies the name for the cloned web filtering profile.
        content:
          application/json:
            schema:
              type: object
              description: Request to clone a web filtering profile.
              required:
                - name
              properties:
                name:
                  description: Name of the new web filtering profile.
                  type: string
                  minLength: 1
                  maxLength: 50
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: A web filtering profile.
                required:
                  - name
                additionalProperties: false
                properties:
                  id:
                    description: Web filtering profile ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Web filtering profile name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Web filtering profile description.
                    type: string
                    maxLength: 250
                  updatedAt:
                    description: Time the web filtering profile was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  consumers:
                    description: Resources that use the web filtering profile.
                    type: array
                    items:
                      type: object
                      description: A resource that uses the web filtering profile.
                      required:
                        - type
                        - id
                      properties:
                        type:
                          type: string
                          description: Type of resource that uses web filtering profiles.
                          enum:
                            - computerWebControlPolicy
                            - serverWebControlPolicy
                            - mobileWebControlPolicy
                        id:
                          description: ID of the resource that uses the profile.
                          type: string
                    readOnly: true
                  filterByCategory:
                    description: >-
                      Whether filtering by website category is turned on in this
                      web filtering profile.
                    type: boolean
                    default: false
                  preset:
                    description: >-
                      Use a preset selection of website category filters.
                      Overrides values defined by 'groups' and 'categories'
                      fields.
                    type: string
                  categoryGroupActions:
                    description: >-
                      Define actions for groups of website categories. Will be
                      ignored if 'preset' is defined.
                    type: array
                    items:
                      type: object
                      description: >-
                        A group action defines the action for a group of website
                        categories.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the group of website categories.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  categoryActions:
                    description: >-
                      Define actions for individual website categories. A
                      website category will be ignored if 'preset' is defined or
                      if it is covered by a group in 'groups'.
                    type: array
                    items:
                      type: object
                      description: Defines the action taken for a website category.
                      required:
                        - name
                        - action
                      properties:
                        name:
                          description: Name of the website category.
                          type: string
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                  filterBySiteList:
                    description: >-
                      Whether filtering by site list is turned on in this web
                      filtering profile.
                    type: boolean
                    default: false
                  siteListActions:
                    description: Site list filters.
                    type: array
                    items:
                      type: object
                      description: >-
                        Defines the action taken for a site list, with each site
                        list having a priority.
                      required:
                        - id
                        - action
                        - priority
                      properties:
                        id:
                          description: ID of a site list.
                          type: string
                          format: uuid
                        action:
                          type: string
                          description: Action to take.
                          enum:
                            - allow
                            - block
                            - warn
                        priority:
                          description: >-
                            Priority of the site list. Higher value takes
                            priority over lower. Each site list must have a
                            unique priority value.
                          type: integer
                          minimum: 0
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  /profiles/metadata:
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get profile metadata
      description: >-
        Fetch a list of available website categories, groups, and presets used
        by web filtering profiles.
      operationId: getMetadata
      tags:
        - Web Filtering Profile Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Web filtering profile metadata.
                required:
                  - categories
                  - presets
                properties:
                  presets:
                    description: Preset website category filters.
                    type: array
                    items:
                      type: object
                      description: Preset website category filters.
                      required:
                        - name
                      properties:
                        name:
                          description: Name of the preset.
                          type: string
                        categoryGroupActions:
                          description: Define actions for groups of website categories.
                          type: array
                          items:
                            type: object
                            description: >-
                              A group action defines the action for a group of
                              website categories.
                            required:
                              - name
                              - action
                            properties:
                              name:
                                description: Name of the group of website categories.
                                type: string
                              action:
                                type: string
                                description: Action to take.
                                enum:
                                  - allow
                                  - block
                                  - warn
                        categoryActions:
                          description: Defines actions for individual website categories.
                          type: array
                          items:
                            type: object
                            description: Defines the action taken for a website category.
                            required:
                              - name
                              - action
                            properties:
                              name:
                                description: Name of the website category.
                                type: string
                              action:
                                type: string
                                description: Action to take.
                                enum:
                                  - allow
                                  - block
                                  - warn
                  categories:
                    description: Grouping of website categories.
                    type: array
                    items:
                      type: object
                      description: Mapping of website category to group.
                      required:
                        - name
                      properties:
                        name:
                          description: Name of the website category.
                          type: string
                        group:
                          description: Name of the group the website category belongs to.
                          type: string
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  /site-lists:
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get site lists
      description: Fetch web filter site lists.
      operationId: getSiteLists
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: query
          name: page
          required: false
          schema:
            type: integer
            default: 1
          description: 'The page number to fetch, starting with 1.'
        - in: query
          name: pageSize
          required: false
          schema:
            type: integer
            default: 50
          description: The size of the page requested.
        - in: query
          name: pageTotal
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Whether the number of pages should be calculated and returned in the
            response.
        - in: query
          name: search
          description: >-
            Filter site lists for any lists whose name contains the term, or
            that include at least one site that contains the term. Matching is
            case-insensitive. Returns site lists whose name contains the term,
            or that include at least one site containing the term.
          required: false
          schema:
            type: string
            minLength: 3
            maxLength: 100
          example: school
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: The paginated response for web filter site lists.
                required:
                  - items
                  - pages
                properties:
                  items:
                    type: array
                    description: The list of web filter site lists.
                    items:
                      type: object
                      description: A web filter site list summary.
                      required:
                        - id
                        - name
                        - numberOfSites
                      properties:
                        id:
                          description: Site list ID.
                          type: string
                          format: uuid
                          readOnly: true
                        name:
                          description: Site list name.
                          type: string
                          minLength: 1
                          maxLength: 50
                        description:
                          description: Site list description.
                          type: string
                          maxLength: 250
                        numberOfSites:
                          description: Number of sites in the site list.
                          type: integer
                          readOnly: true
                        updatedAt:
                          description: Time the site list was last updated.
                          type: string
                          format: date-time
                          readOnly: true
                        updatedBy:
                          type: object
                          readOnly: true
                          required:
                            - id
                            - type
                          properties:
                            id:
                              description: Principal ID.
                              type: string
                            type:
                              description: Type of the Principal.
                              type: string
                              format: enum
                              enum:
                                - user
                                - service
                                - system
                            name:
                              description: Principal name.
                              type: string
                            accountType:
                              type: string
                              description: Account type.
                              enum:
                                - partner
                                - tenant
                                - organization
                            accountId:
                              description: Account ID.
                              type: string
                              format: uuid
                        usedBy:
                          description: >-
                            Web filtering profiles that reference this site list
                            via their site list actions.
                          type: array
                          items:
                            type: object
                            description: A reference to a web filtering profile.
                            readOnly: true
                            required:
                              - id
                              - name
                            properties:
                              id:
                                description: Web filtering profile ID.
                                type: string
                                format: uuid
                              name:
                                description: Web filtering profile name.
                                type: string
                                maxLength: 50
                          readOnly: true
                  pages:
                    type: object
                    required:
                      - current
                      - size
                      - maxSize
                    properties:
                      current:
                        type: integer
                        description: The 1-based page number being returned.
                      size:
                        type: integer
                        description: The size of the page being returned.
                      total:
                        type: integer
                        description: >-
                          (Optional) The total number of pages that exist, if
                          pageTotal=true in the request.
                      items:
                        type: integer
                        description: (Optional) The total number of items across all pages.
                      maxSize:
                        type: integer
                        description: The maximum page size that can be requested.
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    post:
      x-soph-permissions: 'web-profiles:write'
      summary: Create a site list
      description: Create a new web filter site list.
      operationId: createSiteList
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Web filter site list details.
        content:
          application/json:
            schema:
              type: object
              description: Web filter site list.
              required:
                - name
                - sites
              properties:
                id:
                  description: Site list ID.
                  type: string
                  format: uuid
                  readOnly: true
                name:
                  description: Site list name.
                  type: string
                  minLength: 1
                  maxLength: 50
                description:
                  description: Site list description.
                  type: string
                  maxLength: 250
                sites:
                  description: Sites that belong to the site list.
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 2048
                  uniqueItems: true
                  minItems: 1
                updatedAt:
                  description: Time the site list was last updated.
                  type: string
                  format: date-time
                  readOnly: true
                updatedBy:
                  type: object
                  readOnly: true
                  required:
                    - id
                    - type
                  properties:
                    id:
                      description: Principal ID.
                      type: string
                    type:
                      description: Type of the Principal.
                      type: string
                      format: enum
                      enum:
                        - user
                        - service
                        - system
                    name:
                      description: Principal name.
                      type: string
                    accountType:
                      type: string
                      description: Account type.
                      enum:
                        - partner
                        - tenant
                        - organization
                    accountId:
                      description: Account ID.
                      type: string
                      format: uuid
                usedBy:
                  description: >-
                    Web filtering profiles that reference this site list via
                    their site list actions.
                  type: array
                  items:
                    type: object
                    description: A reference to a web filtering profile.
                    readOnly: true
                    required:
                      - id
                      - name
                    properties:
                      id:
                        description: Web filtering profile ID.
                        type: string
                        format: uuid
                      name:
                        description: Web filtering profile name.
                        type: string
                        maxLength: 50
                  readOnly: true
      responses:
        '201':
          description: Web filter site list created.
          content:
            application/json:
              schema:
                type: object
                description: Web filter site list.
                required:
                  - name
                  - sites
                properties:
                  id:
                    description: Site list ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Site list name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Site list description.
                    type: string
                    maxLength: 250
                  sites:
                    description: Sites that belong to the site list.
                    type: array
                    items:
                      type: string
                      minLength: 1
                      maxLength: 2048
                    uniqueItems: true
                    minItems: 1
                  updatedAt:
                    description: Time the site list was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  usedBy:
                    description: >-
                      Web filtering profiles that reference this site list via
                      their site list actions.
                    type: array
                    items:
                      type: object
                      description: A reference to a web filtering profile.
                      readOnly: true
                      required:
                        - id
                        - name
                      properties:
                        id:
                          description: Web filtering profile ID.
                          type: string
                          format: uuid
                        name:
                          description: Web filtering profile name.
                          type: string
                          maxLength: 50
                    readOnly: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/site-lists/{siteListId}':
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get site list
      description: Fetch a single web filter site list by ID.
      operationId: getSiteList
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Web filter site list.
                required:
                  - name
                  - sites
                properties:
                  id:
                    description: Site list ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Site list name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Site list description.
                    type: string
                    maxLength: 250
                  sites:
                    description: Sites that belong to the site list.
                    type: array
                    items:
                      type: string
                      minLength: 1
                      maxLength: 2048
                    uniqueItems: true
                    minItems: 1
                  updatedAt:
                    description: Time the site list was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  usedBy:
                    description: >-
                      Web filtering profiles that reference this site list via
                      their site list actions.
                    type: array
                    items:
                      type: object
                      description: A reference to a web filtering profile.
                      readOnly: true
                      required:
                        - id
                        - name
                      properties:
                        id:
                          description: Web filtering profile ID.
                          type: string
                          format: uuid
                        name:
                          description: Web filtering profile name.
                          type: string
                          maxLength: 50
                    readOnly: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    put:
      x-soph-permissions: 'web-profiles:write'
      summary: Update site list
      description: Update an existing web filter site list by ID.
      operationId: updateSiteList
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Web filter site list details.
        content:
          application/json:
            schema:
              type: object
              description: Web filter site list.
              required:
                - name
                - sites
              properties:
                id:
                  description: Site list ID.
                  type: string
                  format: uuid
                  readOnly: true
                name:
                  description: Site list name.
                  type: string
                  minLength: 1
                  maxLength: 50
                description:
                  description: Site list description.
                  type: string
                  maxLength: 250
                sites:
                  description: Sites that belong to the site list.
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 2048
                  uniqueItems: true
                  minItems: 1
                updatedAt:
                  description: Time the site list was last updated.
                  type: string
                  format: date-time
                  readOnly: true
                updatedBy:
                  type: object
                  readOnly: true
                  required:
                    - id
                    - type
                  properties:
                    id:
                      description: Principal ID.
                      type: string
                    type:
                      description: Type of the Principal.
                      type: string
                      format: enum
                      enum:
                        - user
                        - service
                        - system
                    name:
                      description: Principal name.
                      type: string
                    accountType:
                      type: string
                      description: Account type.
                      enum:
                        - partner
                        - tenant
                        - organization
                    accountId:
                      description: Account ID.
                      type: string
                      format: uuid
                usedBy:
                  description: >-
                    Web filtering profiles that reference this site list via
                    their site list actions.
                  type: array
                  items:
                    type: object
                    description: A reference to a web filtering profile.
                    readOnly: true
                    required:
                      - id
                      - name
                    properties:
                      id:
                        description: Web filtering profile ID.
                        type: string
                        format: uuid
                      name:
                        description: Web filtering profile name.
                        type: string
                        maxLength: 50
                  readOnly: true
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Web filter site list.
                required:
                  - name
                  - sites
                properties:
                  id:
                    description: Site list ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Site list name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Site list description.
                    type: string
                    maxLength: 250
                  sites:
                    description: Sites that belong to the site list.
                    type: array
                    items:
                      type: string
                      minLength: 1
                      maxLength: 2048
                    uniqueItems: true
                    minItems: 1
                  updatedAt:
                    description: Time the site list was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  usedBy:
                    description: >-
                      Web filtering profiles that reference this site list via
                      their site list actions.
                    type: array
                    items:
                      type: object
                      description: A reference to a web filtering profile.
                      readOnly: true
                      required:
                        - id
                        - name
                      properties:
                        id:
                          description: Web filtering profile ID.
                          type: string
                          format: uuid
                        name:
                          description: Web filtering profile name.
                          type: string
                          maxLength: 50
                    readOnly: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    delete:
      x-soph-permissions: 'web-profiles:write'
      summary: Delete site list
      description: Delete an existing web filter site list.
      operationId: deleteSiteList
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Response to a request to delete a web filter site list.
                properties:
                  deleted:
                    type: boolean
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '409':
          description: Conflicts with an existing parameter. Resource is in use.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/site-lists/{siteListId}/sites':
    get:
      x-soph-permissions: 'web-profiles:read'
      summary: Get Sites
      description: Fetch sites that belong to the site list.
      operationId: getSites
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: query
          name: page
          required: false
          schema:
            type: integer
            default: 1
          description: 'The page number to fetch, starting with 1.'
        - in: query
          name: pageSize
          required: false
          schema:
            type: integer
            default: 50
          description: The size of the page requested.
        - in: query
          name: pageTotal
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            Whether the number of pages should be calculated and returned in the
            response.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: The paginated response for list of sites within the site list.
                required:
                  - items
                  - pages
                properties:
                  items:
                    type: array
                    description: The list of sites.
                    items:
                      type: object
                      description: Site in the web filter site list.
                      required:
                        - site
                      properties:
                        id:
                          description: Site ID.
                          type: string
                          format: uuid
                          readOnly: true
                        site:
                          type: string
                          minLength: 1
                          maxLength: 2048
                          description: Site value.
                        siteType:
                          type: string
                          description: >-
                            Web filter site type:


                            - **domain** - Scheme-less hostname only: no URI
                            scheme, no port, no path (e.g. `example.com`).

                            - **url** - URI with a scheme (e.g.
                            `http://www.example.com/news`,
                            `wss://api.example.com/stream`).

                            - **urlPattern** - Scheme-less URL-like pattern
                            (e.g. `example.com:8443`, `www.example.com/news`,
                            `api.example.com:8080/v1`).

                            - **tld** - Top-level domain for broad matching
                            (e.g. `.com`, `.co.uk`).

                            - **ipv4** / **ipv6** - Single IP address.

                            - **ipv4Cidr** / **ipv6Cidr** - Network in CIDR
                            notation.
                          enum:
                            - domain
                            - url
                            - urlPattern
                            - tld
                            - ipv4
                            - ipv6
                            - ipv4Cidr
                            - ipv6Cidr
                        createdAt:
                          description: Time the site was added to the site list.
                          type: string
                          format: date-time
                          readOnly: true
                  pages:
                    type: object
                    required:
                      - current
                      - size
                      - maxSize
                    properties:
                      current:
                        type: integer
                        description: The 1-based page number being returned.
                      size:
                        type: integer
                        description: The size of the page being returned.
                      total:
                        type: integer
                        description: >-
                          (Optional) The total number of pages that exist, if
                          pageTotal=true in the request.
                      items:
                        type: integer
                        description: (Optional) The total number of items across all pages.
                      maxSize:
                        type: integer
                        description: The maximum page size that can be requested.
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
    post:
      x-soph-permissions: 'web-profiles:write'
      summary: Add Site
      description: Add a new site to the web filter site list.
      operationId: addSite
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Site details.
        content:
          application/json:
            schema:
              type: object
              description: Site in the web filter site list.
              required:
                - site
              properties:
                id:
                  description: Site ID.
                  type: string
                  format: uuid
                  readOnly: true
                site:
                  type: string
                  minLength: 1
                  maxLength: 2048
                  description: Site value.
                siteType:
                  type: string
                  description: >-
                    Web filter site type:


                    - **domain** - Scheme-less hostname only: no URI scheme, no
                    port, no path (e.g. `example.com`).

                    - **url** - URI with a scheme (e.g.
                    `http://www.example.com/news`,
                    `wss://api.example.com/stream`).

                    - **urlPattern** - Scheme-less URL-like pattern (e.g.
                    `example.com:8443`, `www.example.com/news`,
                    `api.example.com:8080/v1`).

                    - **tld** - Top-level domain for broad matching (e.g.
                    `.com`, `.co.uk`).

                    - **ipv4** / **ipv6** - Single IP address.

                    - **ipv4Cidr** / **ipv6Cidr** - Network in CIDR notation.
                  enum:
                    - domain
                    - url
                    - urlPattern
                    - tld
                    - ipv4
                    - ipv6
                    - ipv4Cidr
                    - ipv6Cidr
                createdAt:
                  description: Time the site was added to the site list.
                  type: string
                  format: date-time
                  readOnly: true
      responses:
        '201':
          description: New site added to list.
          content:
            application/json:
              schema:
                type: object
                description: Site in the web filter site list.
                required:
                  - site
                properties:
                  id:
                    description: Site ID.
                    type: string
                    format: uuid
                    readOnly: true
                  site:
                    type: string
                    minLength: 1
                    maxLength: 2048
                    description: Site value.
                  siteType:
                    type: string
                    description: >-
                      Web filter site type:


                      - **domain** - Scheme-less hostname only: no URI scheme,
                      no port, no path (e.g. `example.com`).

                      - **url** - URI with a scheme (e.g.
                      `http://www.example.com/news`,
                      `wss://api.example.com/stream`).

                      - **urlPattern** - Scheme-less URL-like pattern (e.g.
                      `example.com:8443`, `www.example.com/news`,
                      `api.example.com:8080/v1`).

                      - **tld** - Top-level domain for broad matching (e.g.
                      `.com`, `.co.uk`).

                      - **ipv4** / **ipv6** - Single IP address.

                      - **ipv4Cidr** / **ipv6Cidr** - Network in CIDR notation.
                    enum:
                      - domain
                      - url
                      - urlPattern
                      - tld
                      - ipv4
                      - ipv6
                      - ipv4Cidr
                      - ipv6Cidr
                  createdAt:
                    description: Time the site was added to the site list.
                    type: string
                    format: date-time
                    readOnly: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/site-lists/{siteListId}/sites/{siteId}':
    delete:
      x-soph-permissions: 'web-profiles:write'
      summary: Delete Site
      description: Delete an existing site from the site list.
      operationId: deleteSite
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteId
          description: Site ID.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                description: Response to a request to delete a site from the site list.
                properties:
                  deleted:
                    type: boolean
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
  '/site-lists/{siteListId}/clone':
    post:
      x-soph-permissions: 'web-profiles:write'
      summary: Clone site list
      description: Clone an existing web filter site list using its ID.
      operationId: cloneSiteList
      tags:
        - Web Filter Site List Management
      parameters:
        - name: X-Tenant-ID
          in: header
          description: Tenant ID.
          required: true
          schema:
            type: string
            format: uuid
        - in: path
          name: siteListId
          description: Site list ID.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Specifies the name for the cloned web filter site list.
        content:
          application/json:
            schema:
              type: object
              description: Request to clone a web filter site list.
              required:
                - name
              properties:
                name:
                  description: Name of the new web filter site list.
                  type: string
                  minLength: 1
                  maxLength: 50
      responses:
        '201':
          description: Site list cloned.
          content:
            application/json:
              schema:
                type: object
                description: Web filter site list.
                required:
                  - name
                  - sites
                properties:
                  id:
                    description: Site list ID.
                    type: string
                    format: uuid
                    readOnly: true
                  name:
                    description: Site list name.
                    type: string
                    minLength: 1
                    maxLength: 50
                  description:
                    description: Site list description.
                    type: string
                    maxLength: 250
                  sites:
                    description: Sites that belong to the site list.
                    type: array
                    items:
                      type: string
                      minLength: 1
                      maxLength: 2048
                    uniqueItems: true
                    minItems: 1
                  updatedAt:
                    description: Time the site list was last updated.
                    type: string
                    format: date-time
                    readOnly: true
                  updatedBy:
                    type: object
                    readOnly: true
                    required:
                      - id
                      - type
                    properties:
                      id:
                        description: Principal ID.
                        type: string
                      type:
                        description: Type of the Principal.
                        type: string
                        format: enum
                        enum:
                          - user
                          - service
                          - system
                      name:
                        description: Principal name.
                        type: string
                      accountType:
                        type: string
                        description: Account type.
                        enum:
                          - partner
                          - tenant
                          - organization
                      accountId:
                        description: Account ID.
                        type: string
                        format: uuid
                  usedBy:
                    description: >-
                      Web filtering profiles that reference this site list via
                      their site list actions.
                    type: array
                    items:
                      type: object
                      description: A reference to a web filtering profile.
                      readOnly: true
                      required:
                        - id
                        - name
                      properties:
                        id:
                          description: Web filtering profile ID.
                          type: string
                          format: uuid
                        name:
                          description: Web filtering profile name.
                          type: string
                          maxLength: 50
                    readOnly: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
        '500':
          description: Unexpected error.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
                  message:
                    type: string
                  correlationId:
                    type: string
                    format: uuid
                  code:
                    type: string
                  createdAt:
                    type: string
                    format: datetime
                  requestId:
                    type: string
                    format: uuid
                  docUrl:
                    type: string
                    format: uri
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
