openapi: 3.0.0
servers:
  - url: https://api.enzoic.com/v1
info:
  description: This is the public developer API for Enzoic
  version: "1.2.0"
  title: Enzoic API
  contact:
    email: support@enzoic.com
  license:
    name: Commercial
    url: 'https://www.enzoic.com/terms-of-service'
tags:
  - name: account
    description: APIs which query account status and usage
  - name: Breach Monitoring
    description: APIs which are used to set targets for breach monitoring
  - name: credentials
    description: APIs related to checking compromise status of a username/password combo
  - name: exposures
    description: APIs related to lookup information about exposures
  - name: identityMonitoring
    description: APIs which are used to set targets for identity monitoring
  - name: passwords
    description: APIs related to checking compromise status of a password
  - name: webhook
    description: APIs related to webhook configuration and testing
  - name: binMonitoring
    description: APIs related to monitoring and retrieving compromised payment card numbers for Bank Information Numbers
  - name: paymentCardExposures
    description: APIs related to retrieving compromised payment card numbers
paths:
  /account-status:
    get:
      security:
        - enzoic_auth: []
      tags:
        - account
      summary: Returns basic API usage stats for your account for the current billing period.
      operationId: accountStatus
      description: |
        The Account Status API allows you to query the current usage of your Enzoic account.  Returns basic API usage stats for your account for the current billing period. Note that current usage numbers may be up to 5 minutes behind.
      responses:
        '200':
          description: The response contains current usage statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountStatusResponse'
  /account-usage:
    get:
      security:
        - enzoic_auth: []
      tags:
        - account
      summary: Returns extended API usage stats for your account for the specified month and year, including efficacy reporting.
      operationId: accountUsage
      description: |
        Returns extended API usage stats for your account for the specified month and year, including efficacy reporting. Note that current usage numbers may be up to 5 minutes behind.
      parameters:
        - name: month
          in: query
          required: false
          description: The numeric month you wish to retrieve data for (1-12).  Defaults to the current month.
          example: 10
          schema:
            type: integer
            default: <current month>
        - name: year
          in: query
          required: false
          description: The full year you wish to retrieve data for (e.g. 2023)
          example: 2023
          schema:
            type: integer
            default: <current year>
      responses:
        '200':
          description: The response contains requested usage statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUsageResponse'
  /accounts:
    get:
      security:
        - enzoic_auth: []
      tags:
        - credentials
      summary: Retrieves account values needed to perform a credentials compromise check
      operationId: getAccounts
      description: |
        This is the first step to check if a username/password combination is compromised.  This call will return an account-specific salt value, as well as a list of required password hashes which must be calculated locally.
      parameters:
        - name: username
          in: query
          required: true
          description: The email or SHA-256 hash of the lowercased email you wish to check credentials for
          example: sample@email.tst
          schema:
            type: string
      responses:
        '200':
          description: The username was found in the Enzoic database and the response contains the user-specific salt value and an array of password hashes which must be calculated for a subsequent Credentials API call.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialsAccountsResponse'
        '404':
          description: The username was not found in the Enzoic database and has no compromised credentials associated with it. No further action is necessary.
  /breach-monitoring-for-users:
    post:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Add user breach alert subscriptions
      operationId: addBreachMonitoringForUsers
      description: Allows you to set up a new exposure alert subscription for one or more email addresses. For additional privacy and security, emails are submitted as SHA256 hashes.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserBreachMonitoringPostBody'
      responses:
        '201':
          description: The call was successful. Your webhook will now be called whenever one of the submitted email addresses is involved in a new Exposure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAddResponse'
    delete:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Remove user breach alert subscriptions
      operationId: deleteBreachMonitoringForUsers
      description: Allows you to delete Exposure alert subscriptions for one or more email addresses.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserBreachMonitoringDeleteBody'
      responses:
        '200':
          description: The call was successful. You will no longer receive alerts for the provided email addresses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserBreachMonitoringDeleteResponse'
    get:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Retrieve current user breach alert subscriptions
      operationId: getBreachMonitoringForUsers
      description: Returns a paginated list of all user-level alert subscriptions for your account.  Can be used to check if a specific user is monitored by using the usernameHash parameter.
      parameters:
        - name: includeExtendedInfo
          schema:
            type: boolean
          in: query
          required: false
          description: If this parameter is specified and true, the results will include the webhook information and custom data for each monitored user.
        - name: usernameHash
          schema:
            type: string
          in: query
          required: false
          description: This parameter is optional. If specified, the call will only check to see if this email address is monitored.  It consists of a SHA256 hash of the lowercased email address to check.  If this parameter is not provided, the call will instead return a list of all emails being monitored for your account.
        - name: usernameCustomData
          schema:
            type: string
          in: query
          required: false
          description: This parameter is optional. If specified, the call will return a list of all emails being monitored for your account that were originally added with this customData value.
        - name: pageSize
          schema:
            type: integer
          in: query
          required: false
          description: The number of results to return in a single call
        - name: pagingToken
          schema:
            type: string
          in: query
          required: false
          description: For each call to the API, if there are more pages of results available then a pagingToken will be returned.  Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserBreachMonitoringWithExtendedInfoGetResponse'
        '404':
          description: Returned when the usernameHash parameter is used to indicate that an alert subscription does not exist for the provided email hash.
  /breach-monitoring-for-domains:
    post:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Subscribe to Exposure alerts for a domain
      operationId: addBreachMonitoringForDomains
      description: |
        Allows you to set up a new Exposure alert subscription for one or more email domains. Note that you must be pre-approved and verified to subscribe for the domain(s) you are registering. Please [Contact Us](https://www.enzoic.com/contact-us) for assistance.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainBreachMonitoringPostBody'
      responses:
        '201':
          description: The call was successful. Your webhook will now be called whenever one of the submitted email addresses is involved in a new Exposure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAddResponse'
    delete:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Delete Exposure alert subscriptions for one or more domains.
      operationId: deleteBreachMonitoringForDomains
      description: Allows you to delete Exposure alert subscriptions for one or more email domains.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainBreachMonitoringDeleteBody'
      responses:
        '200':
          description: The call was successful. You will no longer receive alerts for the provided domains.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainBreachMonitoringDeleteResponse'
    get:
      security:
        - enzoic_auth: []
      tags:
        - Breach Monitoring
      summary: Retrieve Exposure alert subscriptions for domains
      operationId: getBreachMonitoringForDomains
      description: Returns a paginated list of all domain alert subscriptions for your account.  Can be used to check if a specific domain is monitored by using the domain parameter.
      parameters:
        - name: domain
          schema:
            type: string
          in: query
          required: false
          description: This parameter is optional. If specified, the call will only check to see if this domain is monitored.  If this parameter is not provided, the call will instead return a list of all domains being monitored for your account.
        - name: pageSize
          schema:
            type: integer
          in: query
          required: false
          description: The number of results to return in a single call
        - name: pagingToken
          schema:
            type: string
          in: query
          required: false
          description: For each call to the API, if there are more pages of results available then a pagingToken will be returned.  Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
        - name: includeWebhookInfo
          schema:
            type: boolean
          in: query
          required: false
          description: If this parameter is specified and true, the results will include the webhook information for each domain.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainBreachMonitoringWithExtendedInfoGetResponse'
        '404':
          description: Returned when the domain parameter is used to indicate that an alert subscription does not exist for the provided domain.
  /credentials:
    get:
      security:
        - enzoic_auth: []
      tags:
        - credentials
      summary: Retrieve all Credentials Hashes in the Enzoic database that match a list of partial Credentials Hashes
      operationId: getHashedCredentials
      description: |
        Returns a list of Credentials Hashes in the Enzoic database matching a provided list of partial Credentials Hashes
      parameters:
        - name: partialHashes
          in: query
          required: true
          description: A list of the first 10 hex characters of Argon2 Credential Hashes passed in
          example: "partialHashes=9d5e070553&partialHashes=12c3979438"
          schema:
            type: array
      responses:
        '200':
          description: One or more candidate credentials matches were found in Enzoic’s database of compromised credentials. The candidate hashes are returned in the response body. You should compare the full hash(es) to the list of returned candidates. If a match is found, the credentials are compromised.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashedCredentialsResponse'
        '404':
          description: The credentials were not found in Enzoic’s database and have not been compromised.
  /cleartext-credentials:
    get:
      security:
        - enzoic_auth: []
      tags:
        - credentials
      summary: Query all cleartext passwords for a given email address.
      operationId: getCleartextCredentials
      description: |
        Returns a list of passwords in the Enzoic database for a given email address.
      parameters:
        - name: username
          in: query
          required: true
          description: The email or SHA-256 hash of the lowercased email you wish to check credentials for
          example: test@enzoic.com
          schema:
            type: string
        - name: includeExposureDetails
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
      responses:
        '200':
          description: Passwords for the user were found in the Enzoic database and are included in the response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleartextCredentialsResponse'
        '404':
          description: Enzoic has no passwords for the requested user.
  /cleartext-credentials-by-domain:
    get:
      security:
        - enzoic_auth: []
      tags:
        - credentials
      summary: Query all cleartext passwords for a users in a given email domain.
      operationId: getCleartextCredentialsByDomain
      description: |
        Returns a paginated list of credentials in the Enzoic database for all users under a given email domain.  This variant of the call takes a domain (e.g. enzoic.com) and returns a list of emails and recovered passwords for any email address we've found credentials for in that domain.
      parameters:
        - name: domain
          in: query
          required: true
          description: The email domain to pull credentials for
          example: enzoic.com
          schema:
            type: string
        - name: pageSize
          description: The number of results to return in a single call. The default page size is 100 and the maximum is 500.
          in: query
          required: false
          example: 500
          schema:
            type: integer
            default: 100
        - name: pagingToken
          description: For each call to the API, if there are additional pages of results available then a pagingToken will be returned. Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
          in: query
          required: false
          example: 598e5b844eb6d82ea07c5783
          schema:
            type: string
#        - name: includeExposureDetails
#          in: query
#          required: false
#          default: 0
#          example: 1
#          schema:
#            type: integer
#          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
      responses:
        '200':
          description: The call was successful and all matching credentials are in the response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleartextCredentialsByDomainResponse'
  /cleartext-credentials-by-partial-hash:
    get:
      security:
        - enzoic_auth: []
      tags:
        - credentials
      summary: Query all cleartext passwords for a user by providing a partial hash of their email address.
      operationId: getCleartextCredentialsByPartialHash
      description: |
        Returns a list of passwords in the Enzoic database for a given email address.  This variant of the call takes a partial SHA-256 hash of the email being checked and returns passwords for all possible candidate matches.  Unless you need to pass only partial hashes for compliance purposes, we recommend using the exact match /cleartext-credentials variant for better performance.
      parameters:
        - name: partialUsernameHash
          in: query
          required: true
          description: The first 8 or more characters of the SHA-256 hash of the lowercased email you wish to check credentials for
          example: test@enzoic.com
          schema:
            type: string
        - name: includeExposureDetails
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
      responses:
        '200':
          description: The call was successful and any matching candidate users are in the response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleartextCredentialsByPartialHashResponse'
  /exposures-for-usernames:
    get:
      security:
        - enzoic_auth: []
      tags:
        - exposures
      summary: Lookup all exposures for an email address
      operationId: exposuresForUsernames
      description: Returns all credentials exposures that have been found for a given user.
      parameters:
        - name: usernames
          description: A list of up to 50 email addresses OR SHA256 hashes of the lowercased email addresses (recommended)
          in: query
          required: true
          example: "usernames=joe@corp.co&usernames=frank@corp.co"
          schema:
            type: array
        - name: includeExposureDetails
          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: The response contains an array of objects, one per username that was passed in. Each object will contain an array of the known Exposures for that user.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExposuresForUsernamesResponse'
  /exposures-for-domain:
    get:
      security:
        - enzoic_auth: []
      tags:
        - exposures
      summary: Lookup all exposures for a domain
      operationId: exposuresForDomain
      description: Returns all credentials exposures that have been found for a given domain.
      parameters:
        - name: domain
          description: The domain to return exposures for (e.g. “enzoic.com”)
          in: query
          required: true
          example: corp.co
          schema:
            type: string
        - name: includeExposureDetails
          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
        - name: pageSize
          description: The number of results to return in a single call. The default page size is 100 and the maximum is 500.
          in: query
          required: false
          example: 500
          schema:
            type: integer
            default: 100
        - name: pagingToken
          description: For each call to the API, if there are additional pages of results available then a pagingToken will be returned. Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
          in: query
          required: false
          example: 598e5b844eb6d82ea07c5783
          schema:
            type: string
      responses:
        '200':
          description: Exposures for the domain were found and the associated Exposures are in the response body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExposuresForDomainResponse'
        '404':
          description: The domain was not found in Enzoic’s database and has no Exposures associated with it.
  /exposures-for-domain-users:
    get:
      security:
        - enzoic_auth: []
      tags:
        - exposures
      summary: Lookup exposures for all email addresses in a domain
      operationId: exposuresForDomainUsers
      description: Returns all credentials exposures that have been found for users in a given email domain.
      parameters:
        - name: accountDomain
          description: The domain to return exposures for (e.g. “enzoic.com”)
          in: query
          required: true
          example: corp.co
          schema:
            type: string
        - name: pageSize
          description: The number of results to return in a single call. The default page size is 1000 and the maximum is 1000.
          in: query
          required: false
          example: 500
          schema:
            type: integer
            default: 1000
        - name: pagingToken
          description: For each call to the API, if there are additional pages of results available then a pagingToken will be returned. Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
          in: query
          required: false
          example: 598e5b844eb6d82ea07c5783
          schema:
            type: string
      responses:
        '200':
          description: Exposed users for the domain were found and the requested page is in the response body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExposuresForDomainUsersResponse'
        '404':
          description: The domain was not found in Enzoic’s database and has no exposed users associated with it.
  /exposures-by-date:
    get:
      security:
        - enzoic_auth: []
      tags:
        - exposures
      summary: Pull a list of all recent exposures indexed by Enzoic
      operationId: exposuresByDate
      description: Returns all credentials exposures that have been found by Enzoic since a specified date.
      parameters:
        - name: startDate
          description: Specifies a start date/time up to a maximum of 30 days in the past in ISO8601 format (e.g. 2023-06-01T00:00:00Z). All exposures catalogued since that date will be returned.
          in: query
          required: true
          example: 2023-06-01
          schema:
            type: integer
        - name: includeExposureDetails
          description: If this parameter is specified and non-zero, the results will include the exposure details inline, rather than just the IDs. In this case the exposures array in the response will contain an array of ExposureDetails objects
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
        - name: includeNonCredentialsExposures
          description: If this parameter is specified and non-zero, the results will include exposures Enzoic has indexed that did not include user credentials.  These typically are exposures which contain PII (personally identifiable information), but no usernames and passwords.
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
        - name: pageSize
          description: The number of results to return in a single call. The default page size is 100 and the maximum is 200.
          in: query
          required: false
          example: 200
          schema:
            type: integer
            default: 100
        - name: pagingToken
          description: For each call to the API, if there are additional pages of results available then a pagingToken will be returned. Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
          in: query
          required: false
          example: 598e5b844eb6d82ea07c5783
          schema:
            type: string
      responses:
        '200':
          description: A list of Exposures are in the response body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExposuresByDateResponse'
  /exposure-details:
    get:
      security:
        - enzoic_auth: []
      tags:
        - exposures
      summary: Lookup the details for a specific exposure
      operationId: exposureDetails
      description: Returns the detailed information for a credentials exposure. The responses to this call can and should be cached to limit the number of calls made. The exposure details are not typically expected to change over time, so they can be retained for relatively long periods of time, e.g. for up to 30 days.
      parameters:
        - name: id
          description: The ID of the Exposure
          in: query
          required: true
          example: 57dc11964d6db21300991b78
          schema:
            type: string
      responses:
        '200':
          description: The response body contains the details of the Exposure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExposureDetailsResponse'
        '404':
          description: The requested Exposure was not found
  /passwords:
    post:
      security:
        - enzoic_auth: []
      tags:
        - passwords
      summary: Check passwords to see if they are compromised
      operationId: passwords
      description: Allows you to check whether a given password is known to be compromised, without needing to pass the exact password hash in. Rather than passing exact hashes of the password to the API, it is only necessary to supply the first 10 hex characters of each hash. A list of candidate hashes will then be returned and can be compared locally with the exact hash to determine if there was a match. This is the recommended approach for new implementations using the Passwords API.
      responses:
        '200':
          description: One or more possible candidate matches were found. The response body contains the candidates. If any of the candidate hashes match the exact hash, this is a compromised password, i.e. a “hacked” password.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordsResponse'
        '404':
          description: No candidate matches were found in the database of compromised passwords – indicates password is not known to be compromised.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordsPostBody'
  /webhook-test:
    get:
      security:
        - enzoic_auth: []
      tags:
        - webhook
      summary: Sends a test notification to your account's registered webhook
      operationId: webhookTest
      description: |
        This call will cause a test POST to be sent to the webhook URL registered to your account. This allows you to verify that your webhook URL is set up properly and able to receive Breach, Identity, and/or BIN Monitoring Alerts from Enzoic.
      parameters:
        - name: type
          in: query
          required: false
          schema:
            type: string
            default: breachAlert
          description: |
            This controls the type of webhook body to send to your webhook.  Possible values are:
            - breachAlert - a simulated Breach Monitoring alert payload is sent
            - piiAlert - a simulated Identity Monitoring alert payload will be sent.
            - binAlert - a simulated BIN Monitoring alert payload will be sent.

            If type is not specified, the default is to send a breachAlert payload.
        - name: webhookID
          in: query
          required: false
          schema:
              type: string
          description: |
              This parameter is optional. If specified, the call will send the test notification to the webhook with this ID.  If this parameter is not provided, the call will instead send the test notification to the default webhook registered for your account.
      responses:
        '200':
          description: The call was successful. Your webhook should receive a test POST as a result.
        '404':
          description: No webhook URL is registered for your account. Contact support to have a URL added.
  /identity-monitoring:
    post:
      security:
        - enzoic_auth: []
      tags:
        - identityMonitoring
      summary: Add identities to monitoring
      operationId: addIdentityMonitoring
      description: Allows you to set up a new alert subscription for one or more individual identities.  This can include many aspects of an individual's PII, such as name, physical address, phone numbers, government IDs, email addresses, credit cards, etc.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityMonitoringPostBody'
      responses:
        '201':
          description: The call was successful. Your webhook will now be called whenever one of the submitted identities is involved in a new breach.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAddResponse'
    put:
      security:
        - enzoic_auth: []
      tags:
        - identityMonitoring
      summary: Update monitored identities with new information
      operationId: updateIdentityMonitoring
      description: Allows you to update an existing monitored identity with new or updated information.  For example, you may wish to add additional emails to be monitored, or remove a credit card from monitoring.  It is not necessary to resubmit the entire identity; fields which are not present in the PUT body will not get updated.  If an array value (such as emails) is specified, it will replace the entire contents of the array.  So if the existing monitored identity's emails array contained ["email1@enzoic.com", "email2@enzoic.com"] and the emails array value in the PUT contained ["newemail@enzoic.com"], the new stored array on the monitored identity would be ["newemail@enzoic.com"].
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityMonitoringPutBody'
      responses:
        '200':
          description: The call was successful. The monitored identities have been updated with the new information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericUpdateResponse'
    delete:
      security:
        - enzoic_auth: []
      tags:
        - identityMonitoring
      summary: Delete monitored identities
      operationId: deleteIdentityMonitoring
      description: Allows you to delete alert subscriptions for one or more individual identities.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityMonitoringDeleteBody'
      responses:
        '200':
          description: The call was successful. The provided identities will no longer be monitored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityMonitoringDeleteResponse'
    get:
      security:
        - enzoic_auth: []
      tags:
        - identityMonitoring
      summary: Retrieve list of currently monitored identities
      operationId: getIdentityMonitoring
      description: Returns a paginated list of all monitored identities for your account.  Can be used to check if a specific identity is monitored by using the tag or id parameters.
      parameters:
        - name: tag
          schema:
            type: string
            example: 56d6d566-82e6-426c-ae47-528a0fb64808
          in: query
          required: false
          description: If specified, the call will only return the monitored identity matching this tag value.
        - name: id
          schema:
            type: string
            example: 641c73ef1d909615a63b4d75
          in: query
          required: false
          description: If specified, the call will only return the monitored identity matching this Enzoic ID.
        - name: pageSize
          schema:
            type: integer
            default: 100
          in: query
          required: false
          description: The number of results to return in a single call.  The maximum is 100.
        - name: pagingToken
          schema:
            type: string
          in: query
          required: false
          description: For each call to the API, if there are more pages of results available then a pagingToken will be returned.  Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityMonitoringGetResponse'
  /identity-exposures:
    post:
      security:
        - enzoic_auth: []
      tags:
        - identityMonitoring
      summary: Pull historical exposures for a specific identity
      operationId: getIdentityExposures
      description: Allows you to pull historical exposure details for an individual identity.  The identity can include elements such as name, physical address, phone numbers, government IDs, email addresses, credit cards, etc.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityExposuresPostBody'
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityExposuresPostResponse'
  /bin-exposures:
    get:
      security:
        - enzoic_auth: []
      tags:
        - binMonitoring
      summary: Retrieve list of recovered payment cards for your monitored BINs
      operationId: getBinExposures
      description: Returns a list of exposed payment card numbers for your account's monitored BINs within the specified date range.  A maximum of 30 days of data can be returned in a single call.
      parameters:
        - name: startDate
          schema:
            type: string
          in: query
          required: false
          example: 2023-06-01
          description: Specifies a start date/time in ISO8601 format (e.g. 2023-06-01T00:00:00Z) to return results for.  A maximum of 30 days of data can be returned in a single call.
        - name: endDate
          schema:
            type: string
          in: query
          required: false
          example: 2023-06-30
          description: Specifies an end date/time in ISO8601 format (e.g. 2023-06-01T00:00:00Z) to return results for.  A maximum of 30 days of data can be returned in a single call.
        - name: includeRawMatchSource
          in: query
          required: false
          example: 1
          schema:
            type: integer
            default: 0
          description: |
            If this parameter is specified and non-zero, the results will include the raw match source inline, along 
            with the exposure IDs, showing a snippet of text from the breach source where the card number was found.  
            NOTE: Including this parameter for large result sets can be very slow and may timeout.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinExposuresGetResponse'
  /bin-monitoring:
    post:
      security:
        - enzoic_auth: []
      tags:
        - binMonitoring
      summary: Add Bank Identification Numbers to BIN monitoring
      operationId: addBinMonitoring
      description: Allows you to set up a new alert subscription for one or more Bank Identification Numbers (BINs).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BinMonitoringPostBody'
      responses:
        '201':
          description: The call was successful. Your webhook will now be called whenever a payment card belonging to one of the submitted BINs is involved in a new breach.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAddResponse'
    delete:
      security:
        - enzoic_auth: []
      tags:
        - binMonitoring
      summary: Delete monitored BINs
      operationId: deleteBinMonitoring
      description: Allows you to delete alert subscriptions for one or more Bank Identification Numbers (BINs).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BinMonitoringDeleteBody'
      responses:
        '200':
          description: The call was successful. The provided BINs will no longer be monitored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinMonitoringDeleteResponse'
    get:
      security:
        - enzoic_auth: []
      tags:
        - binMonitoring
      summary: Retrieve list of currently monitored Bank Identification Numbers (BINs)
      operationId: getBinMonitoring
      description: Returns a paginated list of all monitored BINs for your account.
      parameters:
        - name: includeWebhookInfo
          schema:
            type: boolean
          in: query
          required: false
          description: If this parameter is specified and true, the results will include the webhook information for each BIN.
        - name: pageSize
          schema:
            type: integer
            default: 100
          in: query
          required: false
          description: The number of results to return in a single call.  The maximum is 100.
        - name: pagingToken
          schema:
            type: string
          in: query
          required: false
          description: For each call to the API, if there are more pages of results available then a pagingToken will be returned.  Pass the pagingToken in via this parameter to retrieve the subsequent page of results. Should be left off for the initial call to the API.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinMonitoringWithExtendedInfoGetResponse'
  /webhooks:
    post:
      security:
        - enzoic_auth: []
      tags:
        - webhook
      summary: Register a new webhook to receive notifications for monitoring alerts
      operationId: addWebhook
      description: |
        Allows you to register a new webhook to receive notifications for monitoring alerts.  This can include Breach, Identity, and BIN Monitoring alerts.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhooksPostBody'
      responses:
        '201':
          description: The call was successful and the webhook is now available for use on your account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksPostResponse'
        '400':
          description: Required parameters were missing or the webhook URL is not a valid URL.
        '401':
          description: You attempted to register a webhook on a domain you have not verified ownership of.  The webhook was not created.
        '409':
          description: You attempted to register a webhook with the same URL as an existing webhook.  The existing webhook was not modified.
    put:
      security:
        - enzoic_auth: [ ]
      tags:
        - webhook
      summary: Modify the URL of an existing webhook
      operationId: updateWebhook
      description: |
        Allows you to modify the URL of an existing webhook.  If you specify default as true, the webhook will be set as the default webhook for your account, replacing the current default.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhooksPutBody'
      responses:
        '204':
          description: The call was successful. The webhook was updated.
        '400':
          description: Required parameters were missing or the webhook URL is not a valid URL.
        '401':
          description: You attempted to register a webhook on a domain you have not verified ownership of.  The webhook was not created.
        '409':
          description: You attempted to register a webhook with the same URL as an existing webhook.  The existing webhook was not modified.
    delete:
      security:
        - enzoic_auth: []
      tags:
        - webhook
      summary: Delete a webhook
      operationId: deleteWebhook
      description: |
        Allows you to delete a webhook from your account.  This will stop all notifications to this webhook.  
        If you delete the default webhook from your account and there are other webhooks registered, the default 
        webhook will be reset to the first webhook in the list.  Any monitored items which were using this webhook as 
        their notification target will be updated to use the new default webhook.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhooksDeleteBody'
      responses:
        '204':
          description: The call was successful. The webhook was deleted.
        '404':
          description: The specified webhook was not found.
    get:
      security:
        - enzoic_auth: []
      tags:
        - webhook
      summary: Retrieve list of webhooks registered for the account
      operationId: getWebhooks
      description: Returns a list of all the webhooks registered for your account.
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksGetResponse'
  /payment-card-exposures:
    post:
      security:
        - enzoic_auth: []
      tags:
        - paymentCardExposures
      summary: Retrieve a list of recovered payment card numbers
      operationId: getBinExposures
      description: |
        Returns a list of compromised payment card numbers matching a partial card number provided to the call. 
        The partialCardNumber field in the body should contain the first 8 digits of the card number being checked.  
        
        This call uses a k-anonymity algorithm to ensure that the complete card number being checked is not sent to 
        the server in the clear.  All compromised payment card numbers matching having a match on the first 8 digits 
        will be returned in the cardsFound response, allowing the caller to then locally compare to determine if 
        the full payment card number being checked is in the Enzoic database of compromised card numbers.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentCardExposuresPostBody'
      responses:
        '200':
          description: The response body contains the requested results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentCardExposuresPostResponse'
components:
  schemas:
    AccountStatusResponse:
      type: object
      properties:
        monthlyAPICallLimit:
          type: integer
          example: 20000
          description: How many calls your account is allowed to make to the Enzoic API every month
        currentAPICallUsage:
          type: integer
          example: 1022
          description: How many calls have been made in the current billing period
        exposureAlertsServiceMonitoredAccountsLimit:
          type: integer
          example: 10
          description: How many email accounts your account is allowed to monitor for new exposures
        exposureAlertsServiceCurrentMonitoredAccounts:
          type: integer
          example: 8
          description: How many email accounts your account is currently monitoring for new exposures
        exposureAlertsServiceMonitoredDomainsLimit:
          type: integer
          example: 1
          description: How many email domains your account is allowed to monitor for new exposures
        exposureAlertsServiceCurrentMonitoredDomains:
          type: integer
          example: 1
          description: How many email domains your account is currently monitoring for new exposures
    AccountUsageResponse:
      type: object
      properties:
        apiCallUsage:
          type: integer
          example: 443644
          description: The total number of API calls made on your account
        passwordAPICalls:
          type: integer
          example: 438364
          description: The number of Passwords API calls made during the specified billing period
        passwordAPIMatches:
          type: integer
          example: 344697
          description: The number of matches returned by the Passwords API during the specified billing period. This can be used as a rough estimate for what percentage of the time a password was rejected.
        credentialsAPICalls:
          type: integer
          example: 120831
          description: The number of Credentials API checks made during the specified billing period
        credentialsAPIMatches:
          type: integer
          example: 10219
          description: The number of matches returned by the Credentials API during the specified billing period. This can be used as a rough estimate for what percentage of the time a set of credentials was found to be compromised.
        exposuresAPICalls:
          type: integer
          example: 23099
          description: The number of Exposures API calls made during the specified billing period
        exposuresAPIMatches:
          type: integer
          example: 17833
          description: The number of matches returned by the Exposures API during the specified billing period.
    UserBreachMonitoringPostBody:
      type: object
      required: [usernameHashes]
      properties:
        usernameHashes:
          type: array
          description: An array of SHA256 hashes of the lowercased email addresses you wish to set up breach monitoring for.  Maximum number of entries in a single post is 15,000.
          items:
            example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            type: string
        customData:
          type: string
          description: An optional unique identifier you would like assigned to the monitored usernames for later retrieval and reference.  It will be passed in via alert notifications to your webhook when one of these usernames is found in a breach.
          example: corporate_users
        webhookID:
          type: string
          example: 66766957431c9acc8cea2d6d
          description: The ID of the webhook to send alerts to when new Exposures are found related to this user.  If not specified, the default webhook for your account will be used.
    UserBreachMonitoringDeleteBody:
      type: object
      properties:
        usernameHashes:
          type: array
          description: An array of SHA256 hashes of the lowercased email addresses you wish to remove breach monitoring for.  Maximum number of entries in a single post is 15,000.
          items:
            example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            type: string
        customData:
          type: string
          description: Can be used in lieu of the array of usernames if you wish to delete all monitored usernames with this customData value.  This parameter is ignored if you also include the usernameHashes parameter - use one or the other, but not both.
    UserBreachMonitoringDeleteResponse:
      type: object
      properties:
        deleted:
          type: integer
          example: 1
          description: The number of alert subscriptions deleted.
        notFound:
          type: integer
          example: 0
          description: The number of provided email hashes which were not found in the alert subscriptions table.
    UserBreachMonitoringGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of user alert subscription records available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        usernameHashes:
          type: array
          items:
            type: string
            example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            description: An array of SHA256 lowercased email address hashes which are currently subscribed for alerts.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    UserBreachMonitoringWithExtendedInfoGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of user alert subscription records available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        usernameHashes:
          type: array
          items:
            type: object
            properties:
              usernameHash:
                type: string
                example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                description: The SHA256 hash of the username.
              customData:
                type: string
                example: corporate_users
                description: The customData value assigned to this username when it was set up for monitoring.
              webhookID:
                type: string
                example: 66766957431c9acc8cea2d6d
                description: The ID of the webhook to send alerts to when new Exposures are found related to this user.
              webhookURL:
                type: string
                example: https://mywebhook.com
                description: The URL of the webhook to send alerts to when new Exposures are found related to this user.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    DomainBreachMonitoringPostBody:
      type: object
      properties:
        domains:
          type: array
          items:
            type: string
            example: sample.tst
            description: An array containing the domains you wish to set up Exposure alerts for.
        webhookID:
          type: string
          example: 66766957431c9acc8cea2d6d
          description: The ID of the webhook to send alerts to when new Exposures are found for this domain.  If not specified, the default webhook for your account will be used.
    DomainBreachMonitoringDeleteBody:
      type: object
      properties:
        domain:
          type: array
          items:
            type: string
            example: sample.tst
            description: An array containing the domains you wish to remove Exposure alerts for.
    DomainBreachMonitoringDeleteResponse:
      type: object
      properties:
        deleted:
          type: integer
          example: 1
          description: The number of alert subscriptions deleted.
        notFound:
          type: integer
          example: 0
          description: The number of provided domains which were not found in the alert subscriptions table.
    DomainBreachMonitoringGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of domain alert subscription records available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        domains:
          type: array
          items:
            type: string
            example: sample.tst
            description: An array of domains which are currently subscribed for alerts.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    DomainBreachMonitoringWithExtendedInfoGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of domain alert subscription records available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        domains:
          type: array
          items:
            type: object
            properties:
              domain:
                type: string
                example: sample.tst
                description: The domain being monitored for exposures.
              webhookID:
                type: string
                example: 66766957431c9acc8cea2d6d
                description: The ID of the webhook to send alerts to when new Exposures are found for this domain.
              webhookURL:
                type: string
                example: https://mywebhook.com
                description: The URL of the webhook to send alerts to when new Exposures are found for this domain.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    PasswordsPostBody:
      type: object
      required:
        - partialSHA256
      properties:
        partialSHA256:
          type: string
          example: 9f86d08188
          description: The first 10 hex characters of the SHA-256 hash of the password to be checked. The password should be in UTF-8 encoding prior to hashing.
    ExposuresForUsernamesResponse:
      type: object
      properties:
        username:
          type: string
          example: frank@corp.co
          description: The username for this entry.  Only present if unhashed usernames were provided to the call.
        usernameHash:
          type: string
          example: 51885d3cc1b6f144455e9d25661ca34b9f945b5540b61cb41cf56381950bf50b
          description: The SHA256 hash of the username.  Only present if hashed usernames were provided to the call.
        count:
          type: integer
          example: 1
          description: The number of items in the exposures array.
        exposures:
          type: array
          description: Either an array of Exposure IDs (which can be used to look up additional details with the /exposure-details call) or if includeExposureDetails was specified in the query string, an array of ExposureDetails objects.
          items:
            $ref: '#/components/schemas/ExposureDetailsResponse'
    ExposuresForDomainResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of exposures for the requested domain.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        pagingToken:
          type: string
          example: 598e5b844eb6d82ea07c5783
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
        exposures:
          type: array
          items:
            $ref: '#/components/schemas/ExposureDetailsResponse'
          description: Either an array of Exposure IDs (which can be used to look up additional details with the /exposure-details call) or if includeExposureDetails was specified in the query string, an array of ExposureDetails objects.
    ExposuresByDateResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of exposures in the requested date range.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        pagingToken:
          type: string
          example: 598e5b844eb6d82ea07c5783
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
        exposures:
          type: array
          items:
            $ref: '#/components/schemas/ExposureDetailsResponse'
          description: Either an array of Exposure IDs (which can be used to look up additional details with the /exposure-details call) or if includeExposureDetails was specified in the query string, an array of ExposureDetails objects.
    ExposuresForDomainUsersResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of users exposed for the requested domain.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        pagingToken:
          type: string
          example: 598e5b844eb6d82ea07c5783
          description: Present when there are additional pages of results available. Pass this token in using the pagingToken param on a subsequent call to fetch the next page of results.
        users:
          type: array
          description: An array of objects containing exposure details, one per user found under this domain.
          items:
            type: object
            properties:
              username:
                type: string
                example: sample@email.tst
                description: The email address of the user who was exposed
              exposures:
                type: array
                description: An array of Exposure IDs. Can be used with the Exposure Details call to retrieve additional info.
                items:
                  type: string
                  example: 57dc11964d6db21300991b78
    ExposureDetailsResponse:
      type: object
      properties:
        id:
          type: string
          example: 57dc11964d6db21300991b78
          description: The unique ID of the Exposure.
        title:
          type: string
          example: funsurveys.net
          description: Title of the exposure – for breaches, the domain of the origin site. For exposures where it’s not possible to determine the origin site, we provide the title as Unknown source and include the date it was found and added to our database in parentheses.
        entries:
          type: integer
          example: 5123
          description: The number of credentials found in the exposure (may be 0 for non-credentials exposures)
        date:
          type: string
          format: date
          example: 2015-05-01T00:00:00.000Z
          description: |
            The date the exposure occurred, as much as is known.  The value is as follows:
            - null if the date is not known
            - Month and day set to December 31st, if only the year is known (e.g. “2015-12-31” if Exposure date was sometime in 2015)
            - Day set to the first of the month if only the month is known (e.g. “2015-06-01” if Exposure date was sometime in June 2015)
            - Otherwise, exact date if exact date is known, including time
        category:
          type: string
          example: Manufacturing
          description: |
            A category for the breached organization, if the exposure was a data breach.  These categories correspond to the top level of the North American Industry Classification System (NAICS).  Some types of data-harvesting malware (i.e. stealers, phishing, etc.) will show up under the Malware category.  Large aggregated dumps of user credentials from various sources (called Combo Lists) will show up under the category Combolists.

            Possible values (NAICS value):
            - Unspecified
            - Agriculture, Forestry, Fishing and Hunting (11)
            - Mining, Quarrying, and Oil and Gas Extraction (21)
            - Utilities (22)
            - Construction (23)
            - Manufacturing (31-33)
            - Wholesale Trade (42)
            - Retail Trade (44-45)
            - Transportation and Warehousing (48-49)
            - Information (51)
            - Finance and Insurance (52)
            - Real Estate and Rental and Leasing (53)
            - Professional, Scientific, and Technical Services (54)
            - Management of Companies and Enterprises (55)
            - Administrative and Support and Waste Management and Remediation Services (56)
            - Educational Services (61)
            - Health Care and Social Assistance (62)
            - Arts, Entertainment, and Recreation (71)
            - Accommodation and Food Services (72)
            - Other Services (81)
            - Public Administration (92)
            - Malware (N/A)
            - Combolist (N/A)
        source:
          type: string
          example: Cybercrime Forums
          description: |
            Where the data was collected at.  Possible values are:
            - Unspecified
            - Cybercrime Forums
            - File Sharing Sites
            - Pastes
            - Messaging Services
            - Private Sources
            - Honeypots
            - Dark Web Markets
        passwordType:
          type: string
          example: Cleartext
          description: The format of the passwords in the Exposure, e.g. “Cleartext”, “MD5”, “BCrypt”, etc.
        exposedData:
          type: array
          example: ["Emails", "Passwords"]
          items:
            type: string
          description: The types of user data which were present in the Exposure, e.g. “Emails”, “Passwords”, “Physical Addresses”, “Phone Numbers”, etc.
        dateAdded:
          type: string
          format: date
          example: 2016-09-16T15:36:54.000Z
          description: The date the Exposure was found and added to the Enzoic database.
        sourceURLs:
          type: array
          items:
            type: string
          example: ["https://www.someplace.com"]
          description: An array of URLs the data was found at. Only present for some types of Exposures, like when the source was a paste site.
        domainsAffected:
          type: integer
          example: 683
          description: The number of unique email address domains in this Exposure. So, for instance, if the Exposure only contained “gmail.com” and “yahoo.com” email addresses, this number would be 2.
        sourceFileCount:
          type: integer
          example: 1
          description: The number of different files there were found in this Exposure.
    PasswordsResponse:
      type: object
      properties:
        candidates:
          type: array
          items:
            type: object
            properties:
              sha256:
                type: string
                example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
                description:
                  The SHA256 hash of this match candidate. Check this value against the full MD5 hash of the password you are checking to determine if it is a match.
              revealedInExposure:
                type: boolean
                example: true
                description: Whether the password was exposed in a known data Exposure. If this value is false, the password was found in common password cracking dictionaries, but has not been directly exposed as a user password in a data breach or other Exposure.
              exposureCount:
                type: integer
                example: 10
                description: The total number of exposures this password has appeared in. While it’s a bad idea to ever use a password that has been publicly exposed even a single time, this number can be used to determine how common a password is and how often it has been exposed.
    GenericAddResponse:
      type: object
      properties:
        added:
          type: integer
          example: 1
          description: The number of new alert subscriptions created.
        alreadyExisted:
          type: integer
          example: 0
          description: The number of alert subscriptions which already existed.
    GenericUpdateResponse:
      type: object
      properties:
        updated:
          type: integer
          example: 1
          description: The number of items updated.
        notFound:
          type: integer
          example: 0
          description: The number of items which were not found and could not be updated.
    CredentialsAccountsResponse:
      type: object
      properties:
        salt:
          type: string
          example: aa101973b4ea4ad698b42d20303a9527
          description: The salt value to use when constructing the Argon2 Credentials Hashes
        passwordHashesRequired:
          type: array
          description: An array of password hash specifications.
          items:
            type: object
            properties:
              hashType:
                type: integer
                example: 1
                description: |
                  The hash algorithm to use.  See the [Password Hash Algorithms](https://docs.enzoic.com/enzoic-api-developer-documentation/api-reference/password-hash-algorithms) page for more details.
              salt:
                type: string
                description: The salt value to use with the algorithm, if applicable. If an empty string, no salt value should be used.
        lastBreachDate:
          type: string
          format: date
          example: 2022-12-10T02:05:03.000Z
          description: A string containing the date/time of the last credentials exposure found for this account. This can be used to more intelligently check credentials for a user, i.e. if the lastBreachDate is less than the last time you performed a credentials check, you can skip the remaining steps.
    CleartextCredentialsResponse:
      type: object
      properties:
        passwords:
          type: array
          description: An array of passwords which were found for this user.
          items:
            $ref: '#/components/schemas/CleartextCredentialsPasswordItem'
        lastBreachDate:
          type: string
          format: date
          example: 2022-12-10T02:05:03.000Z
          description: A string containing the date/time of the last credentials exposure found for this account. This can be used to more intelligently check credentials for a user, i.e. if the lastBreachDate is less than the last time you performed a credentials check, you can skip the remaining steps.
    CleartextCredentialsByDomainResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of users exposed for the requested domain.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        pagingToken:
          type: string
          example: 598e5b844eb6d82ea07c5783
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
        users:
          type: array
          description: An array of credentials found under this domain, grouped by email address.
          items:
            type: object
            properties:
              username:
                type: string
                example: sample@email.tst
                description: The email address of the user who was exposed
              passwords:
                type: array
                description: An array of passwords which were found for this user.
                items:
                  $ref: '#/components/schemas/CleartextCredentialsPasswordItem'
    CleartextCredentialsByPartialHashResponse:
      type: object
      properties:
        candidates:
          type: array
          description: An array of possible matching users for the partial hash provided.  Check the usernameHash property in each candidate to determine if it was a full match.
          items:
            type: object
            properties:
              usernameHash:
                type: string
                example: abcabcab397b5155417038a5f33d31ec083d1e848ff3b69110005f1181eaa435
                description: The full SHA-256 hash of the username for this candidate match.
              lastBreachDate:
                type: string
                format: date
                example: 2022-12-10T02:05:03.000Z
                description: A string containing the date/time of the last credentials exposure found for this account. This can be used to more intelligently check credentials for a user, i.e. if the lastBreachDate is less than the last time you performed a credentials check, you can skip the remaining steps.
              passwords:
                type: array
                description: An array of passwords which were found for this user.
                items:
                  $ref: '#/components/schemas/CleartextCredentialsPasswordItem'
    CleartextCredentialsPasswordItem:
      type: object
      properties:
        password:
          type: string
          example: password123
          description: This will contain either the cleartext password if Enzoic was able to recover it, or the raw password hash that was found in this breach.  If this is a hash, it's still possible to compare to cleartext password by hashing the cleartext password you wish to compare using the same hashing algorithm (specified in the hashType parameter) and salt value.  Once you have calculated this, you can compare the resultant hash to this value for equality.
        hashType:
          type: integer
          example: 0
          description: |
            The hash algorithm for this password, if it is hashed.  See the [Password Hash Algorithms](https://docs.enzoic.com/enzoic-api-developer-documentation/api-reference/password-hash-algorithms) page for more details.
        salt:
          type: string
          description: The salt value to use with the hashing algorithm, if applicable. If an empty string, no salt value should be used.
        exposures:
          type: array
          description: Which Exposures these credentials have been found in.  This will be either an array of Exposure IDs (which can be used to look up additional details with the /exposure-details call) or, if includeExposureDetails was specified in the query string, an array of ExposureDetails objects.
          items:
            $ref: '#/components/schemas/ExposureDetailsResponse'
    HashedCredentialsResponse:
      type: object
      properties:
        candidateHashes:
          type: array
          description: A list of credential hashes from the Enzoic database that match the first 10 characters of the hash(es) which were passed in
          items:
            type: string
    IdentityMonitoringPostBody:
      type: object
      properties:
        monitoredIdentities:
          type: array
          description: An array of identities to monitor.  The max number of identities in a single call is 20.
          items:
            type: object
            required: [firstName, lastName, country]
            properties:
              tag:
                type: string
                example: 56d6d566-82e6-426c-ae47-528a0fb64808
                description: Any unique identifier you would like to be able to assign to this monitored identity for later retrieval and reference.  This is typically the unique identifier of the identity/user in your system.  You will be able to subsequently update/delete the monitored identity using this ID.  It will also be passed in via alert notifications to your webhook.  It eliminates the need for you to store off the Enzoic ID for this purpose.
              firstName:
                type: string
                example: John
                description: Legal first name
              lastName:
                type: string
                example: Doe
                description: Legal last name
              country:
                type: string
                example: US
                description: The ISO 3166-1 alpha 2 country code for the individual
              address1:
                type: string
                example: 1234 Main St
                description: Physical street address
              address2:
                type: string
                example: Suite 100
                description: Physical address line 2
              city:
                type: string
                example: New York
                description: Physical address city
              province:
                type: string
                example: NY
                description: Physical address province/state (2 letter abbreviation for US states)
              postalCode:
                type: string
                example: 12345
                description: Physical address postal code (5-digit ZIP code in US)
              governmentID:
                type: object
                description: A national identifier for this individual (e.g. Social Security Number in the US)
                required: [country, value]
                properties:
                  country:
                    type: string
                    example: US
                    description: The ISO 3166-1 alpha 2 country code for the government ID
                  value:
                    type: string
                    example: 123-12-1234
                    description: The value of the government ID
              emails:
                type: array
                description: An array of email addresses associated with this identity
                items:
                  type: string
                  example: test@enzoic.com
              phoneNumbers:
                type: array
                description: An array of phone numbers associated with this identity
                items:
                  type: object
                  required: [value]
                  properties:
                    country:
                      type: string
                      description: The ISO 3166-1 alpha 2 country code for the phone number (optional the phone number is in E164 format)
                    value:
                      type: string
                      description: The phone number, preferably in E164 format (e.g. +12123233232)
              creditCards:
                type: array
                description: An array of credit card numbers associated with this identity
                items:
                  type: string
                  example: 4111-1111-1111-1111
              cryptocurrencyWallets:
                type: array
                description: An array of cryptocurrency wallet addresses
                items:
                  type: string
                  example: 34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo
              urls:
                type: array
                description: |
                  An array of URLs associated with this identity.  The URL scheme must be included and can be http, https, ftp, ftps, smtp or smtps.  URLs are partial match from the beginning of the value, so if https://www.enzoic.com/some/page was found in a breach and https://www.enzoic.com was the URL being monitored, this would be considered a match.
                items:
                  type: string
                  example: https://www.enzoic.com
              ip4Addresses:
                type: array
                description: An array of IPv4 addresses to monitor
                items:
                  type: string
                  example: 134.88.23.1
              ip6Addresses:
                type: array
                description: An array of IPv6 addresses to monitor
                items:
                  type: string
                  example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
              secondaryMatchItems:
                type: array
                description: An array of secondary items to match.  Secondary matches occur after an identity is matched using the core PII provided above (name, government ID, etc.).  If an identity is matched using the core PII, Enzoic looks within close proximity to it for secondary matches that should be flagged as well.  Secondary match information can include anything relatively unique to the user and not already covered in one of the core PII categories, e.g. financial account numbers, localty card numbers, a US Employer Identification Number (EIN), passport number, etc.
                items:
                  type: object
                  required: [description, value]
                  properties:
                    description:
                      type: string
                      example: Bank of America Checking Account
                    value:
                      type: string
                      example: 90082323215
              webhookID:
                type: string
                example: 66766957431c9acc8cea2d6d
                description: The ID of the webhook to send alerts to when new Exposures are found related to this identity.  If not specified, the default webhook for your account will be used.
    IdentityMonitoringPutBody:
      type: object
      properties:
        monitoredIdentities:
          type: array
          description: An array of identities to monitor.  The max number of identities in a single call is 20.
          items:
            type: object
            properties:
              tag:
                type: string
                example: 56d6d566-82e6-426c-ae47-528a0fb64808
                description: The unique identifier you previously provided when adding this identity to monitoring.  If this is not provided, the id field is required.
              id:
                type: string
                example: 641c73ef1d909615a63b4d75
                description: The Enzoic ID for this monitored identity.  Found in the id field by calling the GET endpoint.  This field is required if tag is not provided.
              firstName:
                type: string
                example: John
                description: Legal first name
              lastName:
                type: string
                example: Doe
                description: Legal last name
              country:
                type: string
                example: US
                description: The ISO 3166-1 alpha 2 country code for the individual
              address1:
                type: string
                example: 1234 Main St
                description: Physical street address
              address2:
                type: string
                example: Suite 100
                description: Physical address line 2
              city:
                type: string
                example: New York
                description: Physical address city
              province:
                type: string
                example: NY
                description: Physical address province/state (2 letter abbreviation for US states)
              postalCode:
                type: string
                example: 12345
                description: Physical address postal code (5-digit ZIP code in US)
              governmentID:
                type: object
                description: A national identifier for this individual (e.g. Social Security Number in the US)
                required: [country, value]
                properties:
                  country:
                    type: string
                    example: US
                    description: The ISO 3166-1 alpha 2 country code for the government ID
                  value:
                    type: string
                    example: 123-12-1234
                    description: The value of the government ID
              emails:
                type: array
                description: An array of email addresses associated with this identity
                items:
                  type: string
                  example: test@enzoic.com
              phoneNumbers:
                type: array
                description: An array of phone numbers associated with this identity
                items:
                  type: object
                  required: [value]
                  properties:
                    country:
                      type: string
                      description: The ISO 3166-1 alpha 2 country code for the phone number (optional the phone number is in E164 format)
                    value:
                      type: string
                      description: The phone number, preferably in E164 format (e.g. +12123233232)
              creditCards:
                type: array
                description: An array of payment card numbers associated with this identity
                items:
                  type: string
                  example: 4111-1111-1111-1111
              cryptocurrencyWallets:
                type: array
                description: An array of cryptocurrency wallet addresses
                items:
                  type: string
                  example: 34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo
              urls:
                type: array
                description: |
                  An array of URLs associated with this identity.  The URL scheme must be included and can be http, https, ftp, ftps, smtp or smtps.  URLs are partial match from the beginning of the value, so if https://www.enzoic.com/some/page was found in a breach and https://www.enzoic.com was the URL being monitored, this would be considered a match.
                items:
                  type: string
                  example: https://www.enzoic.com
              ip4Addresses:
                type: array
                description: An array of IPv4 addresses to monitor
                items:
                  type: string
                  example: 134.88.23.1
              ip6Addresses:
                type: array
                description: An array of IPv6 addresses to monitor
                items:
                  type: string
                  example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
              secondaryMatchItems:
                type: array
                description: An array of secondary items to match.  Secondary matches occur after an identity is matched using the core PII provided above (name, government ID, etc.).  If an identity is matched using the core PII, Enzoic looks within close proximity to it for secondary matches that should be flagged as well.  Secondary match information can include anything relatively unique to the user and not already covered in one of the core PII categories, e.g. financial account numbers, localty card numbers, a US Employer Identification Number (EIN), passport number, etc.
                items:
                  type: object
                  required: [description, value]
                  properties:
                    description:
                      type: string
                      example: Bank of America Checking Account
                    value:
                      type: string
                      example: 90082323215
              webhookID:
                type: string
                example: 66766957431c9acc8cea2d6d
                description: The ID of the webhook to send alerts to when new Exposures are found related to this identity.  If not specified, the default webhook for your account will be used.
    IdentityMonitoringDeleteBody:
      type: object
      description: Either an array of tags or an array of Enzoic ids can be provided to indicate which identities to stop monitoring
      properties:
        tags:
          type: array
          description: An array of tags for the identities to stop monitoring
          items:
            type: string
            example: 56d6d566-82e6-426c-ae47-528a0fb64808
        ids:
          type: array
          description: An array of Enzoic IDs for the identities to stop monitoring.  These are the id field values which are returned as part of the response object when the /monitored-identities GET endpoint is called.
          items:
            type: string
            example: 641c73ef1d909615a63b4d75
    IdentityMonitoringDeleteResponse:
      type: object
      properties:
        deleted:
          type: integer
          example: 1
          description: The number of monitored identities deleted.
        notFound:
          type: integer
          example: 0
          description: The number of provided identities which were not found in the monitored identities table.
    IdentityMonitoringGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of monitored identity records available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        monitoredIdentities:
          type: array
          description: An array of monitored identities
          items:
            type: object
            properties:
              id:
                type: string
                example: 641c73ef1d909615a63b4d75
                description: The unique Enzoic ID for this monitored identity.
              tag:
                type: string
                example: 56d6d566-82e6-426c-ae47-528a0fb64808
                description: The unique identifier you previously provided when adding this identity to monitoring.  If this is not provided, the id field is required.
              firstName:
                type: string
                example: John
                description: Legal first name
              lastName:
                type: string
                example: Doe
                description: Legal last name
              country:
                type: string
                example: US
                description: The ISO 3166-1 alpha 2 country code for the individual
              address1:
                type: string
                example: 1234 Main St
                description: Physical street address
              address2:
                type: string
                example: Suite 100
                description: Physical address line 2
              city:
                type: string
                example: New York
                description: Physical address city
              province:
                type: string
                example: NY
                description: Physical address province/state (2 letter abbreviation for US states)
              postalCode:
                type: string
                example: 12345
                description: Physical address postal code (5-digit ZIP code in US)
              governmentID:
                type: object
                description: A national identifier for this individual (e.g. Social Security Number in the US)
                properties:
                  country:
                    type: string
                    example: US
                    description: The ISO 3166-1 alpha 2 country code for the government ID
                  displayValue:
                    type: string
                    example: XXXXX1234
                    description: The value of the government ID, masked to just the last 4 digits for security
              emails:
                type: array
                description: An array of email addresses associated with this identity
                items:
                  type: string
                  example: test@enzoic.com
              phoneNumbers:
                type: array
                description: An array of phone numbers associated with this identity
                items:
                  type: object
                  required: [value]
                  properties:
                    country:
                      type: string
                      description: The ISO 3166-1 alpha 2 country code for the phone number (optional the phone number is in E164 format)
                    value:
                      type: string
                      description: The phone number, preferably in E164 format (e.g. +12123233232)
              creditCards:
                type: array
                description: An array of payment card numbers associated with this identity, masked to just the last 4 digits for security
                items:
                  type: object
                  properties:
                    displayValue:
                      type: string
                      example: XXXXXXXXXXXX1111
              cryptocurrencyWallets:
                type: array
                description: An array of cryptocurrency wallet addresses
                items:
                  type: string
                  example: 34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo
              urls:
                type: array
                description: An array of URLs associated with this identity.
                items:
                  type: string
                  example: https://www.enzoic.com
              ip4Addresses:
                type: array
                description: An array of IPv4 addresses to monitor
                items:
                  type: string
                  example: 134.88.23.1
              ip6Addresses:
                type: array
                description: An array of IPv6 addresses to monitor
                items:
                  type: string
                  example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
              secondaryMatchItems:
                type: array
                description: An array of secondary items to monitor.  The values are masked to just the last 4 characters (or for shorter strings even less) for security.
                items:
                  type: object
                  required: [description, value]
                  properties:
                    description:
                      type: string
                      example: Bank of America Checking Account
                    displayValue:
                      type: string
                      example: XXXXXXX3215
              webhookID:
                type: string
                example: 66766957431c9acc8cea2d6d
                description: The ID of the webhook to send alerts to when new Exposures are found related to this identity.  If not specified, the default webhook for your account will be used.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    IdentityExposuresPostBody:
      type: object
      description: |
        The identity to pull exposures for.  One of the following sets of fields is required and must be provided or 
        the request will be rejected with a 400:
        - firstName, lastName, country, and governmentID
        - emails
        - creditCards
        - cryptocurrencyWallets
        - urls
        - ip4Addresses
        - ip6Addresses
      required: [firstName, lastName, country]
      properties:
        firstName:
          type: string
          example: John
          description: Legal first name
        lastName:
          type: string
          example: Doe
          description: Legal last name
        country:
          type: string
          example: US
          description: The ISO 3166-1 alpha 2 country code for the individual
        address1:
          type: string
          example: 1234 Main St
          description: Physical street address
        address2:
          type: string
          example: Suite 100
          description: Physical address line 2
        city:
          type: string
          example: New York
          description: Physical address city
        province:
          type: string
          example: NY
          description: Physical address province/state (2 letter abbreviation for US states)
        postalCode:
          type: string
          example: 12345
          description: Physical address postal code (5-digit ZIP code in US)
        governmentID:
          type: object
          description: A national identifier for this individual (e.g. Social Security Number in the US)
          required: [country, value]
          properties:
            country:
              type: string
              example: US
              description: The ISO 3166-1 alpha 2 country code for the government ID
            value:
              type: string
              example: 123-12-1234
              description: The value of the government ID
        emails:
          type: array
          description: An array of email addresses associated with this identity
          items:
            type: string
            example: test@enzoic.com
        phoneNumbers:
          type: array
          description: An array of phone numbers associated with this identity
          items:
            type: object
            required: [value]
            properties:
              country:
                type: string
                description: The ISO 3166-1 alpha 2 country code for the phone number (optional the phone number is in E164 format)
              value:
                type: string
                description: The phone number, preferably in E164 format (e.g. +12123233232)
        creditCards:
          type: array
          description: An array of payment card numbers associated with this identity
          items:
            type: string
            example: 4111-1111-1111-1111
        cryptocurrencyWallets:
          type: array
          description: An array of cryptocurrency wallet addresses
          items:
            type: string
            example: 34xp4vRoCGJym3xR7yCVPFHoCNxv4Twseo
        urls:
          type: array
          description: |
            An array of URLs associated with this identity.  The URL scheme must be included and can be http, https, ftp, ftps, smtp or smtps.  URLs are partial match from the beginning of the value, so if https://www.enzoic.com/some/page was found in a breach and https://www.enzoic.com was the URL being monitored, this would be considered a match.
          items:
            type: string
            example: https://www.enzoic.com
        ip4Addresses:
          type: array
          description: An array of IPv4 addresses to monitor
          items:
            type: string
            example: 134.88.23.1
        ip6Addresses:
          type: array
          description: An array of IPv6 addresses to monitor
          items:
            type: string
            example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
        secondaryMatchItems:
          type: array
          description: An array of secondary items to match.  Secondary matches occur after an identity is matched using the core PII provided above (name, government ID, etc.).  If an identity is matched using the core PII, Enzoic looks within close proximity to it for secondary matches that should be flagged as well.  Secondary match information can include anything relatively unique to the user and not already covered in one of the core PII categories, e.g. financial account numbers, localty card numbers, a US Employer Identification Number (EIN), passport number, etc.
          items:
            type: object
            required: [description, value]
            properties:
              description:
                type: string
                example: Bank of America Checking Account
              value:
                type: string
                example: 90082323215
    IdentityExposuresPostResponse:
      type: object
      properties:
        matches:
          description: An array of past exposures found for the provided identity
          type: array
          items:
            type: object
            properties:
              exposureID:
                type: string
                description: The ID of the Exposure. Use the /exposure-details call to retrieve details for this exposure.
              matchedItems:
                type: object
                description: An object containing just the queried values which were matched in this breach.  Each value will consist of a JSON object with queriedValue and foundValue fields, since the formatting of the value found may be different than what was passed in.
                properties:
                  foundValue:
                    type: string
                    example: 4111-1111-1111-1111
                    description: The value found in the breach
                  queriedValue:
                    type: string
                    example: 4111111111111111
                    description: The value being monitored
              rawMatchSource:
                type: string
                example: "Jimmy Dean\n2121 Cherrybrook Dr, Suite 200 Heisenberg, CO 12345\nSSN 232-44-3432\nMobile: (555) 323-4423\njimmy@nowhere.com\nVisa 4111111111111111 03/28 444\nBTC Wallet 0xb794f5ea0ba39494ce839613fffba74279579268 (1.0233 balance)\nEIN: 12-3123122\nWells Fargo Checking - Account #900000001\n"
                description: A snippet of text from the breach source showing the content around where the matches were found.
    BinMonitoringPostBody:
      type: object
      required: [bins]
      properties:
        bins:
          type: array
          description: An array of Bank Identification Numbers (BINs) to monitor.
          items:
            type: string
            example: "424242"
        webhookID:
          type: string
          example: 5a3ae05132ffb96e664d4626
          description: The ID of the webhook to send alerts to when a match is found for this BIN number.
    BinMonitoringDeleteBody:
      type: object
      required: [bins]
      properties:
        bins:
          type: array
          description: An array of Bank Identification Numbers (BINs) to stop monitoring.
          items:
            type: string
            example: "424242"
    BinMonitoringDeleteResponse:
      type: object
      properties:
        deleted:
          type: integer
          example: 1
          description: The number of monitored BINs deleted.
        notFound:
          type: integer
          example: 0
          description: The number of provided BINs which were not found in the monitored BINs table.
    BinMonitoringGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of monitored BINs available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        monitoredBins:
          type: array
          description: An array of monitored BINs
          items:
            type: string
            example: "424242"
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    BinMonitoringWithExtendedInfoGetResponse:
      type: object
      properties:
        count:
          type: integer
          example: 1
          description: The total number of monitored BINs available across all pages.  If this exceeds the requested page size, the results are paginated and a pagingToken will be present in the response.
        monitoredBins:
          type: array
          items:
            type: object
            properties:
                bin:
                    type: string
                    example: "424242"
                    description: The BIN number being monitored.
                webhookID:
                    type: string
                    example: 5a3ae05132ffb96e664d4626
                    description: The ID of the webhook to send alerts to when a match is found for this BIN number.
                webhookURL:
                    type: string
                    example: https://mywebhook.com
                    description: The URL of the webhook to send alerts to when a match is found for this BIN number.
        pagingToken:
          type: string
          example: 5854757a7750ac6c4230f656
          description: Present when there are additional pages of results available. Pass this token in on a subsequent call to fetch the next page of results.
    BinExposuresGetResponse:
      type: object
      properties:
        cardsFound:
          type: array
          description: An array of payment cards found exposed during the specified period
          items:
            type: object
            properties:
              cardNumber:
                type: string
                example: 4111111111111111
                description: The card number that was found.
              exposures:
                type: array
                description: A list of exposure IDs this card number was found in.  Use the /exposure-details call to retrieve details for this exposure.
                items:
                  type: object
                  properties:
                    exposureID:
                      type: string
                      example: 5f02c147b99c69bfc37c
                      description: The ID of the Exposure. Use the /exposure-details call to retrieve details for this exposure.
                    rawMatchSource:
                      type: string
                      example: Jane Doe 4242424242424242 08/28 123
                      description: A snippet of text from the breach source showing the content around where the card number was found.
    WebhooksPostBody:
      type: object
      required: [url]
      properties:
        url:
          type: string
          example: https://mywebhook.com
          description: The URL of the webhook to send alerts to when a match is found.
        default:
          type: boolean
          example: false
          description: |
            If true, this webhook will be used as the default for all new monitoring requests which do not specify a 
            webhook.  This will automatically override any existing default webhook.  The first webhook created on an 
            account automatically becomes the default.
    WebhooksPostResponse:
      type: object
      properties:
        webhookID:
          type: string
          example: 5a3ae05132ffb96e664d4626
          description: The ID of the webhook.
        url:
          type: string
          example: https://mywebhook.com
          description: The URL of the webhook.
        key:
          type: string
          example: "51000000000000000000000000000000"
          description: The key for the webhook.  This is passed to the webhook as the username using basic authentication, so that you may verify Enzoic is the caller.
        secret:
          type: string
          example: "51000000000000000000000000000000"
          description: The secret for the webhook.  This is passed to the webhook as the password using basic authentication, so that you may verify Enzoic is the caller.
        default:
          type: boolean
          example: false
          description: If true, this webhook is the default webhook for the account.
    WebhooksPutBody:
      type: object
      required: [url]
      properties:
        url:
          type: string
          example: https://mywebhook.com
          description: The URL of the webhook to send alerts to when a match is found.
        default:
          type: boolean
          example: false
          description: If true, this webhook will be used as the default for all new monitoring requests which do not specify a webhook.  This will automatically override any existing default webhook.  The first webhook created on an account automatically becomes the default.
    WebhooksDeleteBody:
      type: object
      required: [webhookID]
      properties:
        webhookID:
          type: string
          example: 5a3ae05132ffb96e664d4626
          description: The ID of the webhook to delete.
    WebhooksGetResponse:
      type: array
      items:
        type: object
        properties:
          webhookID:
            type: string
            example: 5a3ae05132ffb96e664d4626
            description: The ID of the webhook.
          url:
            type: string
            example: https://mywebhook.com
            description: The URL of the webhook.
          key:
            type: string
            example: "51000000000000000000000000000000"
            description: The key for the webhook.  This is passed to the webhook as the username using basic authentication, so that you may verify Enzoic is the caller.
          secret:
            type: string
            example: "51000000000000000000000000000000"
            description: The secret for the webhook.  This is passed to the webhook as the password using basic authentication, so that you may verify Enzoic is the caller.
          default:
            type: boolean
            example: false
            description: If true, this webhook is the default webhook for the account.
    PaymentCardExposuresPostBody:
      type: object
      required: [partialCardNumber]
      properties:
        partialCardNumber:
          type: string
          example: 40112322
          description: |
            The first 8 digits of the card number being checked.
        includeRawMatchSource:
          type: boolean
          example: true
          description: |
            If this parameter is specified and true, the results will include the raw match source inline, along 
            with the exposure IDs.  The raw match source will be the snippet of text from the breach source where 
            the card number was found, providing additional context into what else was exposed (e.g. name, CVV, expiration
            date, etc.).
            
            NOTE: Including this parameter will increase the size and significantly slow the response.  Do not 
            specify this parameter unless you actually need the original source text.
    PaymentCardExposuresPostResponse:
        type: object
        properties:
            cardsFound:
              type: array
              description: An array of past exposures found for the provided card number
              items:
                  type: object
                  properties:
                    cardNumber:
                      type: string
                      description: The complete payment card number which was found.
                    exposures:
                      type: array
                      description: An array of exposures where this card was found.  Multiple exposures mean the card has been revealed publicly more than once and is thus riskier.
                      items:
                        type: object
                        properties:
                          exposureID:
                            type: string
                            example: 5f483321b7496d0008ae3073
                            description: The ID of the Exposure. Use the /exposure-details call to retrieve details for this exposure.
                    rawMatchSource:
                        type: string
                        example: "Jane Doe 4242424242424242 08/28 123"
                        description: A snippet of text from the breach source showing the content around where the card number was found.  This will only be present if the includeRawMatchSource parameter was specified in the request.

  securitySchemes:
    enzoic_auth:
      type: http
      scheme: basic
      description: The username is your API key and the password is your API secret.
