# 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
- All errors follows the same structure using a parcial implementation of RFC7807 (opens new window).
{
"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.