Appendix
Reference information for working with the Concord eVault API.
HTTP status codes
| Code | Name | Description | When used |
|---|---|---|---|
| 200 | OK | Request succeeded | GET, PATCH, PUT successful |
| 201 | Created | Resource created successfully | POST that creates a new resource |
| 202 | Accepted | Request accepted for processing | Async operations (certified prints) |
| 204 | No Content | Request succeeded with no response body | DELETE successful, some POST operations |
| 400 | Bad Request | Invalid request parameters or body | Validation errors, invalid input |
| 401 | Unauthorized | Missing or invalid authentication | No Access Key, invalid key, expired key |
| 403 | Forbidden | Valid authentication but insufficient permissions | Missing scope, resource access denied |
| 404 | Not Found | Resource does not exist | Invalid ID, resource in different vault |
| 409 | Conflict | Request conflicts with current state | Duplicate names, business rule violations |
| 422 | Unprocessable Entity | Request understood but cannot be processed | Semantic errors in valid JSON |
| 429 | Too Many Requests | Rate limit exceeded | Per-minute or per-hour limit exceeded |
| 500 | Internal Server Error | Unexpected server error | Server-side failure (include traceId) |
Error response format
All error responses follow the RFC 7807 Problem Details format:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Additional information about the error.",
"traceId": "00-1234567890abcdef1234567890abcdef-1234567890abcdef-00"
}
| Field | Type | Description |
|---|---|---|
type | string | URI reference identifying the problem type |
title | string | Short, human-readable summary |
status | integer | HTTP status code |
detail | string | Human-readable explanation (optional) |
traceId | string | Unique identifier for support troubleshooting |
Validation errors
Validation errors include an errors object with field-specific messages:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"name": ["The Name field is required."],
"pageSize": ["The field pageSize must be between 1 and 100."]
},
"traceId": "00-1234567890abcdef1234567890abcdef-1234567890abcdef-00"
}
Rate limit error
{
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded for this access key. Please retry after the specified time.",
"retryAfterSeconds": 60
}
Pagination
List endpoints return paginated responses in one of two formats.
Standard format
{
"data": [...],
"metadata": {
"page": 1,
"pageSize": 25,
"totalCount": 150
}
}
Legacy format
Some endpoints use this format:
{
"items": [...],
"totalCount": 150,
"page": 1,
"pageSize": 25
}
Response fields
| Field | Type | Description |
|---|---|---|
data/items | array | Array of items for the current page |
totalCount | integer | Total number of items across all pages |
page | integer | Current page number (1-indexed) |
pageSize | integer | Number of items per page |
Pagination parameters
| Parameter | Type | Default | Max | Description |
|---|---|---|---|---|
page | integer | 1 | — | Page number to retrieve |
pageSize | integer | 25 | 100 | Items per page |
Data types
GUID
Globally Unique Identifiers are used for all resource IDs. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6. Case-insensitive (lowercase recommended).
DateTime
All timestamps are in ISO 8601 format with UTC timezone. Format: YYYY-MM-DDTHH:mm:ss.sssZ. Example: 2024-01-15T10:30:00.000Z. Timezone is always UTC (indicated by the Z suffix).
File sizes
File sizes are returned in bytes as integers.
| Size | Bytes | Example use |
|---|---|---|
| 1 KB | 1,024 | Small text files |
| 1 MB | 1,048,576 | Typical PDF document |
| 1 GB | 1,073,741,824 | Large package collections |
Enumerations
Package types
| Value | Description |
|---|---|
AuthoritativeCopy | The legally binding version of the document |
Receipt | Acknowledgment or receipt document |
UploadReceipt | Receipt generated upon upload |
Upload | Standard uploaded document |
Package sources
| Value | Description |
|---|---|
Api | Created via API (Draft Package workflow) |
Transfer | Received via transfer from another vault |
Upload | Uploaded directly via portal |
Draft package status
| Value | Description |
|---|---|
Pending | Created but has no files |
Ready | Has files, ready to be completed |
Processing | Being converted to a vault package |
Completed | Successfully converted to package |
Cancelled | Cancelled, files being cleaned up |
Certified print status
| Value | Description |
|---|---|
Pending | Request received, queued for generation |
Processing | PDF is being generated |
Completed | PDF ready for download |
Failed | Generation failed (see errorMessage) |
Workflow status
| Value | Description |
|---|---|
Ready | Workflow created, ready for use |
Processing | CSV is being matched against packages |
Completed | Processing finished successfully |
Failed | Processing failed (see errorMessage) |
AwaitingConfiguration | CSV uploaded, awaiting lookup column selection |
Unmatched item reasons
| Value | Description |
|---|---|
InvalidGuid | Value is not a valid GUID format |
NotFound | Package ID not found in vault |
Rate limiting
API requests are subject to rate limiting to ensure fair usage and protect the system.
| Limit type | Limit | Window |
|---|---|---|
| Per-minute | 120 requests | Sliding 1-minute window |
| Per-hour | 5,000 requests | Fixed 1-hour window |
Rate limits are applied per Access Key. Both limits must be satisfied for a request to succeed.
Rate limit response
When you exceed the rate limit, you'll receive a 429 Too Many Requests response:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
Content-Type: application/json
{
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded for this access key. Please retry after the specified time.",
"retryAfterSeconds": 60
}
Rate limit headers
| Header | Description |
|---|---|
Retry-After | Seconds to wait before retrying |
Handling rate limits
Best practices: implement exponential backoff when retrying failed requests; respect the Retry-After header (wait the specified time before retrying); cache responses when possible to reduce request volume; use pagination efficiently (larger page sizes mean fewer requests); batch operations (use bulk endpoints where available); and monitor your usage (track requests to avoid hitting limits).
API versioning
The Concord eVault API is currently at version 1.0. The API version is not included in the URL path.
Versioning strategy
Backward-compatible changes: New fields, new endpoints, and new optional parameters are added without version changes. Breaking changes: Major version increments for breaking changes (rare). Deprecation notice: Minimum 6-month notice before removing any endpoint or field.
Backward-compatible changes (no version bump)
The following changes are considered backward compatible: adding new API endpoints; adding new optional request parameters; adding new response fields; adding new enum values; changing the order of response fields; adding new HTTP headers.
What constitutes a breaking change
Removing an endpoint; removing a request parameter; removing a response field; changing the type of an existing field; changing the meaning of an existing field; renaming fields or endpoints.
Deprecation policy
Announcement: Deprecated features are announced via release notes and documentation. Warning period: Deprecated features continue to work for at least 6 months. Documentation: Deprecated features are marked in documentation with migration guidance. Removal: After the warning period, features may be removed in a major version.
Common MIME types
| Extension | MIME type |
|---|---|
.pdf | application/pdf |
.doc | application/msword |
.docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.xls | application/vnd.ms-excel |
.xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.png | image/png |
.jpg | image/jpeg |
.tiff | image/tiff |
.xml | application/xml |
.csv | text/csv |
Note: The Draft Packages API only accepts PDF files (application/pdf).
Glossary
| Term | Definition |
|---|---|
| Access Key | API credential for authenticating requests to Concord eVault |
| Authoritative Copy | The legally binding, controlling version of an electronic document that has legal effect |
| Breadcrumb | The hierarchical path of folders from root to current location |
| Certified Print | A printed document with certification marks, timestamps, and audit information |
| Custody Chain | The documented sequence of custody and control of an electronic document |
| Draft Package | A package in preparation before being finalized into the vault |
| eVault | Electronic vault system for storing and managing authoritative copies of electronic records |
| ESIGN Act | Electronic Signatures in Global and National Commerce Act (US federal law) |
| Folder | A container for organizing packages in a hierarchical structure |
| GUID | Globally Unique Identifier — a 128-bit identifier used for resource IDs |
| Package | A collection of related documents stored as a single unit in the vault |
| Package File | An individual document within a package |
| Rate Limit | Maximum number of API requests allowed within a time window |
| Scope | Permission that controls what API endpoints an Access Key can access |
| UETA | Uniform Electronic Transactions Act (US state-level law for electronic transactions) |
| Vault | A secure storage container within an organization for electronic documents |
| Vault Field | Custom metadata field defined for a vault to capture business-specific information |
| Watermark | Visual indicator applied to downloaded documents indicating their type and authenticity |
| Workflow | A named group of packages that can span across folders |
Support
Getting help
| Channel | Contact | Use for |
|---|---|---|
| Technical Support | support@concordfinance.com | API issues, bug reports, technical questions |
| Account Management | Your account representative | Access Key requests, scope changes |
| Documentation | Your account representative | Documentation errors, improvement requests |
Reporting API issues
When reporting API issues, please include request information (full request URL without sensitive data, HTTP method, request headers excluding Authorization, request body if applicable), response information (HTTP status code, response body, the traceId from the error response), and context (what you were trying to accomplish, when the issue occurred, whether the issue is reproducible).
Example issue report
Subject: 500 Error on Package Search
Request:
POST /api/packages/search
Content-Type: application/json
{"query": "loan", "pageSize": 25}
Response:
HTTP 500
{
"title": "Internal Server Error",
"status": 500,
"traceId": "00-abc123def456-789ghi012-00"
}
Context:
Searching for packages containing "loan" in the name.
Issue occurs consistently since 2024-01-15 10:00 UTC.
Quick reference
Authentication header
Authorization: Bearer vv_live_your_access_key_here
Common request headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer {key} | Yes |
Content-Type | application/json | For POST/PATCH/PUT |
Accept | application/json | Optional |
Base URL pattern
https://instance.evault.com/api/{endpoint}
Scope quick reference
| Scope | Read | Write |
|---|---|---|
packages | Yes | Yes |
packages:read | Yes | |
packages:write | Yes | |
draft-packages | Yes | Yes |
draft-packages:read | Yes | |
draft-packages:write | Yes | |
folders | Yes | Yes |
folders:read | Yes | |
folders:write | Yes | |
workflows | Yes | Yes |
workflows:read | Yes | |
workflows:write | Yes | |
certified-prints | Yes | Yes |
certified-prints:read | Yes | |
certified-prints:write | Yes | |
vault-fields | Yes | |
vault-fields:read | Yes |
