ArthurAI Rules API

Endpoints to manage rules

OpenAPI Specification

arthurai-rules-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Arthur GenAI Engine Agent Discovery Rules API
  version: 2.1.688
  description: Endpoints to manage rules
tags:
- name: Rules
  description: Endpoints to manage rules
paths:
  /api/v2/default_rules:
    get:
      tags:
      - Rules
      summary: Get Default Rules
      description: Get default rules.
      operationId: get_default_rules_api_v2_default_rules_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RuleResponse'
                type: array
                title: Response Get Default Rules Api V2 Default Rules Get
      security:
      - API Key: []
    post:
      tags:
      - Rules
      summary: Create Default Rule
      description: 'Create a default rule. Default rules are applied universally across existing tasks, subsequently created new tasks, and any non-task related requests. Once a rule is created, it is immutable. Available rules are ''KeywordRule'', ''ModelHallucinationRuleV2'', ''ModelSensitiveDataRule'', ''PIIDataRule'', ''PromptInjectionRule'', ''RegexRule'', ''ToxicityRule''. Note: The rules are cached by the validation endpoints for 60 seconds.'
      operationId: create_default_rule_api_v2_default_rules_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewRuleRequest'
            examples:
              example1:
                summary: Sensitive Data Example
                description: Sensitive Data Example with its required configuration
                value:
                  name: Sensitive Data Rule
                  type: ModelSensitiveDataRule
                  apply_to_prompt: true
                  apply_to_response: false
                  config:
                    examples:
                    - example: John has O negative blood group
                      result: true
                    - example: Most of the people have A positive blood group
                      result: false
                    hint: specific individual's blood types
              example2:
                summary: Regex Example
                description: Regex Example with its required configuration. Be sure to properly encode requests using JSON libraries. For example, the regex provided encodes to a different string when encoded to account for escape characters.
                value:
                  name: SSN Regex Rule
                  type: RegexRule
                  apply_to_prompt: true
                  apply_to_response: true
                  config:
                    regex_patterns:
                    - \d{3}-\d{2}-\d{4}
                    - \d{5}-\d{6}-\d{7}
              example3:
                summary: Keywords Rule Example
                description: Keywords Rule Example with its required configuration
                value:
                  name: Blocked Keywords Rule
                  type: KeywordRule
                  apply_to_prompt: true
                  apply_to_response: true
                  config:
                    keywords:
                    - Blocked_Keyword_1
                    - Blocked_Keyword_2
              example4:
                summary: Prompt Injection Rule Example
                description: Prompt Injection Rule Example, no configuration required
                value:
                  name: Prompt Injection Rule
                  type: PromptInjectionRule
                  apply_to_prompt: true
                  apply_to_response: false
              example5:
                summary: Hallucination Rule V1 Example (Deprecated)
                description: Hallucination Rule Example, no configuration required (This rule is deprecated. Use ModelHallucinationRuleV2 instead.)
                value:
                  name: Hallucination Rule
                  type: ModelHallucinationRule
                  apply_to_prompt: false
                  apply_to_response: true
              example6:
                summary: Hallucination Rule V2 Example
                description: Hallucination Rule Example, no configuration required
                value:
                  name: Hallucination Rule
                  type: ModelHallucinationRuleV2
                  apply_to_prompt: false
                  apply_to_response: true
              example7:
                summary: Hallucination Rule V3 Example (Beta)
                description: Hallucination Rule Example, no configuration required. This rule is in beta and must be enabled by the system administrator.
                value:
                  name: Hallucination Rule
                  type: ModelHallucinationRuleV3
                  apply_to_prompt: false
                  apply_to_response: true
              example8:
                summary: PII Rule Example
                description: PII Rule Example, no configuration required. "disabled_pii_entities", "confidence_threshold", and "allow_list" accepted. Valid value for "confidence_threshold" is 0.0-1.0. Valid values for "disabled_pii_entities" are CREDIT_CARD,CRYPTO,DATE_TIME,EMAIL_ADDRESS,IBAN_CODE,IP_ADDRESS,NRP,LOCATION,PERSON,PHONE_NUMBER,MEDICAL_LICENSE,URL,US_BANK_NUMBER,US_DRIVER_LICENSE,US_ITIN,US_PASSPORT,US_SSN
                value:
                  name: PII Rule
                  type: PIIDataRule
                  apply_to_prompt: true
                  apply_to_response: true
                  config:
                    disabled_pii_entities:
                    - EMAIL_ADDRESS
                    - PHONE_NUMBER
                    confidence_threshold: '0.5'
                    allow_list:
                    - arthur.ai
                    - Arthur
              example9:
                summary: Toxicity Rule Example
                description: Toxicity Rule Example, no configuration required. Threshold accepted
                value:
                  name: Toxicity Rule
                  type: ToxicityRule
                  apply_to_prompt: true
                  apply_to_response: true
                  config:
                    threshold: 0.5
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuleResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - API Key: []
  /api/v2/default_rules/{rule_id}:
    delete:
      tags:
      - Rules
      summary: Archive Default Rule
      description: Archive existing default rule.
      operationId: archive_default_rule_api_v2_default_rules__rule_id__delete
      security:
      - API Key: []
      parameters:
      - name: rule_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Rule Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v2/rules/search:
    post:
      tags:
      - Rules
      summary: Search Rules
      description: Search default and/or task rules.
      operationId: search_rules_api_v2_rules_search_post
      security:
      - API Key: []
      parameters:
      - name: sort
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/PaginationSortMethod'
          description: Sort the results (asc/desc)
          default: desc
        description: Sort the results (asc/desc)
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          description: Page size. Default is 10. Must be greater than 0 and less than 5000.
          default: 10
          title: Page Size
        description: Page size. Default is 10. Must be greater than 0 and less than 5000.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          description: Page number
          default: 0
          title: Page
        description: Page number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRulesRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchRulesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ToxicityConfig:
      properties:
        threshold:
          type: number
          title: Threshold
          description: 'Optional. Float (0, 1) indicating the level of tolerable toxicity to consider the rule passed or failed. Min: 0 (no toxic language) Max: 1 (very toxic language). Default: 0.5'
          default: 0.5
      additionalProperties: false
      type: object
      title: ToxicityConfig
      example:
        threshold: 0.5
    RuleScope:
      type: string
      enum:
      - default
      - task
      title: RuleScope
    NewRuleRequest:
      properties:
        name:
          type: string
          title: Name
          description: Name of the rule
          examples:
          - SSN Regex Rule
        type:
          type: string
          title: Type
          description: Type of the rule. It can only be one of KeywordRule, RegexRule, ModelSensitiveDataRule, ModelHallucinationRule, ModelHallucinationRuleV2, PromptInjectionRule, PIIDataRule
          examples:
          - RegexRule
        apply_to_prompt:
          type: boolean
          title: Apply To Prompt
          description: Boolean value to enable or disable the rule for llm prompt
          examples:
          - true
        apply_to_response:
          type: boolean
          title: Apply To Response
          description: Boolean value to enable or disable the rule for llm response
          examples:
          - false
        config:
          anyOf:
          - $ref: '#/components/schemas/KeywordsConfig'
          - $ref: '#/components/schemas/RegexConfig'
          - $ref: '#/components/schemas/ExamplesConfig'
          - $ref: '#/components/schemas/ToxicityConfig'
          - $ref: '#/components/schemas/PIIConfig'
          - type: 'null'
          title: Config
          description: Config of the rule
      type: object
      required:
      - name
      - type
      - apply_to_prompt
      - apply_to_response
      title: NewRuleRequest
      example1:
        description: Sensitive Data Example with its required configuration
        summary: Sensitive Data Example
        value:
          apply_to_prompt: true
          apply_to_response: false
          config:
            examples:
            - example: John has O negative blood group
              result: true
            - example: Most of the people have A positive blood group
              result: false
            hint: specific individual's blood types
          name: Sensitive Data Rule
          type: ModelSensitiveDataRule
      example2:
        description: Regex Example with its required configuration. Be sure to properly encode requests using JSON libraries. For example, the regex provided encodes to a different string when encoded to account for escape characters.
        summary: Regex Example
        value:
          apply_to_prompt: true
          apply_to_response: true
          config:
            regex_patterns:
            - \d{3}-\d{2}-\d{4}
            - \d{5}-\d{6}-\d{7}
          name: SSN Regex Rule
          type: RegexRule
      example3:
        description: Keywords Rule Example with its required configuration
        summary: Keywords Rule Example
        value:
          apply_to_prompt: true
          apply_to_response: true
          config:
            keywords:
            - Blocked_Keyword_1
            - Blocked_Keyword_2
          name: Blocked Keywords Rule
          type: KeywordRule
      example4:
        description: Prompt Injection Rule Example, no configuration required
        summary: Prompt Injection Rule Example
        value:
          apply_to_prompt: true
          apply_to_response: false
          name: Prompt Injection Rule
          type: PromptInjectionRule
      example5:
        description: Hallucination Rule Example, no configuration required (This rule is deprecated. Use ModelHallucinationRuleV2 instead.)
        summary: Hallucination Rule V1 Example (Deprecated)
        value:
          apply_to_prompt: false
          apply_to_response: true
          name: Hallucination Rule
          type: ModelHallucinationRule
      example6:
        description: Hallucination Rule Example, no configuration required
        summary: Hallucination Rule V2 Example
        value:
          apply_to_prompt: false
          apply_to_response: true
          name: Hallucination Rule
          type: ModelHallucinationRuleV2
      example7:
        description: Hallucination Rule Example, no configuration required. This rule is in beta and must be enabled by the system administrator.
        summary: Hallucination Rule V3 Example (Beta)
        value:
          apply_to_prompt: false
          apply_to_response: true
          name: Hallucination Rule
          type: ModelHallucinationRuleV3
      example8:
        description: PII Rule Example, no configuration required. "disabled_pii_entities", "confidence_threshold", and "allow_list" accepted. Valid value for "confidence_threshold" is 0.0-1.0. Valid values for "disabled_pii_entities" are CREDIT_CARD,CRYPTO,DATE_TIME,EMAIL_ADDRESS,IBAN_CODE,IP_ADDRESS,NRP,LOCATION,PERSON,PHONE_NUMBER,MEDICAL_LICENSE,URL,US_BANK_NUMBER,US_DRIVER_LICENSE,US_ITIN,US_PASSPORT,US_SSN
        summary: PII Rule Example
        value:
          apply_to_prompt: true
          apply_to_response: true
          config:
            allow_list:
            - arthur.ai
            - Arthur
            confidence_threshold: '0.5'
            disabled_pii_entities:
            - EMAIL_ADDRESS
            - PHONE_NUMBER
          name: PII Rule
          type: PIIDataRule
      example9:
        description: Toxicity Rule Example, no configuration required. Threshold accepted
        summary: Toxicity Rule Example
        value:
          apply_to_prompt: true
          apply_to_response: true
          config:
            threshold: 0.5
          name: Toxicity Rule
          type: ToxicityRule
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ExamplesConfig:
      properties:
        examples:
          items:
            $ref: '#/components/schemas/ExampleConfig'
          type: array
          title: Examples
          description: List of all the examples for Sensitive Data Rule
        hint:
          anyOf:
          - type: string
          - type: 'null'
          title: Hint
          description: Optional. Hint added to describe what Sensitive Data Rule should be checking for
      type: object
      required:
      - examples
      title: ExamplesConfig
      example:
        examples:
        - example: John has O negative blood group
          result: true
        - example: Most of the people have A positive blood group
          result: false
        hint: specific individual's blood type
    RegexConfig:
      properties:
        regex_patterns:
          items:
            type: string
          type: array
          title: Regex Patterns
          description: List of Regex patterns to be used for validation. Be sure to encode requests in JSON and account for escape characters.
      additionalProperties: false
      type: object
      required:
      - regex_patterns
      title: RegexConfig
      example:
        regex_patterns:
        - \d{3}-\d{2}-\d{4}
        - \d{5}-\d{6}-\d{7}
    KeywordsConfig:
      properties:
        keywords:
          items:
            type: string
          type: array
          title: Keywords
          description: List of Keywords
      type: object
      required:
      - keywords
      title: KeywordsConfig
      example:
        keywords:
        - Blocked_Keyword_1
        - Blocked_Keyword_2
    RuleResponse:
      properties:
        id:
          type: string
          title: Id
          description: ID of the Rule
        name:
          type: string
          title: Name
          description: Name of the Rule
        type:
          $ref: '#/components/schemas/RuleType'
          description: Type of Rule
        apply_to_prompt:
          type: boolean
          title: Apply To Prompt
          description: Rule applies to prompt
        apply_to_response:
          type: boolean
          title: Apply To Response
          description: Rule applies to response
        enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Enabled
          description: Rule is enabled for the task
        scope:
          $ref: '#/components/schemas/RuleScope'
          description: Scope of the rule. The rule can be set at default level or task level.
        created_at:
          type: integer
          title: Created At
          description: Time the rule was created in unix milliseconds
        updated_at:
          type: integer
          title: Updated At
          description: Time the rule was updated in unix milliseconds
        config:
          anyOf:
          - $ref: '#/components/schemas/KeywordsConfig'
          - $ref: '#/components/schemas/RegexConfig'
          - $ref: '#/components/schemas/ExamplesConfig'
          - $ref: '#/components/schemas/ToxicityConfig'
          - $ref: '#/components/schemas/PIIConfig'
          - type: 'null'
          title: Config
          description: Config of the rule
      type: object
      required:
      - id
      - name
      - type
      - apply_to_prompt
      - apply_to_response
      - scope
      - created_at
      - updated_at
      title: RuleResponse
    PIIConfig:
      properties:
        disabled_pii_entities:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Disabled Pii Entities
          description: 'Optional. List of PII entities to disable. Valid values are: CREDIT_CARD,CRYPTO,DATE_TIME,EMAIL_ADDRESS,IBAN_CODE,IP_ADDRESS,NRP,LOCATION,PERSON,PHONE_NUMBER,MEDICAL_LICENSE,URL,US_BANK_NUMBER,US_DRIVER_LICENSE,US_ITIN,US_PASSPORT,US_SSN'
        confidence_threshold:
          anyOf:
          - type: number
          - type: 'null'
          title: Confidence Threshold
          description: 'Optional. Float (0, 1) indicating the level of tolerable PII to consider the rule passed or failed. Min: 0 (less confident) Max: 1 (very confident). Default: 0'
          default: 0
          deprecated: true
        allow_list:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Allow List
          description: Optional. List of strings to pass PII validation.
      additionalProperties: false
      type: object
      title: PIIConfig
      example:
        allow_list:
        - arthur.ai
        - Arthur
        confidence_threshold: '0.5'
        disabled_pii_entities:
        - PERSON
        - URL
    RuleType:
      type: string
      enum:
      - KeywordRule
      - ModelHallucinationRuleV2
      - ModelSensitiveDataRule
      - PIIDataRule
      - PromptInjectionRule
      - RegexRule
      - ToxicityRule
      title: RuleType
    SearchRulesRequest:
      properties:
        rule_ids:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Rule Ids
          description: List of rule IDs to search for.
        rule_scopes:
          anyOf:
          - items:
              $ref: '#/components/schemas/RuleScope'
            type: array
          - type: 'null'
          title: Rule Scopes
          description: List of rule scopes to search for.
        prompt_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Prompt Enabled
          description: Include or exclude prompt-enabled rules.
        response_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Response Enabled
          description: Include or exclude response-enabled rules.
        rule_types:
          anyOf:
          - items:
              $ref: '#/components/schemas/RuleType'
            type: array
          - type: 'null'
          title: Rule Types
          description: List of rule types to search for.
      type: object
      title: SearchRulesRequest
    SearchRulesResponse:
      properties:
        count:
          type: integer
          title: Count
          description: The total number of rules matching the parameters
        rules:
          items:
            $ref: '#/components/schemas/RuleResponse'
          type: array
          title: Rules
          description: List of rules matching the search filters. Length is less than or equal to page_size parameter
      type: object
      required:
      - count
      - rules
      title: SearchRulesResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PaginationSortMethod:
      type: string
      enum:
      - asc
      - desc
      title: PaginationSortMethod
    ExampleConfig:
      properties:
        example:
          type: string
          title: Example
          description: Custom example for the sensitive data
        result:
          type: boolean
          title: Result
          description: 'Boolean value representing if the example passes or fails the the sensitive data rule '
      type: object
      required:
      - example
      - result
      title: ExampleConfig
      example:
        example: John has O negative blood group
        result: true
  securitySchemes:
    API Key:
      type: http
      description: Bearer token authentication with an API key
      scheme: bearer