Imperva Login Protect API

Provision Login Protect users and configure protected pages.

OpenAPI Specification

imperva-login-protect-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cloud Application Security Account Management Login Protect API
  license:
    name: Imperva License Agreement.
    url: http://www.imperva.com/other/license_agreement.asp
  version: '1.0'
  description: Add, delete, and modify accounts. Get account details.
servers:
- url: https://my.imperva.com
  description: Imperva API server
  variables: {}
security:
- api_key: []
- api_id: []
tags:
- name: Login Protect
  description: Provision Login Protect users and configure protected pages.
paths:
  /api/prov/v1/sites/lp/configure:
    post:
      tags:
      - Login Protect
      summary: Add Login Protect User
      description: Use this operation to change Login Protect settings for a site.
      operationId: modifyLpSiteConfiguration
      parameters:
      - name: site_id
        in: query
        description: Numeric identifier of the site to operate on.
        required: true
        schema:
          type: integer
          format: int64
        example: 10
      - name: enabled
        in: query
        description: 'Pass true to enable login protect on site, and false to disable it.<br/>Default: true'
        schema:
          type: boolean
        example: true
      - name: specific_users_list
        in: query
        description: Comma separated email list to set login protect users for the site. If the list is empty all users will be allowed to access the site using Login Protect.
        schema:
          type: string
        example: admin@example.com
      - name: send_lp_notifications
        in: query
        description: 'Pass true to send notification on successful login using login protect.<br/>Default: false'
        schema:
          type: boolean
        example: true
      - name: allow_all_users
        in: query
        description: 'Pass true to allow all login protect users to access the site. If you want to allow only a specific list of users to access the site using Login Protect set this to false, and add the list to specific_user_list.<br/>Default: true'
        schema:
          type: boolean
        example: true
      - name: authentication_methods
        in: query
        description: 'Comma separated list of allowed authentication methods: sms | email | ga'
        schema:
          type: string
        example: sms
      - name: urls
        in: query
        description: A comma separated list of resource paths. For example, /home and /admin/index.html are resource paths, while <a href="http://www.example.com/home">http://www.example.com/home</a> is not. Each URL should be encoded separately using percent encoding as specified by RFC 3986 (<a href="http://tools.ietf.org/html/rfc3986#section-2.1">http://tools.ietf.org/html/rfc3986#section-2.1</a>). An empty URL list will remove all URLs.
        schema:
          type: string
        example: /home
      - name: url_patterns
        in: query
        description: 'A comma separated list of url patterns. Possible values: contains | equals | prefix | suffix | not_equals | not_contain | not_prefix | not_suffix. The patterns should be in accordance with the matching urls sent by the urls parameter.'
        schema:
          type: string
        example: prefix
      responses:
        '200':
          description: res - contains the specific error code:<br/>9413 - Unknown/unauthorized site_id</br>18001 - Format invalid<br/>18002 - Application invalid<br/>18011 - Invalid SMS Text<br/>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid<br/>18003 - Invalid phone number
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ApiResultSiteStatus'
                - $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/configure-app:
    post:
      tags:
      - Login Protect
      summary: Configure Login Protect on Admin Areas
      description: Use this operation to configure Login Protect on wordpress | joomla | phpbb admin areas.
      operationId: configureProtectedAppByLp
      parameters:
      - name: site_id
        in: query
        description: Numeric identifier of the site to operate on.
        required: true
        schema:
          type: integer
          format: int64
        example: 10
      - name: protected_app
        in: query
        description: Protect admin areas of joomla | wordpress | phpBB.
        schema:
          type: string
        example: wordpress
      responses:
        '200':
          description: res - contains the specific error code:<br/>9413 - Unknown/unauthorized site_id<br/>18001 - Format invalid<br/>18002 - Application invalid<br/>18011 - Invalid SMS Text<br/>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid<br/>18003 - Invalid phone number
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ApiResultSiteStatus'
                - $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/add-user:
    post:
      tags:
      - Login Protect
      summary: Add Login Protect User
      description: Use this operation to add a Login Protect user for a site.
      operationId: addLpUser
      parameters:
      - name: account_id
        in: query
        description: Numeric identifier of the account to operate on.
        required: true
        schema:
          type: string
        example: 10
      - name: email
        in: query
        description: Email address.
        required: true
        schema:
          type: string
        example: admin@example.com
      - name: name
        in: query
        description: 'Example: John Smith'
        schema:
          type: string
        example: John Smith
      - name: phone
        in: query
        description: 'Phone number. For example: "1-8662507659"'
        schema:
          type: string
        example: 1-8662507659
      - name: is_phone_verified
        in: query
        description: Whether or not to skip phone verification.
        schema:
          type: boolean
        example: true
      - name: is_email_verified
        in: query
        description: Whether or not to skip email address verification.
        schema:
          type: boolean
        example: true
      - name: should_send_activation_email
        in: query
        description: Whether or not to send activation email to user.
        schema:
          type: boolean
        example: true
      responses:
        '200':
          description: res - contains the specific error code:</br>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid</br>18005 - Login Protect User Exists</br>18006 - Operation Not Allowed</br>18009 - Not Supported Action<br/>18004 - Failed to Send E-Mail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/users:
    post:
      tags:
      - Login Protect
      summary: Get Login Protect Users
      description: Use this operation to get the account's login protect user list.
      operationId: getLpUsers
      parameters:
      - name: account_id
        in: query
        description: Numeric identifier of the account to operate on.
        required: true
        schema:
          type: string
        example: 10
      responses:
        '200':
          description: res - contains the specific error code:<br/>18003 - Invalid phone number</br>18004 - Failed to Send E-Mail<br/>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid</br>18005 - Login Protect User Exists<br/>18006 - Operation Not Allowed
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/LoginProtectUsersApiResults'
                - $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/edit-user:
    post:
      tags:
      - Login Protect
      summary: Edit Login Protect User
      description: Edit Login Protect user's settings.
      operationId: editLpUser
      parameters:
      - name: account_id
        in: query
        description: Numeric identifier of the account to operate on.
        required: true
        schema:
          type: string
        example: 10
      - name: email
        in: query
        description: Email address.
        required: true
        schema:
          type: string
        example: admin@example.com
      - name: name
        in: query
        description: 'Example: John Smith'
        schema:
          type: string
        example: John Smith
      - name: phone
        in: query
        description: 'Phone number. For example: "1-8662507659"'
        schema:
          type: string
        example: 1-8662507659
      - name: is_phone_verified
        in: query
        description: Whether or not to skip phone verification.
        schema:
          type: boolean
        example: true
      - name: is_email_verified
        in: query
        description: Whether or not to skip email address verification.
        schema:
          type: boolean
        example: true
      - name: should_send_activation_email
        in: query
        description: Whether or not to send activation email to user.
        schema:
          type: boolean
        example: true
      responses:
        '200':
          description: res - contains the specific error code:<br/>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid<br/>18005 - Login Protect User Exists<br/>18006 - Operation Not Allowed<br/>18009  - Not Supported Action</br>18004 - Failed to Send E-Mail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/send-sms:
    post:
      tags:
      - Login Protect
      summary: Send SMS to User
      description: Use this operation to send an SMS to a login protect user.
      operationId: sendSms
      parameters:
      - name: account_id
        in: query
        description: Numeric identifier of the account to operate on.
        required: true
        schema:
          type: string
        example: 10
      - name: email
        in: query
        description: Email address.
        required: true
        schema:
          type: string
        example: admin@example.com
      - name: sms_text
        in: query
        description: Text that will be sent in SMS.
        required: true
        schema:
          type: string
        example: hello
      responses:
        '200':
          description: res - contains the specific error code:<br/>18003 -Invalid phone number<br/>18011 - Invalid SMS Text<br/>9403 - Unknown/unauthorized account_id<br/>18010 - Invalid User<br/>18007 - Exceeded Allowed SMS<br/>18008 - Failed to Send SMS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
  /api/prov/v1/sites/lp/remove:
    post:
      tags:
      - Login Protect
      summary: Remove Login Protect User
      description: Use this operation to remove a login protect user from an account's user list.
      operationId: removeLpUser
      parameters:
      - name: account_id
        in: query
        description: Numeric identifier of the account to operate on.
        required: true
        schema:
          type: string
        example: 10
      - name: email
        in: query
        description: Email address.
        required: true
        schema:
          type: string
        example: admin@example.com
      responses:
        '200':
          description: res - contains the specific error code:<br/>18003 - Invalid phone number<br/>18004 - Failed to Send E-Mail<br/>9403 - Unknown/unauthorized account_id<br/>1001 - E-mail invalid<br/>18005 - Login Protect User Exists<br/>18006 - Operation Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResult'
