API Documentation
Welcome to the SyncoCRM API. This documentation provides information about how to integrate with our system, authenticate requests, and manage resources programmatically.
Base URL
https://www.synco-crm.cz/api/v1
Authentication
All API requests require a Personal Access Token (PAT). You can generate your tokens in the system settings under the API section.
Request Header
Authorization: Bearer YOUR_API_TOKEN
Profile
Information about the currently authenticated user and the token being used.
/me
Retrieve details about the current user and the API token used for the request.
User Profile Object
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier of the user. |
| string | Email address. | |
| firstName | string | User's first name. |
| lastName | string | User's last name. |
| roles | array | List of assigned security roles. |
| tokenName | string | The name of the API token used for this request. |
Response Example
Status 200{
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe",
"roles": [
"ROLE_USER",
"ROLE_ADMIN"
],
"tokenName": "My Development Token"
}
Dictionaries
Access system-wide lookup data such as countries, currencies, units, and VAT rates.
/dictionaries/countries
Retrieve a list of all supported countries.
core:dictionary:read
Country Object
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| code | string | ISO 3166-1 alpha-2 code. |
| name | string | Localized country name. |
Response Example
Status 200[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "CZ",
"name": "Czech Republic"
}
]
/dictionaries/currencies
Retrieve a list of available currencies.
core:dictionary:read
Currency Object
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| code | string | ISO 4217 code. |
| name | string | Full name. |
| symbol | string | Symbol (e.g. Kč, €). |
Response Example
Status 200[
{
"id": "...",
"code": "CZK",
"name": "Czech Koruna",
"symbol": "Kč"
}
]
Customers
Manage your customer database, including individual contacts and companies.
/customers
Retrieve a list of all customers.
customer:read
Customer Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| name | string | Primary name. |
| string | Contact email. | |
| status | string | Current status. |
Response Example
Status 200[
{
"id": "...",
"name": "Acme Corp",
"status": "Active"
}
]
/customers/{id}
Retrieve detailed information about a specific customer.
customer:read
Customer Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| name | string | Primary name. |
| companyName | string | Legal company name. |
| identificationNumber | string | Company ID (IČO). |
| vatNumber | string | VAT number (DIČ). |
| billable | boolean | Invoicing eligibility. |
Response Example
Status 200{
"id": "...",
"name": "Acme Corp"
}
/customers
Create a new customer.
customer:write
Request Body
| Field | Type | Description |
|---|---|---|
| name | string | Required. |
| string | Primary email. |
Response Example
Status 201{
"id": "...",
"name": "New Customer"
}
/customers/{id}
Update a customer record.
customer:write
Request Body (Partial support)
| Field | Type | Description |
|---|---|---|
| name | string | Optional. |
| string | Optional. |
Response Example
Status 200{
"id": "...",
"name": "Updated Name"
}
/customers/{id}
Delete a customer record.
customer:write
Response Example
Status 204[]
Projects
Manage projects and track budgets.
/projects
Retrieve all projects.
project:read
Project Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| name | string | Project name. |
| code | string | Reference code. |
Response Example
Status 200[
{
"id": "...",
"name": "Website Redesign"
}
]
/projects/{id}
Detailed project information.
project:read
Project Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| name | string | Name. |
| budget | decimal | Project budget. |
Response Example
Status 200{
"id": "...",
"name": "Website Redesign"
}
/projects
Create a new project.
project:write
Request Body
| Field | Type | Description |
|---|---|---|
| customerId | uuid | Required. |
| name | string | Required. |
Response Example
Status 201{
"id": "...",
"name": "New Project"
}
/projects/{id}
Update project details.
project:write
Response Example
Status 200{
"id": "...",
"name": "Updated Project"
}
/projects/{id}
Delete a project.
project:write
Response Example
Status 204[]
Tasks
Manage tasks within projects.
/tasks
Retrieve tasks.
project:read
Task Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| title | string | Title. |
| priority | string | LOW, MEDIUM, HIGH, URGENT |
Response Example
Status 200[
{
"id": "...",
"title": "Setup Database"
}
]
/tasks/{id}
Detailed task info.
project:read
Response Example
Status 200{
"id": "...",
"title": "Setup Database"
}
/tasks
Create a new task.
project:write
Request Body
| Field | Type | Description |
|---|---|---|
| projectId | uuid | Required. |
| title | string | Required. |
Response Example
Status 201{
"id": "...",
"title": "New Task"
}
/tasks/{id}
Update task details.
project:write
Response Example
Status 200{
"id": "...",
"title": "Updated Task"
}
/tasks/{id}
Delete a task.
project:write
Response Example
Status 204[]
Price Quotes
Manage price quotes for potential or existing customers.
/price-quotes
Retrieve all price quotes.
price:quote:read
Price Quote Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| number | string | Quote number. |
| totalNet | decimal | Total without VAT. |
Response Example
Status 200[
{
"id": "...",
"number": "PQ-2024001"
}
]
/price-quotes/{id}
Detailed quote information.
price:quote:read
Response Example
Status 200{
"id": "...",
"number": "PQ-2024001"
}
/price-quotes
Create a new price quote.
price:quote:write
Request Body
| Field | Type | Description |
|---|---|---|
| customerId | uuid | Required. |
| items | array | List of quote items. |
Response Example
Status 201{
"id": "...",
"number": "PQ-2024002"
}
/price-quotes/{id}
Update quote details.
price:quote:write
Response Example
Status 200{
"id": "...",
"totalNet": "100.00"
}
/price-quotes/{id}
Delete a price quote.
price:quote:write
Response Example
Status 204[]
Invoices
Manage invoices and billing.
/invoices
Retrieve all invoices.
invoicing:read
Invoice Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| number | string | Invoice number. |
| total | decimal | Total amount. |
Response Example
Status 200[
{
"id": "...",
"number": "2024001"
}
]
/invoices/{id}
Detailed invoice info.
invoicing:read
Response Example
Status 200{
"id": "...",
"number": "2024001"
}
/invoices
Create a new invoice.
invoicing:write
Response Example
Status 201{
"id": "...",
"number": "2024002"
}
/invoices/{id}
Update an invoice (if not locked).
invoicing:write
Response Example
Status 200{
"id": "...",
"total": "500.00"
}
/invoices/{id}
Delete an invoice (if not locked).
invoicing:write
Response Example
Status 204[]
Time Tracking
Track time entries for projects and tasks.
/time-entries
Retrieve time entries.
time:tracking:read
Time Entry Resource
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique identifier. |
| userName | string | User who logged the time. |
| duration | integer | Duration in seconds. |
| date | date | Logged date. |
Response Example
Status 200[
{
"id": "...",
"userName": "John Doe",
"duration": 3600
}
]
/time-entries
Create a new time entry.
time:tracking:write
Request Body
| Field | Type | Description |
|---|---|---|
| projectId | uuid | Required. |
| taskId | uuid | Optional. |
| duration | integer | Required. Seconds. |
| date | date | Required. |
Response Example
Status 201{
"id": "...",
"duration": 3600
}
/time-entries/{id}
Update a time entry.
time:tracking:write
Response Example
Status 200{
"id": "...",
"duration": 7200
}
/time-entries/{id}
Delete a time entry.
time:tracking:write
Response Example
Status 204[]