# API Guide v2.2 beta

Freshly baked API with a lot of new features

Heads up!
This is a beta version of our API. We are still working on it and we are open to feedback. If you have any questions or suggestions, please contact us at caio@harbourshare.com

If you're migrating from API v1, please note that the new endpoint is api.myharbourshare.com instead of api.harbourshare.com

# Start here

# 1. Get your keys

You can generate new credentials and find your existing ones inside your Harbour Account (opens new window) > Settings > Integrations (or contact support@harbourshare.com in case you need help)

p.s. It requires an Organization Admin role to perform the mentioned steps

⚠️ Heads Up

  • You should never use API tokens in the frontend of your application or malicious users could discover them in your source code. You should only use them on your server.

  • You should limit API credentials access to only the minimum number of people necessary.

  • You should not embed API credentials in your backend code even if it’s not public - this increases the risk that they will be discovered. Instead, you should store them in configuration files or environment variables.

# 2. Know the basics

Request, response format

  • Token-based authentication. API keys must be included in the header of all requests made to the API.

  • You should use a Content-Type: application/json header with all requests and responses will also return JSON with a consistent structure.

  • You must make all your requests to the API over HTTPS. Any requests made over HTTP will fail.

  • Text fields support UTF-8, but do not allow certain special characters.

Errors

{
  "detail": "Please, make sure your request HEADER contains the API key and it is a valid one.",
  "error": 2002,
  "message": "Unauthorized access.",
  "more_info": "https://knowledgebase.harbourshare.com/knowledge/errors/2002"
}

Rate limits

  • Harbour advice a maximum volume of 100 requests per minute.

  • Any request over the limit could return a 429 Too Many Requests error.

HTTP/2 429 Too Many Requests
Content-Type: application/json

{
  "detail": "Your requests are over the maximum volume per minute. Please check our recommendations and try again later.",
  "error": 2003,
  "message": "Rate limit exceeded.",
  "more_info": "https://knowledgebase.harbourshare.com/knowledge/errors/2003"
}

# Core resources

Below all are available Core Resources within Harbour's API. For each resource there should be an available endpoint to make requests to.

Resource Description
Verifications πŸ†” Interact with every verification check ran by your organization

# Verifications

This is an object that represents an executed verification check. You can retrieve it to see the result for each check ran inside an agreement link or under your organization.

# Endpoints

Name Endpoint
List verifications GET /verifications
Get verification GET /verifications/{verification_id}
Delete verification DELETE /verifications/{verification_id}

# The verification object

Attributes

Field Type Description

verification_id

string Id of the verification

result

enum Result of the verification

status

enum Status of the verification

verification_type

enum Type of the verification

verification_subtype

enum Subtype of the verification

verification_tier

enum Tier of the verification

is_scan

bool Defines is this verification a scan

latest_response

dict Latest response payload

verification_metadata

dict User metadata (passed as URL params)

updated_at

timestamp Date and time verification record last updated

created_at

timestamp Date and time verification record was created

agreement_link_id

string Agreement link id

organization_id

string Organization id

sub_status new

enum Sub Status of the verification

last_status_at new

timestamp Date and time verification status update was received

submitted_at new

timestamp Date and time verification was submitted

verification_details new

dict Verification details object

# Verification checks

Verification status enums

Value Description
started Verification started but not submitted*
cancelled Verification cancelled (information changed during submission process)*
in_progress Verification submitted and being processed
completed Verification completed

* applicable only for enhanced_identity_verification and panel_drug verfication types

Verification result enums

Value Description
pending Verification result is pending*
verified Verification result has been verified**
rejected Verification result has been rejected**

* applicable only for in_progress status

** verified and rejected results should be applied to the check context.
e.g. for panel_drug check type:
- verified means tested negative for drugs
- rejected means tested positive for drugs

Verification sub status enums *

Value Description
county_level_check Check is being executed at County Level
national_level_check Check is being executed at National Level

* applicable for us_criminal_record_check only

Verification type enums

Value Description
enhanced_identity_verification Enhanced Identity Verification
us_criminal_record_check US Criminal Record Check
motor_vehicle_record Motor Vehicle Record report
panel_drug Panel drug test

