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

# Get a topic proposal

> Returns the proposed topics and where each group of alerts goes. applied_at is set once the proposal is applied.



## OpenAPI

````yaml /openapi.json get /v1/alert-topic-proposals/{id}
openapi: 3.1.0
info:
  title: Watchdog API
  version: 1.0.0
  description: >-
    The Watchdog API is served from https://api.watchdog.no. Request bodies are
    limited to 2 MiB unless an endpoint says otherwise. Files are uploaded
    directly to storage, not through the API.
servers:
  - url: https://api.watchdog.no
    description: Watchdog API
security: []
paths:
  /v1/alert-topic-proposals/{id}:
    get:
      tags:
        - Alerts
      summary: Get a topic proposal
      description: >-
        Returns the proposed topics and where each group of alerts goes.
        applied_at is set once the proposal is applied.
      operationId: getAlertTopicProposal
      parameters:
        - name: X-Organization-Id
          in: header
          required: false
          schema:
            type: string
          description: >-
            The organization to act in. Required for personal API keys; list the
            organizations you can access with GET /v1/organizations.
        - name: fields
          in: query
          required: false
          schema:
            type: string
          description: >-
            Return only these fields, comma-separated; use dots for nested
            fields, such as topics.ref. id is always returned. Fields: id,
            agreement_id, operation, topic_ids, instructions, topics, groups,
            warnings, created_at, applied_at.
        - schema:
            type: string
            format: uuid
          required: true
          name: id
          in: path
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              true adds context_before and context_after to document citations:
              the text around each quote, used to locate it in the document.
          required: false
          description: >-
            true adds context_before and context_after to document citations:
            the text around each quote, used to locate it in the document.
          name: citation_context
          in: query
      responses:
        '200':
          description: The topic proposal.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertTopicProposal'
        '400':
          description: >-
            The request is invalid. details lists up to 20 field errors. Request
            bodies are limited to 2 MiB.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_validation_error'
              example:
                error:
                  code: validation_error
                  message: >-
                    The request is invalid. details lists up to 20 field errors.
                    Request bodies are limited to 2 MiB.
                  request_id: req_example
        '401':
          description: The bearer token is missing or invalid.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            WWW-Authenticate:
              schema:
                type: string
              required: false
              description: Bearer authentication challenge, when supplied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_invalid_token'
              example:
                error:
                  code: invalid_token
                  message: The bearer token is missing or invalid.
                  request_id: req_example
        '403':
          description: >-
            Access denied. The error code says why: forbidden, token_disabled,
            organization_required, insufficient_role or mfa_required.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Error_forbidden_token_disabled_organization_required_insufficient_role_mfa_required
              example:
                error:
                  code: forbidden
                  message: >-
                    Access denied. The error code says why: forbidden,
                    token_disabled, organization_required, insufficient_role or
                    mfa_required.
                  request_id: req_example
        '404':
          description: The resource does not exist in the current organization.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_not_found'
              example:
                error:
                  code: not_found
                  message: The resource does not exist in the current organization.
                  request_id: req_example
        '429':
          description: Too many requests. Wait for the Retry-After delay before retrying.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            Retry-After:
              schema:
                type: string
                example: '60'
              required: true
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_rate_limit_exceeded'
              example:
                error:
                  code: rate_limit_exceeded
                  message: >-
                    Too many requests. Wait for the Retry-After delay before
                    retrying.
                  request_id: req_example
        '500':
          description: >-
            Unexpected server failure. Include the request ID when contacting
            support.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_internal_error'
              example:
                error:
                  code: internal_error
                  message: >-
                    Unexpected server failure. Include the request ID when
                    contacting support.
                  request_id: req_example
        '503':
          description: >-
            Temporarily unavailable. Retry after the Retry-After delay, when
            provided.
          headers:
            X-Request-Id:
              schema:
                type: string
              required: true
              description: >-
                Request ID, also included in error bodies. Include it when
                contacting support.
            Cache-Control:
              schema:
                type: string
                enum:
                  - private, no-store
                  - private, no-store, no-transform
              required: false
              description: API responses are private and must not be cached.
            X-RateLimit-Limit:
              schema:
                type: string
                example: '500'
              required: false
              description: >-
                Requests allowed per minute for this credential, or failed API
                key attempts allowed per minute from this IP address.
            Retry-After:
              schema:
                type: string
                example: '60'
              required: true
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error_service_unavailable'
              example:
                error:
                  code: service_unavailable
                  message: >-
                    Temporarily unavailable. Retry after the Retry-After delay,
                    when provided.
                  request_id: req_example
      security:
        - ApiKeyBearer: []