components:
  schemas:
    APISealLocationItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    ApiResultSiteStatus:
      type: object
      properties:
        res:
          type: integer
          description: res - contains specific error code
          format: int32
          example: 0
        res_message:
          type: string
          example: OK
        debug_info:
          type: array
          items:
            type: object
            additionalProperties:
              type: object
              example: {}
            example: {}
        site_id:
          type: integer
          format: int64
          example: 10
        statusEnum:
          type: string
          example: pending-dns-changes
          enum:
          - pending-dns-changes
          - fully-configured
          - pending-select-approver
          - pending-certificate
          - unknown
        status:
          type: string
          example: pending-dns-changes
        domain:
          type: string
          example: admin@example.com
        account_id:
          type: integer
          format: int64
          example: 1
        acceleration_level:
          type: string
          example: advanced
        site_creation_date:
          type: integer
          format: int64
          example: 1610396346000
        ips:
          type: array
          items:
            type: object
            example: 1.2.3.4
        dns:
          type: array
          items:
            $ref: '#/components/schemas/DnsInstructionItem'
        original_dns:
          type: array
          items:
            $ref: '#/components/schemas/DnsInstructionItem'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/SiteConfigurationWarning'
        active:
          type: string
          example: active
          enum:
          - active
          - bypass
        support_all_tls_versions:
          type: boolean
          example: true
        use_wildcard_san_instead_of_full_domain_san:
          type: boolean
          example: true
        add_naked_domain_san:
          type: boolean
          example: true
        set_site_cookies_without_domain:
          type: boolean
          example: true
        additionalErrors:
          type: array
          items:
            type: object
            example: 1001
        display_name:
          type: string
          example: loginprotectapi1610396334653.incaptest.info
        security:
          type: array
          example:
            waf:
              rules:
              - id: api.threats.bot_access_control
                name: Bot Access Control
                block_bad_bots: true
                challenge_suspected_bots: true
              - id: api.threats.sql_injection
                name: SQL Injection
                action: api.threats.action.block_request
                action_text: Block Request
              - id: api.threats.cross_site_scripting
                name: Cross Site Scripting (XSS)
                exceptions:
                - values:
                  - urls:
                    - value: /gsddg
                      pattern: EQUALS
                    id: api.rule_exception_type.url
                    name: URL
                  id: 244711494
                action: api.threats.action.alert
                action_text: Alert Only
              - id: api.threats.illegal_resource_access
                name: Illegal Resource Access
                action: api.threats.action.block_user
                action_text: Block User
              - id: api.threats.ddos
                name: DDoS
                activation_mode: api.threats.ddos.activation_mode.off
                activation_mode_text: 'Off'
                ddos_traffic_threshold: api.threats.ddos.ddos_trassic_threshold
                ddos_traffic_threshold_text: '750'
              - id: api.threats.backdoor
                name: Backdoor Protect
                action: api.threats.action.quarantine_url
                action_text: Auto-Quarantine
              - action: api.threats.action.block_ip
                action_text: Block IP
                id: api.threats.remote_file_inclusion
                name: Remote File Inclusion
            acls:
              rules:
              - ips:
                - 2.3.4.5
                exceptions:
                - values:
                  - id: api.rule_exception_type.url
                    name: URL
                    urls:
                    - value: /home
                      pattern: EQUALS
                  id: 493271006
                id: api.acl.blacklisted_ips
                name: Visitors from denylisted IPs
          items:
            type: object
            additionalProperties:
              type: object
        sealLocation:
          $ref: '#/components/schemas/APISealLocationItem'
        ssl:
          type: array
          example:
            origin_server:
              detected: 'true'
              detectionStatus: ok
          items:
            type: object
            additionalProperties:
              type: object
        siteDualFactorSettings:
          $ref: '#/components/schemas/SiteDualFactorSettings'
        login_protect:
          $ref: '#/components/schemas/LoginProtectApiResult'
        performance_configuration:
          $ref: '#/components/schemas/PerformanceConfigurationApiResult'
        extended_ddos:
          type: integer
          format: int32
          example: 0
        incap_rules:
          type: array
          items:
            $ref: '#/components/schemas/IncapRuleApiResult'
    LoginProtectApiResult:
      type: object
      properties:
        enabled:
          type: boolean
          example: true
        specific_users_list:
          type: array
          items:
            $ref: '#/components/schemas/specific_users_list'
        send_lp_notifications:
          type: boolean
          example: true
        allow_all_users:
          type: boolean
          example: true
        authentication_methods:
          uniqueItems: true
          type: array
          items:
            type: object
            example: email
        urls:
          type: array
          items:
            type: object
            example: /userlist
        url_patterns:
          type: array
          items:
            type: object
            example: CONTAINS
    PerformanceConfigurationApiResult:
      type: object
      properties:
        advanced_caching_rules:
          type: array
          example:
            never_cache_resources:
            - pattern: SUFFIX
              url: /test.html
            always_cache_resources:
            - pattern: NOT_EQUALS
              url: /index.html
              ttl: '5'
              ttlUnits: SECONDS
            - pattern: EQUALS
              url: /home.html
              ttl: '6'
              ttlUnits: DAYS
          items:
            type: object
            additionalProperties:
              type: object
        acceleration_level:
          type: string
          example: advanced
        async_validation:
          type: boolean
          example: true
        minify_javascript:
          type: boolean
          example: true
        minify_css:
          type: boolean
          example: true
        minify_static_html:
          type: boolean
          example: true
        compress_jpeg:
          type: boolean
          example: true
        compress_jepg:
          type: boolean
          example: true
        progressive_image_rendering:
          type: boolean
          example: true
        aggressive_compression:
          type: boolean
          example: true
        compress_png:
          type: boolean
          example: true
        on_the_fly_compression:
          type: boolean
          example: true
        tcp_pre_pooling:
          type: boolean
          example: true
        comply_no_cache:
          type: boolean
          example: true
        comply_vary:
          type: boolean
          example: true
        use_shortest_caching:
          type: boolean
          example: true
        perfer_last_modified:
          type: boolean
          example: true
        prefer_last_modified:
          type: boolean
          example: true
        disable_client_side_caching:
          type: boolean
          example: true
        cache300x:
          type: boolean
          example: true
        cache_headers:
          uniqueItems: true
          type: array
          items:
            type: object
    ApiResult:
      type: object
      properties:
        res:
          type: integer
          description: res - contains specific error code
          format: int32
          example: 0
        res_message:
          type: string
          example: OK
        debug_info:
          type: array
          items:
            type: object
            additionalProperties:
              type: object
              example: {}
            example: {}
    DnsInstructionItem:
      type: object
      properties:
        dns_record_name:
          type: string
          example: loginprotectapi1610396334653.incaptest.info
        set_type_to:
          type: string
          example: CNAME
          enum:
          - CNAME
          - A
          - AAAA
          - MX
          - NS
          - TXT
          - Unkown
          - CAA
        set_data_to:
          type: array
          items:
            type: object
            example: 67eufzur3g.dev.impervadns.net
    specific_users_list:
      type: object
      properties:
        email:
          type: string
          description: email
          example: John@example.com
        name:
          type: string
          description: name
          example: John Doe
        status:
          type: string
          description: status
          example: INVITATION_SENT
    SiteConfigurationWarning:
      type: object
      properties:
        type:
          type: string
          example: CNAME
          enum:
          - CNAME
          - A
          - AAAA
          - MX
          - NS
          - TXT
          - Unkown
          - CAA
        set_data_to:
          type: array
          items:
            type: object
            example: 67eufzur3g.dev.impervadns.net
    LoginProtectUsersApiResults:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/LpExtendedUser'
    customAreasExceptions:
      type: object
      properties:
        pattern:
          type: string
          example: CONTAINS
          enum:
          - EQUALS
          - NOT_EQUALS
          - NOT_CONTAINS
          - PREFIX
          - SUFFIX
          - NOT_PREFIX
          - NOT_SUFFIX
          - CONTAINS
        url:
          type: string
          example: /userlist
    SiteDualFactorSettings:
      type: object
      properties:
        specificUsers:
          type: array
          items:
            type: string
            example: lpuser1_api1610396342408@incaptest.info
        enabled:
          type: boolean
          example: false
        customAreas:
          type: array
          items:
            $ref: '#/components/schemas/customAreas'
        customAreasExceptions:
          type: array
          items:
            $ref: '#/components/schemas/customAreasExceptions'
        allowAllUsers:
          type: boolean
          example: true
        shouldSuggestApplicatons:
          type: boolean
          example: true
        allowedMedia:
          uniqueItems: true
          type: array
          items:
            type: string
            example: sms
            enum:
            - ga
            - sms
            - email
        shouldSendLoginNotifications:
          type: boolean
          example: true
        application:
          type: boolean
          writeOnly: true
        version:
          type: integer
          format: int32
    IncapRuleApiResult:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 123
        name:
          type: string
          example: Block Click Worms
        action:
          type: string
          example: api.rule_action_type.rule_action_block
        rule:
          type: string
          example: ClientIP == 1.2.3.4
        creation_date:
          type: integer
          format: int64
        updated_by:
          type: string
          example: John
        updated_at:
          type: integer
          format: int64
          example: 1611228121241
        comment:
          type: string
          example: rule comment
    customAreas:
      type: object
      properties:
        pattern:
          type: string
          example: CONTAINS
          enum:
          - EQUALS
          - NOT_EQUALS
          - NOT_CONTAINS
          - PREFIX
          - SUFFIX
          - NOT_PREFIX
          - NOT_SUFFIX
          - CONTAINS
        url:
          type: string
          example: /userlist
    LpExtendedUser:
      type: object
      properties:
        email:
          type: string
          description: email
          example: John@example.com
        name:
          type: string
          description: name
          example: John Doe
        status:
          type: string
          description: status
          example: INVITATION_SENT
        phone:
          type: string
          description: phone
          example: 1-8662507658
        creation_date:
          type: string
          description: creation_date
          format: date-time
  securitySchemes:
    api_id:
      type: apiKey
      name: x-API-Id
      in: header
    api_key:
      type: apiKey
      name: x-API-Key
      in: header
externalDocs:
  description: Cloud Application Security API Reference
  url: https://docs.imperva.com/bundle/cloud-application-security/page/api/api.htm