Verification subtype enums

Value Description
single_state_county_record_check_result County level Criminal Record Check (for current address)
all_state_county_record_check_result County level Criminal Record Check (for last seven years)
ssn_id_document_reports Social Security Number (SSN) Trace

Verification tier enums

Value Description
request_us_criminal_record_check_tier_1 US Criminal Record Check (Tier 1)
request_us_criminal_record_check_tier_2 US Criminal Record Check (Tier 2)
request_us_criminal_record_check_tier_3 US Criminal Record Check (Tier 3)
panel 5 5 Panel Urine Test
panel 7 7 Panel Urine Test
panel 9 9 Panel Urine Test
panel 10 10 Panel Urine Test

# US Criminal Record - tier coverage

Service Tier 1 Tier 2 Tier 3
Social Security Number (SSN) Trace βœ”οΈ βœ”οΈ βœ”οΈ
Sex Offender Registry (National with Alias) βœ”οΈ βœ”οΈ βœ”οΈ
National Criminal Database (with Alias) βœ”οΈ βœ”οΈ βœ”οΈ
Global Sanctions and Terrorist Watchlist Check (with Alias) βœ”οΈ βœ”οΈ βœ”οΈ
County level Criminal Record Check and Federal statewide Criminal Search for provided current address βœ”οΈ βœ”οΈ
County level Criminal Record Check and Federal statewide Criminal Search for the last seven years of the candidate’s address history βœ”οΈ

# Panel Drug - tier coverage

Drug 5 Panel 7 Panel 9 Panel 10 Panel
Amphetamines βœ”οΈ βœ”οΈ βœ”οΈ βœ”οΈ
Barbiturates βœ”οΈ βœ”οΈ βœ”οΈ
Benzodiazepines βœ”οΈ βœ”οΈ βœ”οΈ
Opiates βœ”οΈ βœ”οΈ βœ”οΈ βœ”οΈ
Cocaine βœ”οΈ βœ”οΈ βœ”οΈ βœ”οΈ
Marijuana βœ”οΈ βœ”οΈ βœ”οΈ
Phencyclidine βœ”οΈ βœ”οΈ βœ”οΈ βœ”οΈ
Propoxyphene βœ”οΈ βœ”οΈ
Methadone βœ”οΈ βœ”οΈ
Methaqualone βœ”οΈ
Verification Example

Example

{
  "verification_id": "VERIFICATION-1683225191102_0a5cb9fddc90458e9c9496f12870609c",
  "result": "Verified",
  "status": "Accepted",
  "verification_type": "enhanced_identity_verification",
  "verification_subtype": null,
  "is_scan": false,
  "organization_id": "ORG123",
  "latest_response": {
    "account_association_links": [],
    "activity_log": [
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "cda74d75-d179-4d62-8584-cf42988f7911",
        "modified": "2023-05-04T00:00:00Z",
        "status": "ONE_ID_BACKGROUND_CHECK_CREATED",
        "status_label": "OneID - Background Check Created",
        "time_label": "06:33:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "953dd393-f40f-4f6e-9a91-bd269aaf59e4",
        "modified": "2023-05-04T00:00:00Z",
        "status": "SUBMITTED",
        "status_label": "Application submitted",
        "time_label": "06:33:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "36f12d10-1cea-4818-ba9a-e82579784ba4",
        "modified": "2023-05-04T00:00:00Z",
        "status": "COMPLETE",
        "status_label": "Application completely returned",
        "time_label": "06:34:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "93e365fe-26d6-480e-8f29-834e5c6991be",
        "modified": "2023-05-04T00:00:00Z",
        "status": "COMPLETE",
        "status_label": "Application completely returned",
        "time_label": "06:34:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "064a2d16-cc3c-48d0-a527-dcb9bed85f12",
        "modified": "2023-05-04T00:00:00Z",
        "status": "ONE_ID_BACKGROUND_CHECK_RETURNED",
        "status_label": "OneID - Background Check Returned",
        "time_label": "06:34:PM"
      }
    ]
  },
  "verification_metadata": { "your_internal_user_id": 123 },
  "updated_at": "1685038116000",
  "created_at": "1685038116000"
}

