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

# Edit quality assurance settings

> Only checks listed in the request are updated; omitted checks keep their current settings.



## OpenAPI

````yaml /openapi/phrase-tms-v2.json put /api2/v2/projects/{projectUid}/qaSettings
openapi: 3.0.0
info:
  description: |-
    Welcome to Phrase's TMS API documentation. 

     Please visit our [help center](https://support.phrase.com/hc/en-us/sections/5709662083612) for more information about the APIs. 

     If you have any questions, please contact [Support](https://support.phrase.com/hc/requests/new). 

     Please, include the `User-Agent` header with the name of your application or project. It might be a good idea to include some sort of contact information as well, so that we can get in touch if necessary. Examples of excellent `User-Agent` headers:
     > User-Agent: Example mobile app (example@phrase.com) <br/> User-Agent: ACME Inc Java 1.8 Client (http://acmeinc.com/contact)
  version: '2'
  title: Phrase TMS API
servers:
  - url: https://cloud.memsource.com/web
security:
  - ApiToken: []
  - OAuth2: []
tags:
  - name: Analysis
  - name: Bilingual File
  - name: Connector
  - name: Conversations
  - name: Job
  - name: Net Rate Scheme
  - name: Project
  - name: Project Template
  - name: Provider
  - name: Quality Assurance
  - name: Quote
  - name: Reference File
  - name: Term Base
  - name: Translation
  - name: Translation Memory
  - name: User
  - name: Webhook
  - name: Workflow changes
paths:
  /api2/v2/projects/{projectUid}/qaSettings:
    put:
      tags:
        - Project
      summary: Edit quality assurance settings
      description: >-
        Only checks listed in the request are updated; omitted checks keep their
        current settings.
      operationId: setProjectQASettingsV2
      parameters:
        - name: projectUid
          in: path
          description: Project UID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditQASettingsDtoV2'
        description: QA settings
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QASettingsDtoV2'
        '400':
          description: Bad Request
        '401':
          description: Not authorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '405':
          description: Method not allowed
        '408':
          description: Timeout
        '410':
          description: Gone
        '415':
          description: Unsupported media type
        '429':
          description: Too many requests
        '500':
          description: Internal server error
        '501':
          description: Not implemented
components:
  schemas:
    EditQASettingsDtoV2:
      type: object
      properties:
        checks:
          type: array
          example: |2-

                    {
                        "ignorable": false,
                        "enabled": true,
                        "type": "VOID",
                        "instant": false,
                        "name": "emptyTarget"
                    },
                    {
                        "ignorable": false,
                        "enabled": true,
                        "value": 12,
                        "type": "NUMBER",
                        "name": "targetLength"
                    },
                    {
                        "ignorable": false,
                        "enabled": true,
                        "value": "ASAP, irony",
                        "type": "STRING",
                        "instant": true,
                        "name": "forbiddenStrings"
                    },
                    {
                        "enabled": true,
                        "profile": "jiris",
                        "ignorable": true,
                        "type": "MORAVIA",
                        "name": "moravia"
                    },
                    {
                        "rules": [
                            {
                                "description": "Description",
                                "sourceRegexp": ".+",
                                "targetRegexp": ".+",
                                "ignorable": true
                            },
                            {
                                "description": "Description",
                                "sourceRegexp": "i+",
                                "targetRegexp": "e+",
                                "ignorable": false
                            }
                        ],
                        "type": "REGEX",
                        "name": "regexp"
                    },
                    {
                        "enabled": true,
                        "ignorable": true,
                        "type": "VOID",
                        "name": "customQa"
                    }
                
          description: >-
            List of QA check configurations. Each entry must include "name"
            (check identifier) and "type" (VOID, NUMBER, STRING, REGEX, or
            MORAVIA). VOID, NUMBER, and STRING checks accept "enabled",
            "ignorable", "instant", and "lock"; MORAVIA accepts "enabled",
            "ignorable", "instant", and a "profile" string; REGEX checks carry a
            "rules" array (per-rule fields define the regular expressions and
            flags). NUMBER checks require a numeric "value"; STRING checks
            accept a string "value". Only checks listed here are updated;
            omitted checks keep their current settings.
          items:
            type: object
            additionalProperties:
              type: object
    QASettingsDtoV2:
      type: object
      properties:
        checks:
          type: array
          description: List of QA check configurations
          items:
            $ref: '#/components/schemas/QACheckDtoV2'
    QACheckDtoV2:
      type: object
      required:
        - name
        - type
      discriminator:
        propertyName: type
      properties:
        name:
          type: string
          description: Identifies the QA check
          enum:
            - emptyTarget
            - inconsistentTranslation
            - joinMarksInconsistency
            - missingNumber
            - segmentNotConfirmed
            - nonConformingTerms
            - multipleSpaces
            - endPunctuation
            - targetLength
            - absoluteTargetLength
            - relativeTargetLength
            - inconsistentFormatting
            - unresolvedComment
            - emptyPairTags
            - strictJobStatus
            - forbiddenStringsEnabled
            - excludeLockedSegments
            - ignoreNotApprovedTerms
            - spellCheck
            - repeatedWords
            - inconsistentTagContent
            - emptyTagContent
            - malformed
            - forbiddenTerms
            - targetLengthPercent
            - targetLengthPerSegment
            - newerAtLowerLevel
            - leadingAndTrailingSpaces
            - targetSourceIdentical
            - ignoreInAllWorkflowSteps
            - regexp
            - unmodifiedFuzzyTranslation
            - unmodifiedFuzzyTranslationTM
            - unmodifiedFuzzyTranslationMTNT
            - moravia
            - extraNumbers
            - nestedTags
        type:
          type: string
          description: Check type; determines which additional fields apply
          enum:
            - VOID
            - NUMBER
            - STRING
            - REGEX
            - MORAVIA
  securitySchemes:
    ApiToken:
      description: >-
        Get a token from `auth/login` [endpoint](#operation/login) and then pass
        it in the `Authorization` HTTP header in every subsequent API call. For
        more information visit our [help
        center](https://support.phrase.com/hc/en-us/articles/5709662181404-API-Authentication-TMS-#token-0-0).
      type: apiKey
      name: Authorization
      in: header
    OAuth2:
      description: >-
        A standard OAuth 2.0 authorization code flow. For more information visit
        our [help
        center](https://support.phrase.com/hc/en-us/articles/5709662181404-API-Authentication-TMS-#oauth-2-0-0-1).
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://cloud.memsource.com/web/oauth/authorize
          tokenUrl: https://cloud.memsource.com/web/oauth/token
          scopes: {}

````