Blowfish Scan domain API

Endpoints related to scanning dApp domains

OpenAPI Specification

blowfish-scan-domain-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API reference Download blocklist Scan domain API
  version: '2022-06-01'
  description: The Blowfish API reference specification
  contact:
    name: Blowfish API Support
    email: contact@blowfish.xyz
    url: https://blowfish.xyz
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
servers:
- url: https://free.api.blowfish.xyz
  description: API server for clients on the free plan
- url: https://api.blowfish.xyz
  description: API server for all other clients (e.g., Enterprise)
security:
- ApiKeyAuth: []
tags:
- name: Scan domain
  description: Endpoints related to scanning dApp domains
paths:
  /v0/domains:
    post:
      tags:
      - Scan domain
      summary: Domain
      operationId: scan-domain
      description: 'This endpoint allows customers to analyze dApp domains to determine if they are safe for users to interact with

        '
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-Api-Key
        in: header
        description: API Key
        required: true
        schema:
          $ref: '#/components/schemas/ApiKeyHeader'
      - name: X-Api-Version
        in: header
        description: Which version of the API to use
        schema:
          $ref: '#/components/schemas/ApiVersionHeader'
      - name: Content-Type
        in: header
        description: The expected return content type
        schema:
          $ref: '#/components/schemas/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: Object with domains property of type array
              properties:
                domains:
                  type: array
                  items:
                    type: string
                    description: Domains to check. Be sure to submit fully-qualified urls (with protocol prefix -- e.g., http)
                    example: https://iaunchmynft.io
            examples:
              basic:
                summary: Several suspicious domains
                value:
                  domains:
                  - https://magicedennss.it
                  - https://1nich.com
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    domain:
                      type: string
                      description: A sanitized, registerable representation of the URL submitted. By registerable, we mean either the domain registerable with a domain registrar (e.g., example.com) or a sub-domain registerable on a hosting providers domain (e.g., my-project.vercel.app).
                      example: dustprotocol.dev
                    status:
                      type: string
                      description: "The status of our domain analysis. Since our analysis can take some time, rather than block the API request until we've finished, we schedule the evaluation and return a response immediately. \n\nPROCESSING -> The analysis is under way\nUNPROCESSABLE -> We were unable to analyze the domain. This usually means that the website was unreachable or did not include valid HTML\nPROCESSED -> Our analysis completed successfully\n"
                      enum:
                      - PROCESSED
                      - PROCESSING
                      - UNPROCESSABLE
                      example: PROCESSED
                    riskScore:
                      type: number
                      description: A risk score from 0.0 to 1.0. The higher the score, the higher our certainty that this domain is hosting a crypto-native scam.
                      format: float
                      example: 1.0
                    labels:
                      type: array
                      description: 'Additional metadata about the domain and our evaluation. Possible labels include


                        Blockchain -> Which blockchain this domain attempts to interact with

                        Warning -> If we''ve detected scam-like behavior, a warning label describing what was found will be included. If we know which blockchain the scam dApp is built for, this information is also included. We reserve the right to add new warnings at any time so handle new additions gracefully.

                        '
                      items:
                        type: string
                        enum:
                        - blockchain=solana
                        - blockchain=ethereum
                        - blockchain=polygon
                        - warning[all]=BLOCKLISTED_DOMAIN_CROSS_ORIGIN
                        - warning[all]=OBFUSCATED_CODE
                        - warning[all]=DEVTOOLS_DISABLED
                        - warning[all]=WHITELISTED_DOMAIN_CROSS_ORIGIN
                        - warning[all]=TRUSTED_BLOCKLIST_DOMAIN
                        - warning[all]=NON_ASCII_URL
                        - warning[evm]=BLOCKLISTED_DOMAIN_CROSS_ORIGIN
                        - warning[evm]=OBFUSCATED_CODE
                        - warning[evm]=DEVTOOLS_DISABLED
                        - warning[evm]=WHITELISTED_DOMAIN_CROSS_ORIGIN
                        - warning[evm]=TRUSTED_BLOCKLIST_DOMAIN
                        - warning[solana]=NON_ASCII_URL
                        - warning[solana]=BLOCKLISTED_DOMAIN_CROSS_ORIGIN
                        - warning[solana]=OBFUSCATED_CODE
                        - warning[solana]=DEVTOOLS_DISABLED
                        - warning[solana]=WHITELISTED_DOMAIN_CROSS_ORIGIN
                        - warning[solana]=TRUSTED_BLOCKLIST_DOMAIN
                        - source=blowfish_blocklist
                        - source=blowfish_whitelist
                        - source=metamask_blocklist
                        - source=metamask_whitelist
                        - source=phishfort_blocklist
                        - source=scamsniffer_blocklist
                        - source=phantom_blocklist
                        - source=solflare_blocklist
                        - source=defi_llama_whitelist
                        - source=brand_whitelist
                        example: blockchain=solana
              examples:
                simple:
                  summary: Response for a query specifying two domains
                  value:
                  - domain: magicedennss.it
                    status: PROCESSED
                    riskScore: 1.0
                    labels:
                    - source=blowfish_blocklist
                  - domain: 1nich.com
                    status: PROCESSED
                    riskScore: 0.5
                    labels:
                    - source=metamask_blocklist
                    - source=phishfort_blocklist
                    - warning[all]=BLOCKLISTED_DOMAIN_CROSS_ORIGIN
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
components:
  schemas:
    InternalServerError:
      type: object
      properties:
        error:
          type: string
          enum:
          - Internal Server Error
          example: Internal Server Error
    ApiKeyHeader:
      description: API key
      type: string
      default: 4daa1e3b-87e6-40b2-8883-758feb6a8e46
      example: e79e18b4-8ffa-4fab-9e2e-f24057644f93
    BadRequest:
      type: object
      properties:
        error:
          type: string
          description: The error that caused the 400
          example: No transactions to simulate
    Unauthorized:
      type: object
      properties:
        error:
          type: string
          description: The error that caused the 401
          example: 'Unauthorized: invalid X-API-KEY header value'
    ApiVersionHeader:
      type: string
      description: API version like 2022-06-01
      default: '2022-06-01'
      example: '2022-06-01'
    ContentType:
      description: Expected response content type
      type: string
      default: application/json
      example: application/json
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key