List verifications

This endpoint returns a list of verifications.

What can you do with this information?

When querying data from this endpoint you will be able to access all the executed verifications check ran under your organization meaning not only the completed ones but also the ones still in progress.

Endpoint

GET /verifications

Path Parameters

null

Query Parameters

Field Type Description Required Default Value
size integer Amount of record per page (page size) false 50
page integer Current page number false 1
search string Search among different fields false -
verification_metadata dict Detailed description here false -
order_by string Order records by a specific field false created_at DESC

Example

GET /verifications?size=10&page=1&search={agreement_link_id}

Detailed explanation of how metadata filtering works

Assuming an agreement link were opened and fulfilled with the following metadata params:

harbour-link.com/unique-id-123?internal_id=123&internal_name=John%20Doe&internal_age=30

filtering can be done by one or more metadata fields, for example:

GET /verifications?verification_metadata={"internal_id":"123", "internal_name":"John Doe"}

All the key-value pairs are used for generating "AND" SQL statements for filtering records.

Response Body

Field Type Description Example
items array An array of retrieved items Verification
total integer Amount of items available 20
page string Current page number 1
size string Amount of record per page (page size) 10
pages string Amount of pages available 2
View Response Example

Example

{
  "items": [
    {
      "verification_id": "VERIFICATION-1683225191102_0a5cb9fddc90458e9c9496f12870609c",
      "result": "Verified",
      "status": "Accepted",
      "verification_type": "enhanced_identity_verification",
      "verification_subtype": null,
      "is_scan": false,
      "organization_id": "ORG123",
      "latest_response": {
        "account_association_links": [],
        "activity_log": [
          {
            "created": "2023-05-04T00:00:00Z",
            "date_label": "2023-05-04",
            "id": "cda74d75-d179-4d62-8584-cf42988f7911",
            "modified": "2023-05-04T00:00:00Z",
            "status": "ONE_ID_BACKGROUND_CHECK_CREATED",
            "status_label": "OneID - Background Check Created",
            "time_label": "06:33:PM"
          },
          {
            "created": "2023-05-04T00:00:00Z",
            "date_label": "2023-05-04",
            "id": "953dd393-f40f-4f6e-9a91-bd269aaf59e4",
            "modified": "2023-05-04T00:00:00Z",
            "status": "SUBMITTED",
            "status_label": "Application submitted",
            "time_label": "06:33:PM"
          },
          {
            "created": "2023-05-04T00:00:00Z",
            "date_label": "2023-05-04",
            "id": "36f12d10-1cea-4818-ba9a-e82579784ba4",
            "modified": "2023-05-04T00:00:00Z",
            "status": "COMPLETE",
            "status_label": "Application completely returned",
            "time_label": "06:34:PM"
          },
          {
            "created": "2023-05-04T00:00:00Z",
            "date_label": "2023-05-04",
            "id": "93e365fe-26d6-480e-8f29-834e5c6991be",
            "modified": "2023-05-04T00:00:00Z",
            "status": "COMPLETE",
            "status_label": "Application completely returned",
            "time_label": "06:34:PM"
          },
          {
            "created": "2023-05-04T00:00:00Z",
            "date_label": "2023-05-04",
            "id": "064a2d16-cc3c-48d0-a527-dcb9bed85f12",
            "modified": "2023-05-04T00:00:00Z",
            "status": "ONE_ID_BACKGROUND_CHECK_RETURNED",
            "status_label": "OneID - Background Check Returned",
            "time_label": "06:34:PM"
          }
        ]
      },
      "verification_metadata": { "your_internal_user_id": 123 },
      "updated_at": "1685038116000",
      "created_at": "1685038116000"
    }
  ],
  "total": 6,
  "page": 2,
  "size": 5,
  "pages": 2
}

Get verification

This endpoint returns a single verification.

What can you do with this information?

When querying data from this endpoint you will be able to retrieve information from a specific verification by passing its unique identifier.

Endpoint

GET /verification/{verification_id}

Path Parameters

