Dashly Docs

Contracts

`/contracts` - read-only

List contracts

GET
/contracts

One page of records, newest first unless you say otherwise, with the total count in meta so you know how far to paginate.

Required scope: contracts:read.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Your agency's API key: Authorization: Bearer ak_…. Created in Connectors → API & webhooks and shown once. A key authenticates an agency, not a person.

Query Parameters

page?integer

1-based. meta.totalPages says how many there are.

Range1 <= value
Default1
per_page?integer

Rows per page. A value above 200 returns 400 - never a silent clamp.

Range1 <= value <= 200
Default50
sort?string

Prefix with - for descending. An undeclared sort returns 400.

Default"-acceptedAt"
Value in"acceptedAt""-acceptedAt""title""-title"
q?string

Case-insensitive "contains", across: title.

filter[status]?string

Exact match on status.

Value in"draft""sent""viewed""accepted""declined""paid"
filter[clientId]?string

Exact match on clientId.

filter[dealId]?string

Exact match on dealId.

filter[projectId]?string

Exact match on projectId.

Response Body

The requested page.

application/json
  1. response
data*array<>
meta*
Example Request
curl -X GET 'https://api.usedashly.com/v1/contracts'
Example Response
{  "data": [    {      "id": "string",      "title": "string",      "version": 0,      "status": "draft",      "acceptedAt": "2019-08-24T14:15:22Z",      "clientId": "string",      "dealId": "string",      "projectId": "string",      "amountCents": 0,      "currency": "string",      "forfaitType": "monthly",      "forfaitMinutes": 0,      "recurrence": "monthly",      "locale": "string",      "state": "string",      "acceptedBy": "string",      "acceptedByName": "string",      "clientName": "string",      "dealName": "string",      "projectName": "string"    }  ],  "meta": {    "page": 0,    "perPage": 0,    "total": 0,    "totalPages": 0  }}

Retrieve a contract

GET
/contracts/{id}

The full record, custom fields included when the resource carries them. A record from another agency is a 404, not a 403 - its existence is not ours to confirm.

Required scope: contracts:read.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Your agency's API key: Authorization: Bearer ak_…. Created in Connectors → API & webhooks and shown once. A key authenticates an agency, not a person.

Path Parameters

id*string

The record's public id (hsbftmp3f5), as returned in the id field. An internal UUID returns 404.

Response Body

Found.

application/json
  1. response
data*
Example Request
curl -X GET 'https://api.usedashly.com/v1/contracts/string'
Example Response
{  "data": {    "id": "string",    "title": "string",    "version": 0,    "status": "draft",    "acceptedAt": "2019-08-24T14:15:22Z",    "clientId": "string",    "dealId": "string",    "projectId": "string",    "amountCents": 0,    "currency": "string",    "forfaitType": "monthly",    "forfaitMinutes": 0,    "recurrence": "monthly",    "locale": "string",    "state": "string",    "acceptedBy": "string",    "acceptedByName": "string",    "clientName": "string",    "dealName": "string",    "projectName": "string"  }}

List available actions

GET
/contracts/actions

Every verb this resource answers to, with its target and the JSON Schema of its body - the same contracts this document describes, readable at runtime.

Required scope: contracts:read.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Your agency's API key: Authorization: Bearer ak_…. Created in Connectors → API & webhooks and shown once. A key authenticates an agency, not a person.

Response Body

The available verbs.

application/json
  1. response
data*array<>
Example Request
curl -X GET 'https://api.usedashly.com/v1/contracts/actions'
Example Response
{  "data": [    {      "name": "string",      "label": "string",      "description": "string",      "target": "item",      "readOnly": true,      "path": "string",      "input": {}    }  ]}