Skip to main content

Distributors

Distributors are entities that create and upload artifacts into the lake. They use ramps to drop artifacts.

Who Can Be a Distributor?

Anyone who creates documents and wants to distribute them through Docyard:
TypeExample
Insurance CarriersUpload declaration pages, endorsements
PlatformsHarmony, SAM - upload on behalf of carriers
Title CompaniesUpload closing documents, deeds
Healthcare ProvidersUpload EOBs, lab results
Government AgenciesUpload permits, certificates

Distributor Onboarding

Step 1: Sign Up

Provide basic information:
{
  "organization_name": "Acme Insurance",
  "business_email": "[email protected]",
  "industry": "insurance",
  "website": "https://acme-insurance.com"
}

Step 2: Business Verification

Submit verification documents:
  • Business license
  • Tax ID / EIN
  • Proof of address
  • Industry-specific credentials (if applicable)

Step 3: Ramp Setup

Create your ramp for uploading artifacts:
POST /api/v1/ramps
{
  "name": "Production Ramp",
  "description": "Main upload endpoint"
}

Step 4: Receive Credentials

Get API keys for authentication:
{
  "ramp_id": "ramp-abc123",
  "api_key": "dk_live_xxxxxxxxxxxx",
  "api_secret": "dk_secret_xxxxxxxxxxxx"
}

Distributor Workflow

1. Create Artifact Type Templates

Before uploading, create or select artifact type templates:
POST /api/v1/templates
{
  "name": "Acme Declaration Page",
  "description": "Our standard declaration page format",
  "locks": [
    {
      "name": "policy_number",
      "data_type": "string",
      "weight": 20,
      "required": true
    },
    {
      "name": "effective_date",
      "data_type": "date",
      "weight": 10,
      "required": true
    }
  ]
}

2. Upload Artifacts

Use your ramp to upload:
POST /api/v1/ramp/artifacts
{
  "template_id": "uuid-of-template",
  "locks": {
    "policy_number": { "value": "POL-12345678" },
    "effective_date": { "value": "2026-03-15" }
  },
  "threshold": 20,
  "content": "<pdf-data>"
}

3. Monitor & Manage

Track your artifacts:
GET /api/v1/ramp/artifacts?status=active&limit=100
{
  "artifacts": [
    {
      "id": "art-abc123",
      "template": "Acme Declaration Page",
      "locks": { "policy_number": "POL-12345678" },
      "status": "active",
      "created_at": "2026-03-15T10:30:00Z"
    }
  ]
}

4. Revoke if Needed

Remove access to specific artifacts:
DELETE /api/v1/ramp/artifacts/art-abc123

Distributor Responsibilities

Access Control Design

Distributors define:
  1. Which lock types to use - Choose relevant metadata fields
  2. Weight assignments - How important is each lock
  3. Threshold scores - How hard should it be to access

Example Weight Strategies

High Security:
{
  "locks": {
    "policy_number": { "weight": 30 },
    "effective_date": { "weight": 20 },
    "mortgagee_name": { "weight": 10 }
  },
  "threshold": 50
}
Requires multiple strong keys. Easy Access:
{
  "locks": {
    "policy_number": { "weight": 40 }
  },
  "threshold": 20
}
Single key grants access.

Consistency

Use artifact type templates to ensure:
  • All declaration pages have the same locks
  • Lock names are consistent across uploads
  • Weights follow your security policy

Platform Distributors

Platforms like Harmony act as distributors on behalf of multiple carriers.

How It Works

  1. Platform creates one ramp
  2. Each carrier configures their templates
  3. Platform uploads artifacts with carrier-specific locks

Example

Platform Ramp: ramp-harmony-001

Carrier: Acme Insurance
└── Template: "Acme Declaration"
    └── Locks: policy_number, effective_date

Carrier: Best Insurance
└── Template: "Best Declaration"
    └── Locks: policy_id, effective_dt, insured_name
The platform doesn’t need separate ramps per carrier - they all use the same ramp with different templates.

Authentication

Distributors authenticate using API keys:
curl -X POST https://api.docyard.io/v1/ramp/artifacts \
  -H "X-API-Key: dk_live_xxxxxxxxxxxx" \
  -H "X-API-Secret: dk_secret_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Key Rotation

Rotate keys regularly for security:
POST /api/v1/ramps/ramp-abc123/rotate-keys
{
  "new_api_key": "dk_live_yyyyyyyyyyyy",
  "new_api_secret": "dk_secret_yyyyyyyyyyyy",
  "old_key_expires_at": "2026-03-16T10:30:00Z"
}

Rate Limits

ActionLimit
Upload (single)100/minute
Upload (batch)10 batches/minute
List artifacts300/minute
Revoke artifacts50/minute

Audit Trail

All distributor actions are logged:
{
  "event": "artifact_uploaded",
  "ramp_id": "ramp-abc123",
  "distributor_id": "dist-xyz789",
  "artifact_id": "art-123abc",
  "timestamp": "2026-03-15T10:30:00Z",
  "locks": { "policy_number": "POL-12345678" }
}

Next Steps