Field Type Description Example Required
verification_id string Verification ID VERIFICATION-123_2ef4c43 βœ”οΈ

Query Parameters null

View Response Example

Example

{
  "verification_id": "VERIFICATION-168503811649_2e48122d4bf47d1b0f7d32e05b90c47",
  "updated_at": 1685038116000,
  "result": "Verified",
  "status": "Accepted",
  "verification_type": "enhanced_identity_verification",
  "verification_subtype": null,
  "is_scan": false,
  "organization_id": "ORG123",
  "agreement_link_id": "Ce4hRho4SpV4TWqiR2pQt",
  "latest_response": {
    "account_association_links": [],
    "activity_log": [
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "cda74d75-d179-4d62-8584-cf42988f7911",
        "modified": "2023-05-04T00:00:00Z",
        "status": "ONE_ID_BACKGROUND_CHECK_CREATED",
        "status_label": "OneID - Background Check Created",
        "time_label": "06:33:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "953dd393-f40f-4f6e-9a91-bd269aaf59e4",
        "modified": "2023-05-04T00:00:00Z",
        "status": "SUBMITTED",
        "status_label": "Application submitted",
        "time_label": "06:33:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "36f12d10-1cea-4818-ba9a-e82579784ba4",
        "modified": "2023-05-04T00:00:00Z",
        "status": "COMPLETE",
        "status_label": "Application completely returned",
        "time_label": "06:34:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "93e365fe-26d6-480e-8f29-834e5c6991be",
        "modified": "2023-05-04T00:00:00Z",
        "status": "COMPLETE",
        "status_label": "Application completely returned",
        "time_label": "06:34:PM"
      },
      {
        "created": "2023-05-04T00:00:00Z",
        "date_label": "2023-05-04",
        "id": "064a2d16-cc3c-48d0-a527-dcb9bed85f12",
        "modified": "2023-05-04T00:00:00Z",
        "status": "ONE_ID_BACKGROUND_CHECK_RETURNED",
        "status_label": "OneID - Background Check Returned",
        "time_label": "06:34:PM"
      }
    ]
  },
  "verification_metadata": {},
  "created_at": 1685038116000
}

Delete verification

This endpoint deletes a single verification.

What can you do with this endpoint?

Deleting verification.

Endpoint

DELETE /verification/{verification_id}

Path Parameters

Field Type Description Example Required
verification_id string Verification ID VERIFICATION-123_2ef4c43 βœ”οΈ

Query Parameters null

Example

DELETE /verification/VERIFICATION-123_2ef4c43

Response Body

Field Type Description Example
verification_id string Verification ID VERIFICATION-123_2ef4c43
event_datetime unix timestamp Unix timestamp of delete action 1685452157000
View Response Example

Example

{
  "verification_id": "VERIFICATION-1635606804_7781fdc084da48059afe978236499",
  "event_datetime": 1685452157000
}

# Webhooks

# Endpoints

Name Endpoint
List webhooks GET /webhooks
Get webhook GET /webhooks/{webhook_id}
Create webhook POST /webhooks
Update webhook PUT /webhooks/{webhook_id}
Delete webhook DELETE /webhooks/{webhook_id}
List webhook events GET /webhooks/{webhook_id}/events
Get webhook event GET /webhooks/{webhook_id}/events/{event_id}

# The webhook object

Attributes

Field Type Description

webhook_id

string Id of the webhook

created_at

unix timestamp Datetime webhook was created

updated_at

unix timestamp Datetime webhook was last updated

destination_url

string URL webhook will be delivered to

event_types

array<enum> List of event type to trigger from

notification_emails

array<string> Emails that will be notified in case of failure

created_by

string User id that created the webhook

updated_by

string User id that last updated the webhook

service_status

bool Webhook current status

organization_id

string Id of the organization
Webhook Example

Example

{
  "webhook_id": "wb_b6924c66ae114fada7d351388b06c6a4",
  "created_at": 1677091886000,
  "updated_at": 1677091886000,
  "destination_url": "https://destination.url",
  "event_types": ["verification", "agreement.viewed", "agreement.completed"],
  "notification_emails": ["caio@harbourshare.com"],
  "created_by": null,
  "updated_by": null,
  "service_status": false,
  "organization_id": "ORG-AbCd1234"
}