components:
  schemas:
    AlertTopicProposal:
      type: object
      properties:
        id:
          type: string
          format: uuid
        agreement_id:
          type: string
          format: uuid
        operation:
          type: string
          enum:
            - merge
            - split
        topic_ids:
          type: array
          items:
            type: string
            format: uuid
          description: The topics the proposal replaces.
        instructions:
          type:
            - string
            - 'null'
        topics:
          type: array
          items:
            type: object
            properties:
              ref:
                type: string
                description: Stable within this proposal, e.g. NT1.
              title:
                type: string
              description:
                type: string
                description: >-
                  Markdown. Inline citations such as [1] refer to this topic’s
                  citations.
              key_questions:
                type: array
                items:
                  type: string
              citations:
                type: array
                items:
                  anyOf:
                    - type: object
                      properties:
                        source_ref:
                          type: integer
                          exclusiveMinimum: 0
                        citation_id:
                          type:
                            - string
                            - 'null'
                          format: uuid
                        available:
                          type: boolean
                          enum:
                            - true
                        source_type:
                          type: string
                          enum:
                            - document
                        document_id:
                          type: string
                          format: uuid
                        document_name:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        section_title:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        quote:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                          description: >-
                            The cited text as found in the document. Null when
                            only context_before and context_after locate it.
                        context_before:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                          description: Only with citation_context=true.
                        context_after:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                          description: Only with citation_context=true.
                        verification:
                          type:
                            - string
                            - 'null'
                          enum:
                            - verified
                            - corrected
                            - recovered
                            - unverified
                            - null
                          description: >-
                            verified: the quote was found in the document.
                            corrected: found after fixing the document or
                            wording. recovered: located by its context only.
                            unverified: not found.
                        original_quote:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                          description: >-
                            The check's wording when the quote was not found
                            verbatim (quote is null); null otherwise.
                      required:
                        - source_ref
                        - citation_id
                        - available
                        - source_type
                        - document_id
                        - document_name
                        - section_title
                        - quote
                        - verification
                        - original_quote
                    - type: object
                      properties:
                        source_ref:
                          type: integer
                          exclusiveMinimum: 0
                        citation_id:
                          type:
                            - string
                            - 'null'
                          format: uuid
                        available:
                          type: boolean
                          enum:
                            - true
                        source_type:
                          type: string
                          enum:
                            - web
                        url:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        title:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        quote:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        text:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                        cited_at:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                      required:
                        - source_ref
                        - citation_id
                        - available
                        - source_type
                        - url
                        - title
                        - quote
                        - text
                        - cited_at
                    - type: object
                      properties:
                        source_ref:
                          type: integer
                          exclusiveMinimum: 0
                        citation_id:
                          type:
                            - string
                            - 'null'
                          format: uuid
                        available:
                          type: boolean
                          enum:
                            - true
                        source_type:
                          type: string
                          enum:
                            - agreement_items
                        item_ids:
                          type: array
                          items:
                            type: string
                            format: uuid
                      required:
                        - source_ref
                        - citation_id
                        - available
                        - source_type
                        - item_ids
                    - type: object
                      properties:
                        source_ref:
                          type: integer
                          exclusiveMinimum: 0
                        citation_id:
                          type:
                            - string
                            - 'null'
                          format: uuid
                        available:
                          type: boolean
                          enum:
                            - true
                        source_type:
                          type: string
                          enum:
                            - user_context
                        text:
                          type:
                            - string
                            - 'null'
                          maxLength: 10000
                      required:
                        - source_ref
                        - citation_id
                        - available
                        - source_type
                        - text
                    - type: object
                      properties:
                        source_ref:
                          type:
                            - integer
                            - 'null'
                          exclusiveMinimum: 0
                        citation_id:
                          type:
                            - string
                            - 'null'
                          format: uuid
                        source_type:
                          type:
                            - string
                            - 'null'
                        available:
                          type: boolean
                          enum:
                            - false
                        reason:
                          type: string
                          enum:
                            - source_unavailable
                      required:
                        - source_ref
                        - citation_id
                        - source_type
                        - available
                        - reason
            required:
              - ref
              - title
              - description
              - key_questions
              - citations
          description: The topics applying creates.
        groups:
          type: array
          items:
            type: object
            properties:
              ref:
                type: string
                description: Stable within this proposal, e.g. A1.
              kind:
                type: string
                enum:
                  - single_alert
                  - similar_alerts
                  - replacement_set
              topic_ref:
                type: string
                description: The proposed topic the group goes to.
              alert_ids:
                type: array
                items:
                  type: string
                  format: uuid
              source_topic_ids:
                type: array
                items:
                  type: string
                  format: uuid
                description: The topics the alerts are in now.
              title:
                type: string
                description: Title of a representative alert.
              message:
                type: string
                description: Explanation of a representative alert.
              line_item:
                type:
                  - string
                  - 'null'
              pricing:
                type:
                  - string
                  - 'null'
            required:
              - ref
              - kind
              - topic_ref
              - alert_ids
              - source_topic_ids
              - title
              - message
              - line_item
              - pricing
          description: >-
            Alerts that move together. Every alert of the selected topics is in
            one group.
        warnings:
          type: array
          items:
            type: string
        created_at:
          type: string
          format: date-time
        applied_at:
          type:
            - string
            - 'null'
          format: date-time
      required:
        - id
        - agreement_id
        - operation
        - topic_ids
        - instructions
        - topics
        - groups
        - warnings
        - created_at
        - applied_at
    Error_validation_error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_error
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_invalid_token:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - invalid_token
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_forbidden_token_disabled_organization_required_insufficient_role_mfa_required:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - forbidden
                - token_disabled
                - organization_required
                - insufficient_role
                - mfa_required
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_not_found:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - not_found
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_rate_limit_exceeded:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - rate_limit_exceeded
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_internal_error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - internal_error
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
    Error_service_unavailable:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - service_unavailable
            message:
              type: string
            request_id:
              type: string
            description:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - field
                  - message
              maxItems: 20
            workflow_run_id:
              type: string
              format: uuid
            import_id:
              type: string
              format: uuid
            existing_party:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - supplier
                    - recipient
                id:
                  type: string
                  format: uuid
              required:
                - type
                - id
          required:
            - code
            - message
            - request_id
      required:
        - error
  securitySchemes:
    ApiKeyBearer:
      type: http
      scheme: bearer
      description: >-
        Personal API key sent as a bearer token, together with
        X-Organization-Id. The key must have at least the access level the
        endpoint requires (read, write or admin).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.