Webhook event type enums

Value Description
verification Triggers when a verification check is ran
agreement.viewed Triggers when an agreement is viewed
agreement.signed Triggers when an agreement is signed (by each signer)
agreement.completed Triggers when an agreement is signed (by all signers)

List webhooks

This endpoint list webhooks.

What can you do with this information?

When querying data from this endpoint you will be able to retrieve every webhook created under the authenticated organization.

Endpoint

GET /webhooks

Path Parameters

null

Query Parameters

Field Type Description Required Default Value
size integer Amount of record per page (page size) false 50
page integer Current page number false 1
search string Filter records with OR condition false -
order_by string Order records by a specific field false created_at DESC

Example

GET /webhooks?size=10&page=1

Response Body

Field Type Description Example
items array<Webhook> An array of retrieved items Webhook
total integer Amount of items available 20
page string Current page number 1
size string Amount of record per page (page size) 10
pages string Amount of pages available 2
View Response Example

Example

{
  "items": [
    {
      "webhook_id": "wb_b6924c66ae114fada7d351388b06c6a4",
      "created_at": 1677091886000,
      "updated_at": 1677091886000,
      "destination_url": "https://destination.url",
      "event_types": [
        "verification",
        "agreement.viewed",
        "agreement.completed"
      ],
      "notification_emails": ["caio@harbourshare.com"],
      "created_by": null,
      "updated_by": null,
      "service_status": false
    },
    {
      "webhook_id": "wb_577500dbdb034389a51f33bf02dd5ed9",
      "created_at": 1684944059000,
      "updated_at": 1684944059000,
      "destination_url": "https://webhook.site",
      "event_types": ["verification"],
      "notification_emails": null,
      "created_by": null,
      "updated_by": null,
      "service_status": true
    }
  ],
  "total": 2,
  "page": 1,
  "size": 50,
  "pages": 1
}

Get webhook

This endpoint gets a webhook.

What can you do with this information?

When querying data from this endpoint you will be able to retrieve data from a specific webhook created under the authenticated organization.

Endpoint

GET /webhook/{webhook_id}

Path Parameters

null

Query Parameters

null

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

Create webhook

This endpoint creates a webhook.

What can you do with this information?

When sending data to this endpoint you will be able to create a webhook under the authenticated organization.

Endpoint

POST /webhooks

Path Parameters

null

Query Parameters

null

Request Body:

Field Type Description
destination_url string Webhook URL destination
notification_email

coming next

string Email to notified in case of delivering failure
Request Body Example

Example

{
  "destination_url": "https://webhook.destination.url",
  "notification_email": "notification@email.com"
}

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

Update webhook

This endpoint updates a webhook.

What can you do with this information?

When sending data to this endpoint you will be able to update a webhook created under the authenticated organization.

Endpoint

PUT /webhooks/{webhook_id}

Path Parameters

null

Query Parameters

null

Request Body:

Field Type Description
destination_url string Webhook URL destination
notification_email

coming next

string Email to notified in case of delivering failure
Request Body Example

Example

{
  "destination_url": "https://webhook.destination.url",
  "notification_email": "notification@email.com"
}

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

Delete webhook

This endpoint deletes a webhook.

What can you do with this information?

When sending data to this endpoint you will be able to delete a webhook created under the authenticated organization.

Endpoint

DELETE /webhooks/{webhook_id}

Path Parameters

null

Query Parameters

null

Request Body:

Field Type Description
destination_url string Webhook URL destination
notification_email

coming next

string Email to notified in case of delivering failure
Request Body Example

Example

{
  "destination_url": "https://webhook.destination.url",
  "notification_email": "notification@email.com"
}

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

List webhook events

This endpoint list webhook events.

What can you do with this information?

When querying data from this endpoint you will be able to retrieve every event from a specific webhook created under the authenticated organization.

Endpoint

GET /webhooks/{webhook_id}/events

Path Parameters

null

Query Parameters

null

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

Get webhook event

This endpoint gets a webhook event.

What can you do with this information?

When querying data from this endpoint you will be able to retrieve a specific event from a specific webhook created under the authenticated organization.

Endpoint

GET /webhooks/{webhook_id}/events/{event_id}

Path Parameters

null

Query Parameters

null

Response Body

Field Type Description Example
webhook_id string Id of the webhook record WEBHOOK-AbCd134
event_datetime datetime Datetime of the event 2023-01-01T23:59:59.000000
View Response Example

Example

{
  "webhook_id": "WEBHOOK-1683235983022_af042c9254b446b982a9e9a849630b89",
  "event_datetime": "2023-05-04T21:33:03.023949"
}

# Versioning Policy

The following section explains in detail Harbour's API versioning policy.

This policy is used to support the evolution and improvement of our services without impacting our current clients' integrations. It also creates a continuous and predictable release pattern for our API.

# How we version

Harbour introduces new changes to the API in 3 ways depending on the changes being implemented:

  • Current version implementation
  • A minor version release
  • A major version release

When Harbour releases a new API version, you can choose to upgrade to gain access to new features. When changes are implemented into the current API version, these features will become available to customers using this version, without needing an upgrade.

The most recent product improvements will be included in the latest version of the API. We recommend upgrading to the latest version in order to take advantage of new functionality and optimize for the best user experience.

β“˜ Note

A publicly released version of an Harbour API will never change in any way that could impact your integration.

Current version implementation

Harbour will implement changes into current API version, without a new version release, when the changes being introduced will not interfere with your integration. These changes represent independent features which do not alter pre-existing logic. For example:

  • Adding new API endpoints
  • Adding optional request parameters to existing API endpoints
  • Reordering properties returned from existing API endpoints
  • Adding a new Core Resource

In this case, you can use these changes immediately without having to upgrade API version (if you are currently on the API version in which the changes were introduced).

Minor releases

Harbour will release a minor API version when the changes being introduced are considered backwards compatible, i.e. additive changes. For example:

  • Adding new properties to the responses from existing API endpoints
  • Altering the message attributes returned by validation failures or other errors
  • Adding new values to existing properties in responses from existing API endpoints

In this case, it is safe for you to move from one minor version to another (unless you consider additive changes to be backwards incompatible). Minor versions are released more frequently, and contain incremental changes to the API.

Major releases

Harbour will release a major API version if any of the changes being introduced are backwards incompatible. In this case, if you would like to move to a new major version you will likely need to update your integration.

Major versions are released less frequently.

Harbour considers the following changes to be backwards incompatible:

  • Removing a feature of the API
  • Removing or renaming a resource, field, method or an enum value
  • Changing the type of a field (eg. integer becomes string or float)
  • Changing the URL format
  • Adding a new or modifying an existing validation to an existing resource
  • Changing existing error response codes/messages
  • Changing authentication mechanism

# Release Notes

# v2.2

Aug 21st 2023

  • Extra data for Verifications object
    • sub_status
    • last_status_at
    • submitted_at
    • verification_details

v2.1

May 31st 2023

More endpoints, bug fixes and information for objects provided!

  • Verifications endpoint πŸ“„

    • Unix timestamps are now the standard for all datetime attributes.
    • Added new response attributes to the Verification object (organization_id, is_scan, verification_subtype).
    • Added new API endpoints to retrieve information about single verification or delete it. (Check the updated table here).
  • Webhoks endpoint πŸ“„

    • Added new API endpoints for webhook basic CRUD methods and retrieving webhook event records (Check the updated table here).

v2.0 πŸš€

May 1st 2023

A new way to interact with Harbour. The new API is built on top of the latest technologies and is designed to be more intuitive and easier to use.

print("Hello World v2.0")
  • Verifications endpoint πŸ“„

Retrieve information about verifications.

Name Endpoint
List verifications GET /verifications
  • Webhooks endpoint πŸ“„

Create and manage webhooks.

Name Endpoint
Create webhook POST /webhooks

β“˜ Note

Let's build brilliant, automated signing experiences together 🀝
Feel free to contact us if you have any feedback regarding the API.