/dashboards/crm/kpisGET /dashboards/crm/kpis
Requires features: dashboards.view
Responses
{}Example
curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/crm/kpis" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
Auto-generated OpenAPI definition for all enabled modules.
/dashboards/crm/kpisRequires features: dashboards.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/crm/kpis" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/admin/navReturns the backend navigation tree available to the authenticated administrator after applying role and personal sidebar preferences.
{
"groups": [
{
"id": "string",
"name": "string",
"defaultName": "string",
"items": [
{
"href": "string",
"title": "string",
"defaultTitle": "string",
"enabled": true
}
]
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/admin/nav" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/feature-checkEvaluates which of the requested features are available to the signed-in user within the active tenant / organization context.
{
"features": [
"string"
]
}{
"ok": true,
"granted": [
"string"
],
"userId": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/feature-check" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"features\": [
\"string\"
]
}"/auth/featuresReturns all static features contributed by the enabled modules along with their module source. Requires features: auth.acl.manage
{
"items": [
{
"id": "string",
"title": "string",
"module": "string"
}
],
"modules": [
{
"id": "string",
"title": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/features" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/locale{}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/locale" \ -H "Accept: application/json"
/auth/locale{}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/locale" \ -H "Accept: application/json"
/auth/loginValidates the submitted credentials and issues a bearer token cookie for subsequent API calls.
email=user%40example.com&password=string
{
"ok": true,
"token": "string",
"redirect": null
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/login" \ -H "Accept: application/json" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "email=user%40example.com&password=string"
/auth/logoutFor convenience, the GET variant performs the same logout logic as POST and issues a redirect.
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/logout" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/logoutClears authentication cookies and redirects the browser to the login page.
{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/logout" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/profileReturns the email address for the signed-in user.
{
"email": "user@example.com",
"roles": [
"string"
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/profile" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/profileUpdates the email address or password for the signed-in user.
{}{
"ok": true,
"email": "user@example.com"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/profile" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/auth/resetRequests a password reset email for the given account. The endpoint always returns `ok: true` to avoid leaking account existence.
email=user%40example.com
{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/reset" \ -H "Accept: application/json" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "email=user%40example.com"
/auth/reset/confirmValidates the reset token and updates the user password.
token=string&password=string
{
"ok": true,
"redirect": "string"
}{
"ok": false,
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/reset/confirm" \ -H "Accept: application/json" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "token=string&password=string"
/auth/rolesReturns available roles within the current tenant. Super administrators receive visibility across tenants. Requires features: auth.roles.list
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| tenantId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"usersCount": 1,
"tenantId": null,
"tenantName": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/roles?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/rolesCreates a new role for the current tenant or globally when `tenantId` is omitted. Requires features: auth.roles.manage
{
"name": "string",
"tenantId": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/roles" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"tenantId\": null
}"/auth/rolesUpdates mutable fields on an existing role. Requires features: auth.roles.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"tenantId": null
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/roles" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": null
}"/auth/rolesDeletes a role by identifier. Fails when users remain assigned. Requires features: auth.roles.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Role identifier |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/auth/roles?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/roles/aclReturns the feature and organization assignments associated with a role within the current tenant. Requires features: auth.acl.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| roleId | query | Yes | string | — |
| tenantId | query | No | string | — |
{
"isSuperAdmin": true,
"features": [
"string"
],
"organizations": null
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/roles/acl?roleId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/roles/aclReplaces the feature list, super admin flag, and optional organization assignments for a role. Requires features: auth.acl.manage
{
"roleId": "00000000-0000-4000-8000-000000000000",
"organizations": null
}{
"ok": true,
"sanitized": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/roles/acl" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"roleId\": \"00000000-0000-4000-8000-000000000000\",
\"organizations\": null
}"/auth/session/refreshExchanges an existing `session_token` cookie for a fresh JWT auth cookie and redirects the browser.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| redirect | query | No | string | Absolute or relative URL to redirect after refresh |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/session/refresh" \ -H "Accept: application/json"
/auth/session/refreshExchanges a refresh token for a new JWT access token. Pass the refresh token obtained from login in the request body.
{
"refreshToken": "string"
}{
"ok": true,
"accessToken": "string",
"expiresIn": 1
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/session/refresh" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"refreshToken\": \"string\"
}"/auth/sidebar/preferencesReturns personal sidebar customization and any role-level preferences the user can manage.
{
"locale": "string",
"settings": {
"version": 1,
"groupOrder": [
"string"
],
"groupLabels": {
"key": "string"
},
"itemLabels": {
"key": "string"
},
"hiddenItems": [
"string"
]
},
"canApplyToRoles": true,
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"hasPreference": true
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/sidebar/preferences" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/sidebar/preferencesUpdates personal sidebar configuration and, optionally, applies the same settings to selected roles.
{}{
"locale": "string",
"settings": {
"version": 1,
"groupOrder": [
"string"
],
"groupLabels": {
"key": "string"
},
"itemLabels": {
"key": "string"
},
"hiddenItems": [
"string"
]
},
"canApplyToRoles": true,
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"hasPreference": true
}
],
"appliedRoles": [
"00000000-0000-4000-8000-000000000000"
],
"clearedRoles": [
"00000000-0000-4000-8000-000000000000"
]
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/sidebar/preferences" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/auth/usersReturns users for the current tenant. Super administrators may scope the response via organization or role filters. Requires features: auth.users.list
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| organizationId | query | No | string | — |
| roleIds | query | No | array | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"organizationId": null,
"organizationName": null,
"tenantId": null,
"tenantName": null,
"roles": [
"string"
]
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/users?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/usersCreates a new confirmed user within the specified organization and optional roles. Requires features: auth.users.create
{
"email": "user@example.com",
"password": "string",
"organizationId": "00000000-0000-4000-8000-000000000000"
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/auth/users" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"password\": \"string\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\"
}"/auth/usersUpdates profile fields, organization assignment, credentials, or role memberships. Requires features: auth.users.edit
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/users" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/auth/usersDeletes a user by identifier. Undo support is provided via the command bus. Requires features: auth.users.delete
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | User identifier |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/auth/users?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/users/aclReturns custom ACL overrides for a user within the current tenant, if any. Requires features: auth.acl.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| userId | query | Yes | string | — |
{
"hasCustomAcl": true,
"isSuperAdmin": true,
"features": [
"string"
],
"organizations": null
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/users/acl?userId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/auth/users/aclConfigures per-user ACL overrides, including super admin access, feature list, and organization scope. Requires features: auth.acl.manage
{
"userId": "00000000-0000-4000-8000-000000000000",
"organizations": null
}{
"ok": true,
"sanitized": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/auth/users/acl" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"userId\": \"00000000-0000-4000-8000-000000000000\",
\"organizations\": null
}"/directory/organizations/lookup{}curl -X GET "https://crm.rsmotoconcierge.pl/api/directory/organizations/lookup" \ -H "Accept: application/json"
/directory/tenants/lookup{}curl -X GET "https://crm.rsmotoconcierge.pl/api/directory/tenants/lookup" \ -H "Accept: application/json"
/customer_signals/signalsRequires features: customer_signals.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_signals/signals" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customer_signals/signalsRequires features: customer_signals.ingest
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_signals/signals" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/casesReturns a paginated collection of cases scoped to the authenticated organization. Requires features: cases.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| search | query | No | string | — |
| statusValue | query | No | string | — |
| ownerUserId | query | No | string | — |
| customerEntityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"statusValue": "string",
"statusLabel": null,
"statusColor": null,
"customerEntityId": "00000000-0000-4000-8000-000000000000",
"customerDisplayName": null,
"procedureDisplayLabel": null,
"resourceId": null,
"procurementProcessId": null,
"insurancePolicyId": null,
"ownerUserId": null,
"openedAt": null,
"closedAt": null,
"priority": "string",
"metadata": null,
"createdAt": null,
"updatedAt": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/cases?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/casesCreates a customer service case. Requires features: cases.create
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"statusValue": "open",
"statusLabel": null,
"statusColor": null,
"customerEntityId": "00000000-0000-4000-8000-000000000000",
"resourceId": null,
"procurementProcessId": null,
"insurancePolicyId": null,
"ownerUserId": null,
"playbookId": null,
"priority": "normal",
"metadata": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/cases" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"statusValue\": \"open\",
\"statusLabel\": null,
\"statusColor\": null,
\"customerEntityId\": \"00000000-0000-4000-8000-000000000000\",
\"resourceId\": null,
\"procurementProcessId\": null,
\"insurancePolicyId\": null,
\"ownerUserId\": null,
\"playbookId\": null,
\"priority\": \"normal\",
\"metadata\": null
}"/casesUpdates a case. Requires features: cases.edit
{
"id": "00000000-0000-4000-8000-000000000000",
"statusLabel": null,
"statusColor": null,
"resourceId": null,
"procurementProcessId": null,
"insurancePolicyId": null,
"ownerUserId": null,
"openedAt": null,
"closedAt": null,
"metadata": null,
"closingNote": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/cases" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"statusLabel\": null,
\"statusColor\": null,
\"resourceId\": null,
\"procurementProcessId\": null,
\"insurancePolicyId\": null,
\"ownerUserId\": null,
\"openedAt\": null,
\"closedAt\": null,
\"metadata\": null,
\"closingNote\": null
}"/casesSoft-deletes a case. Requires features: cases.delete
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/cases" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/cases/{caseId}/messagesRequires features: cases.view, messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/cases/:caseId/messages" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/procedureRequires features: cases.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/cases/:caseId/procedure" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/procedureRequires features: cases.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/cases/:caseId/procedure" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/procedure-tasks/{taskId}Requires features: cases.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
| taskId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/cases/:caseId/procedure-tasks/:taskId" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/procedure-tasks/{taskId}Requires features: cases.edit
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
| taskId | path | Yes | string | — |
{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/cases/:caseId/procedure-tasks/:taskId" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/timelineRequires features: cases.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/cases/:caseId/timeline" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/cases/{caseId}/timelineRequires features: cases.edit
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| caseId | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/cases/:caseId/timeline" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/playbooksReturns a paginated collection of playbooks scoped to the authenticated organization. Requires features: playbooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| search | query | No | string | — |
| slug | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"title": "string",
"body": "string",
"contextTags": [
"string"
],
"audience": "string",
"version": 1,
"publishedAt": null,
"isActive": true,
"createdAt": null,
"updatedAt": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/playbooks?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/playbooksCreates a playbook. Requires features: playbooks.create
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"title": "string",
"body": "string",
"contextTags": [],
"procedureDefinition": [],
"audience": "internal",
"version": 0,
"publishedAt": null,
"isActive": true
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/playbooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"slug\": \"string\",
\"title\": \"string\",
\"body\": \"string\",
\"contextTags\": [],
\"procedureDefinition\": [],
\"audience\": \"internal\",
\"version\": 0,
\"publishedAt\": null,
\"isActive\": true
}"/playbooksUpdates a playbook. Requires features: playbooks.edit
{
"id": "00000000-0000-4000-8000-000000000000",
"publishedAt": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/playbooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"publishedAt\": null
}"/playbooksSoft-deletes a playbook. Requires features: playbooks.delete
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/playbooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/playbooks/dictionaries/procedure-statusRequires features: playbooks.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/playbooks/dictionaries/procedure-status" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/playbooks/matchRequires features: playbooks.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/playbooks/match" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/partner_programs/programsReturns a paginated collection of partner programs scoped to the authenticated organization. Requires features: partner_programs.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| search | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "string",
"organizationId": "string",
"tenantId": "string",
"name": "string",
"description": null,
"validFrom": null,
"validTo": null,
"isActive": true,
"metadata": null,
"createdAt": null,
"updatedAt": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/partner_programs/programs?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/partner_programs/programsCreates a partner program for the current organization. Requires features: partner_programs.create
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null,
"validFrom": null,
"validTo": null,
"isActive": true,
"metadata": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/partner_programs/programs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"description\": null,
\"validFrom\": null,
\"validTo\": null,
\"isActive\": true,
\"metadata\": null
}"/partner_programs/programsUpdates a partner program. Requires features: partner_programs.edit
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"validFrom": null,
"validTo": null,
"metadata": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/partner_programs/programs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"validFrom\": null,
\"validTo\": null,
\"metadata\": null
}"/partner_programs/programsSoft-deletes a partner program. Requires features: partner_programs.delete
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/partner_programs/programs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/partner_programs/programs/{programId}/membershipsRequires features: partner_programs.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| programId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/partner_programs/programs/:programId/memberships" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/partner_programs/programs/{programId}/membershipsRequires features: partner_programs.manage_memberships
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| programId | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/partner_programs/programs/:programId/memberships" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/partner_programs/programs/{programId}/membershipsRequires features: partner_programs.manage_memberships
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| programId | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/partner_programs/programs/:programId/memberships" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/insurance/config-insurer-status{}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/config-insurer-status" \ -H "Accept: application/json"
/insurance/config-insurer-status{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/config-insurer-status" \ -H "Accept: application/json"
/insurance/config-lead-status{}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/config-lead-status" \ -H "Accept: application/json"
/insurance/config-lead-status{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/config-lead-status" \ -H "Accept: application/json"
/insurance/config-policy-list-color-rules{}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/config-policy-list-color-rules" \ -H "Accept: application/json"
/insurance/config-policy-list-color-rules{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/config-policy-list-color-rules" \ -H "Accept: application/json"
/insurance/config-policy-status{}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/config-policy-status" \ -H "Accept: application/json"
/insurance/config-policy-status{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/config-policy-status" \ -H "Accept: application/json"
/insurance/config-protection-catalog{}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/config-protection-catalog" \ -H "Accept: application/json"
/insurance/config-protection-catalog{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/config-protection-catalog" \ -H "Accept: application/json"
/insurance/insurer-contactsReturns a paginated collection of insurer contacts scoped to the authenticated organization. Requires features: insurance.insurer_contacts.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| insurerId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| isActive | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"insurerId": "string",
"fullName": "string",
"email": null,
"phone": null,
"role": null,
"isDefault": true,
"isActive": true,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/insurer-contacts?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/insurance/insurer-contactsCreates a contact person for an insurer. Requires features: insurance.insurer_contacts.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"insurerId": "00000000-0000-4000-8000-000000000000",
"fullName": "string",
"email": null,
"phone": null,
"role": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/insurer-contacts" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"insurerId\": \"00000000-0000-4000-8000-000000000000\",
\"fullName\": \"string\",
\"email\": null,
\"phone\": null,
\"role\": null
}"/insurance/insurer-contactsUpdates an insurer contact. Requires features: insurance.insurer_contacts.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"email": null,
"phone": null,
"role": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/insurer-contacts" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"email\": null,
\"phone\": null,
\"role\": null
}"/insurance/insurer-contactsSoft-deletes an insurer contact. Requires features: insurance.insurer_contacts.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/insurance/insurer-contacts" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/insurance/insurersReturns a paginated collection of insurers scoped to the authenticated organization. Requires features: insurance.insurers.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| isActive | query | No | string | — |
| status | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"code": "string",
"name": "string",
"description": null,
"status": "string",
"isActive": true,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/insurers?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/insurance/insurersCreates an insurer (insurance company dictionary entry). Requires features: insurance.insurers.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"code": "string",
"name": "string",
"description": null,
"metadata": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/insurers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"code\": \"string\",
\"name\": \"string\",
\"description\": null,
\"metadata\": null
}"/insurance/insurersUpdates an insurer. Requires features: insurance.insurers.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"metadata": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/insurers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"metadata\": null
}"/insurance/insurersSoft-deletes an insurer. Requires features: insurance.insurers.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/insurance/insurers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/insurance/leadsReturns a paginated collection of leads scoped to the authenticated organization. Requires features: insurance.leads.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| status | query | No | string | — |
| source | query | No | string | — |
| externalId | query | No | string | — |
| unlinkedOnly | query | No | boolean | — |
| linkedPolicyId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"title": "string",
"status": "string",
"source": null,
"externalId": null,
"payload": null,
"referringPartnerEntityId": null,
"linkedPolicyId": null,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/leads?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/insurance/leadsCreates an insurance lead / inquiry record (ingestible from external APIs). Requires features: insurance.leads.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"source": null,
"externalId": null,
"payload": null,
"referringPartnerEntityId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/leads" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"source\": null,
\"externalId\": null,
\"payload\": null,
\"referringPartnerEntityId\": null
}"/insurance/leadsUpdates a lead. Requires features: insurance.leads.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"source": null,
"externalId": null,
"payload": null,
"referringPartnerEntityId": null,
"linkedPolicyId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/leads" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"source\": null,
\"externalId\": null,
\"payload\": null,
\"referringPartnerEntityId\": null,
\"linkedPolicyId\": null
}"/insurance/leadsSoft-deletes a lead. Requires features: insurance.leads.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/insurance/leads" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/insurance/leads/{id}/attachmentsEither send `multipart/form-data` with `file` (optional `tags` JSON string), or `application/json` with `sourceUrl` and optional `fileName`. Requires features: insurance.leads.manage, attachments.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"file": "string"
}{
"ok": true,
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"url": "string",
"fileName": "string",
"fileSize": 1,
"content": null
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/leads/:id/attachments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: multipart/form-data | application/json" \
-d "{
\"file\": \"string\"
}"/insurance/policiesReturns a paginated collection of policies scoped to the authenticated organization. Requires features: insurance.policies.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| insurerId | query | No | string | — |
| referringPartnerEntityId | query | No | string | — |
| customerEntityId | query | No | string | — |
| resourceId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"policyNumber": "string",
"insurerId": "string",
"insurerContactId": null,
"caretakerUserId": null,
"referringPartnerEntityId": null,
"catalogProductId": null,
"resourceId": null,
"insuredPersonEntityId": null,
"insuredCompanyEntityId": null,
"validFrom": null,
"validTo": null,
"status": null,
"metadata": null,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/insurance/policies?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/insurance/policiesCreates an insurance policy record. Requires features: insurance.policies.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"policyNumber": "string",
"insurerId": "00000000-0000-4000-8000-000000000000",
"insurerContactId": null,
"caretakerUserId": "00000000-0000-4000-8000-000000000000",
"referringPartnerEntityId": null,
"catalogProductId": null,
"resourceId": null,
"insuredPersonEntityId": null,
"insuredCompanyEntityId": null,
"validFrom": null,
"validTo": null,
"status": "string",
"metadata": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/policies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"policyNumber\": \"string\",
\"insurerId\": \"00000000-0000-4000-8000-000000000000\",
\"insurerContactId\": null,
\"caretakerUserId\": \"00000000-0000-4000-8000-000000000000\",
\"referringPartnerEntityId\": null,
\"catalogProductId\": null,
\"resourceId\": null,
\"insuredPersonEntityId\": null,
\"insuredCompanyEntityId\": null,
\"validFrom\": null,
\"validTo\": null,
\"status\": \"string\",
\"metadata\": null
}"/insurance/policiesUpdates a policy. Requires features: insurance.policies.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"insurerContactId": null,
"referringPartnerEntityId": null,
"catalogProductId": null,
"resourceId": null,
"insuredPersonEntityId": null,
"insuredCompanyEntityId": null,
"validFrom": null,
"validTo": null,
"metadata": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/insurance/policies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"insurerContactId\": null,
\"referringPartnerEntityId\": null,
\"catalogProductId\": null,
\"resourceId\": null,
\"insuredPersonEntityId\": null,
\"insuredCompanyEntityId\": null,
\"validFrom\": null,
\"validTo\": null,
\"metadata\": null
}"/insurance/policiesSoft-deletes a policy. Requires features: insurance.policies.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/insurance/policies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/audit_logs/audit-logs/accessFetches paginated access audit logs scoped to the authenticated user. Tenant administrators can optionally expand the search to other actors or organizations. Requires features: audit_logs.view_self
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| organizationId | query | No | string | Limit results to a specific organization |
| actorUserId | query | No | string | Filter by actor user id (tenant administrators only) |
| resourceKind | query | No | string | Restrict to a resource kind such as `order` or `product` |
| accessType | query | No | string | Access type filter, e.g. `read` or `export` |
| page | query | No | string | Page number (default 1) |
| pageSize | query | No | string | Page size (default 50) |
| limit | query | No | string | Explicit maximum number of records when paginating manually |
| before | query | No | string | Return logs created before this ISO-8601 timestamp |
| after | query | No | string | Return logs created after this ISO-8601 timestamp |
{
"items": [
{
"id": "string",
"resourceKind": "string",
"resourceId": "string",
"accessType": "string",
"actorUserId": null,
"actorUserName": null,
"tenantId": null,
"tenantName": null,
"organizationId": null,
"organizationName": null,
"fields": [
"string"
],
"context": null,
"createdAt": "string"
}
],
"canViewTenant": true,
"page": 1,
"pageSize": 1,
"total": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/audit_logs/audit-logs/access" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/audit_logs/audit-logs/actionsReturns recent action audit log entries. Tenant administrators can widen the scope to other actors or organizations, and callers can optionally restrict results to undoable actions. Requires features: audit_logs.view_self
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| organizationId | query | No | string | Limit results to a specific organization |
| actorUserId | query | No | string | Filter logs created by a specific actor (tenant administrators only) |
| resourceKind | query | No | string | Filter by resource kind (e.g., "order", "product") |
| resourceId | query | No | string | Filter by resource ID (UUID of the specific record) |
| includeRelated | query | No | string | When `true`, also returns changes to child entities linked via parentResourceKind/parentResourceId |
| undoableOnly | query | No | string | When `true`, only undoable actions are returned |
| limit | query | No | string | Maximum number of records to return (default 50) |
| before | query | No | string | Return actions created before this ISO-8601 timestamp |
| after | query | No | string | Return actions created after this ISO-8601 timestamp |
{
"items": [
{
"id": "string",
"commandId": "string",
"actionLabel": null,
"executionState": "done",
"actorUserId": null,
"actorUserName": null,
"tenantId": null,
"tenantName": null,
"organizationId": null,
"organizationName": null,
"resourceKind": null,
"resourceId": null,
"parentResourceKind": null,
"parentResourceId": null,
"undoToken": null,
"createdAt": "string",
"updatedAt": "string",
"snapshotBefore": null,
"snapshotAfter": null,
"changes": null,
"context": null
}
],
"canViewTenant": true
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/audit_logs/audit-logs/actions?includeRelated=false&undoableOnly=false" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/audit_logs/audit-logs/actions/redoRedoes the latest undone command owned by the caller. Requires the action to still be eligible for redo within tenant and organization scope. Requires features: audit_logs.redo_self
{
"logId": "string"
}{
"ok": true,
"logId": null,
"undoToken": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/audit_logs/audit-logs/actions/redo" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"logId\": \"string\"
}"/audit_logs/audit-logs/actions/undoReplays the undo handler registered for a command. The provided undo token must match the latest undoable log entry accessible to the caller. Requires features: audit_logs.undo_self
{
"undoToken": "string"
}{
"ok": true,
"logId": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/audit_logs/audit-logs/actions/undo" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"undoToken\": \"string\"
}"/attachmentsReturns uploaded attachments for the given entity record, ordered by newest first. Requires features: attachments.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | Yes | string | Entity identifier that owns the attachments |
| recordId | query | Yes | string | Record identifier within the entity |
{
"items": [
{
"id": "string",
"url": "string",
"fileName": "string",
"fileSize": 1,
"createdAt": "string",
"mimeType": null,
"content": null
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments?entityId=string&recordId=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachmentsUploads a new attachment using multipart form-data and stores metadata for later retrieval. Requires features: attachments.manage
entityId=string recordId=string file=string
{
"ok": true,
"item": {
"id": "string",
"url": "string",
"fileName": "string",
"fileSize": 1,
"content": null
}
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/attachments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: multipart/form-data" \
-d "{
\"entityId\": \"string\",
\"recordId\": \"string\",
\"file\": \"string\"
}"/attachmentsRemoves an uploaded attachment and deletes the stored asset. Requires features: attachments.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | — |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/attachments?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/file/{id}Returns the raw file content for an attachment. Path parameter: {id} - Attachment UUID. Query parameter: ?download=1 - Force file download with Content-Disposition header. Access control is enforced based on partition settings.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
"string"
{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments/file/:id" \ -H "Accept: application/json"
/attachments/image/{id}/{slug}Returns an image attachment with optional on-the-fly resizing and cropping. Resized images are cached for performance. Only works with image MIME types. Path parameter: {id} - Attachment UUID. Query parameters: ?width=N (1-4000 pixels), ?height=N (1-4000 pixels), ?cropType=cover|contain (resize behavior).
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| slug | path | No | string | — |
"string"
{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments/image/:id/:slug" \ -H "Accept: application/json"
/attachments/libraryReturns paginated list of attachments with optional filtering by search term, partition, and tags. Includes available tags and partitions. Requires features: attachments.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | Page number for pagination |
| pageSize | query | No | number | Number of items per page (max 100) |
| search | query | No | string | Search by file name (case-insensitive) |
| partition | query | No | string | Filter by partition code |
| tags | query | No | string | Filter by tags (comma-separated) |
| sortField | query | No | string | Field to sort by |
| sortDir | query | No | string | Sort direction |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"fileSize": 1,
"mimeType": "string",
"partitionCode": "string",
"partitionTitle": null,
"url": null,
"createdAt": "string",
"tags": [
"string"
],
"assignments": [],
"content": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1,
"availableTags": [
"string"
],
"partitions": [
{
"code": "string",
"title": "string",
"description": null,
"isPublic": true
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments/library?page=1&pageSize=25" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/library/{id}Returns complete details of an attachment including metadata, tags, assignments, and custom fields. Requires features: attachments.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"fileSize": 1,
"mimeType": "string",
"partitionCode": "string",
"partitionTitle": null,
"tags": [
"string"
],
"assignments": [],
"content": null,
"customFields": null
}
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments/library/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/library/{id}Updates attachment tags, assignments, and custom fields. Emits CRUD side effects for indexing and events. Requires features: attachments.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/attachments/library/:id" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/attachments/library/{id}Permanently deletes an attachment file from storage and database. Emits CRUD side effects. Requires features: attachments.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/attachments/library/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/partitionsReturns all configured attachment partitions with storage settings, OCR configuration, and access control settings. Requires features: attachments.manage
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string",
"description": null,
"isPublic": true,
"requiresOcr": true,
"ocrModel": null,
"createdAt": null,
"updatedAt": null,
"envKey": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/attachments/partitions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/partitionsCreates a new attachment partition with specified storage and OCR settings. Requires unique partition code. Requires features: attachments.manage
{
"code": "string",
"title": "string",
"description": null,
"ocrModel": null
}{
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string",
"description": null,
"isPublic": true,
"requiresOcr": true,
"ocrModel": null,
"createdAt": null,
"updatedAt": null,
"envKey": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/attachments/partitions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"code\": \"string\",
\"title\": \"string\",
\"description\": null,
\"ocrModel\": null
}"/attachments/partitionsUpdates an existing partition. Partition code cannot be changed. Title, description, OCR settings, and access control can be modified. Requires features: attachments.manage
{
"code": "string",
"title": "string",
"description": null,
"ocrModel": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string",
"description": null,
"isPublic": true,
"requiresOcr": true,
"ocrModel": null,
"createdAt": null,
"updatedAt": null,
"envKey": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/attachments/partitions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"code\": \"string\",
\"title\": \"string\",
\"description\": null,
\"ocrModel\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/attachments/partitionsDeletes a partition. Default partitions cannot be deleted. Partitions with existing attachments cannot be deleted. Requires features: attachments.manage
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/attachments/partitions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/attachments/transferTransfers one or more attachments from one record to another within the same entity type. Updates attachment assignments and metadata to reflect the new record. Requires features: attachments.manage
{
"entityId": "string",
"attachmentIds": [
"00000000-0000-4000-8000-000000000000"
],
"toRecordId": "string"
}{
"ok": true,
"updated": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/attachments/transfer" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"attachmentIds\": [
\"00000000-0000-4000-8000-000000000000\"
],
\"toRecordId\": \"string\"
}"/catalog/bulk-deleteRequires features: catalog.products.manage
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/bulk-delete" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/api_keys/keysReturns paginated API keys visible to the current user, including per-key role assignments and organization context. Requires features: api_keys.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | string | — |
| pageSize | query | No | string | — |
| search | query | No | string | — |
{
"items": [
{
"id": "string",
"name": "string",
"description": null,
"keyPrefix": "string",
"organizationId": null,
"organizationName": null,
"createdAt": "string",
"lastUsedAt": null,
"expiresAt": null,
"roles": [
{
"id": "string",
"name": null
}
]
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/api_keys/keys" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/api_keys/keysCreates a new API key, returning the one-time secret value together with the generated key prefix and scope details. Requires features: api_keys.create
{
"name": "string",
"description": null,
"tenantId": null,
"organizationId": null,
"roles": [],
"expiresAt": null
}{
"id": "string",
"name": "string",
"keyPrefix": "string",
"tenantId": null,
"organizationId": null,
"roles": [
{
"id": "string",
"name": null
}
]
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/api_keys/keys" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"description\": null,
\"tenantId\": null,
\"organizationId\": null,
\"roles\": [],
\"expiresAt\": null
}"/api_keys/keysRemoves an API key by identifier. The key must belong to the current tenant and fall within the requester organization scope. Requires features: api_keys.delete
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | API key identifier to delete |
{
"success": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/api_keys/keys?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/onboarding/onboarding{}curl -X POST "https://crm.rsmotoconcierge.pl/api/onboarding/onboarding" \ -H "Accept: application/json"
/onboarding/onboarding/status{}curl -X GET "https://crm.rsmotoconcierge.pl/api/onboarding/onboarding/status" \ -H "Accept: application/json"
/onboarding/onboarding/verify{}curl -X GET "https://crm.rsmotoconcierge.pl/api/onboarding/onboarding/verify" \ -H "Accept: application/json"
/business_rules/executeManually executes applicable business rules for the specified entity type, event, and data. Supports dry-run mode to test rules without executing actions. Requires features: business_rules.execute
{
"entityType": "string",
"dryRun": false
}{
"allowed": true,
"executedRules": [
{
"ruleId": "string",
"ruleName": "string",
"conditionResult": true,
"executionTime": 1
}
],
"totalExecutionTime": 1
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/business_rules/execute" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityType\": \"string\",
\"dryRun\": false
}"/business_rules/execute/{ruleId}Directly executes a specific business rule identified by its UUID, bypassing the normal entityType/eventType discovery mechanism. Useful for workflows and targeted rule execution. Requires features: business_rules.execute
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| ruleId | path | Yes | string | The database UUID of the business rule to execute |
{
"dryRun": false
}{
"success": true,
"ruleId": "string",
"ruleName": "string",
"conditionResult": true,
"actionsExecuted": null,
"executionTime": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/business_rules/execute/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"dryRun\": false
}"/business_rules/logsReturns rule execution history for the current tenant and organization with filtering and pagination. Useful for audit trails and debugging. Requires features: business_rules.view_logs
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | integer | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ruleId | query | No | string | — |
| entityId | query | No | string | — |
| entityType | query | No | string | — |
| executionResult | query | No | string | — |
| executedBy | query | No | string | — |
| executedAtFrom | query | No | string | — |
| executedAtTo | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "string",
"ruleId": "string",
"ruleName": "string",
"ruleType": "string",
"entityId": "00000000-0000-4000-8000-000000000000",
"entityType": "string",
"executionResult": "SUCCESS",
"inputContext": null,
"outputContext": null,
"errorMessage": null,
"executionTimeMs": 1,
"executedAt": "string",
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": null,
"executedBy": null
}
],
"total": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/logs?page=1&pageSize=50&sortDir=desc" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/logs/{id}Returns detailed information about a specific rule execution, including full context and results. Requires features: business_rules.view_logs
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"rule": {
"id": "00000000-0000-4000-8000-000000000000",
"ruleId": "string",
"ruleName": "string",
"ruleType": "string",
"entityType": "string"
},
"entityId": "00000000-0000-4000-8000-000000000000",
"entityType": "string",
"executionResult": "SUCCESS",
"inputContext": null,
"outputContext": null,
"errorMessage": null,
"executionTimeMs": 1,
"executedAt": "string",
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": null,
"executedBy": null
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/logs/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/rulesReturns business rules for the current tenant and organization with filtering and pagination. Requires features: business_rules.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| ruleId | query | No | string | — |
| ruleType | query | No | string | — |
| entityType | query | No | string | — |
| eventType | query | No | string | — |
| enabled | query | No | boolean | — |
| ruleCategory | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"ruleId": "string",
"ruleName": "string",
"description": null,
"ruleType": "GUARD",
"ruleCategory": null,
"entityType": "string",
"eventType": null,
"enabled": true,
"priority": 1,
"version": 1,
"effectiveFrom": null,
"effectiveTo": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/rules?page=1&pageSize=50&sortDir=desc" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/rulesCreates a new business rule for the current tenant and organization. Requires features: business_rules.manage
{
"ruleId": "string",
"ruleName": "string",
"description": null,
"ruleType": "GUARD",
"ruleCategory": null,
"entityType": "string",
"eventType": null,
"enabled": true,
"priority": 100,
"version": 1,
"effectiveFrom": null,
"effectiveTo": null,
"tenantId": "string",
"organizationId": "string",
"createdBy": null,
"successActions": null,
"failureActions": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/business_rules/rules" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"ruleId\": \"string\",
\"ruleName\": \"string\",
\"description\": null,
\"ruleType\": \"GUARD\",
\"ruleCategory\": null,
\"entityType\": \"string\",
\"eventType\": null,
\"enabled\": true,
\"priority\": 100,
\"version\": 1,
\"effectiveFrom\": null,
\"effectiveTo\": null,
\"tenantId\": \"string\",
\"organizationId\": \"string\",
\"createdBy\": null,
\"successActions\": null,
\"failureActions\": null
}"/business_rules/rulesUpdates an existing business rule. Requires features: business_rules.manage
{
"description": null,
"ruleCategory": null,
"eventType": null,
"enabled": true,
"priority": 100,
"version": 1,
"effectiveFrom": null,
"effectiveTo": null,
"createdBy": null,
"successActions": null,
"failureActions": null,
"id": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/business_rules/rules" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"description\": null,
\"ruleCategory\": null,
\"eventType\": null,
\"enabled\": true,
\"priority\": 100,
\"version\": 1,
\"effectiveFrom\": null,
\"effectiveTo\": null,
\"createdBy\": null,
\"successActions\": null,
\"failureActions\": null,
\"id\": \"string\"
}"/business_rules/rulesSoft deletes a business rule by identifier. Requires features: business_rules.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Business rule identifier |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/business_rules/rules?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/rules/{id}Returns complete details of a business rule including conditions and actions. Requires features: business_rules.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"ruleId": "string",
"ruleName": "string",
"description": null,
"ruleType": "GUARD",
"ruleCategory": null,
"entityType": "string",
"eventType": null,
"successActions": null,
"failureActions": null,
"enabled": true,
"priority": 1,
"version": 1,
"effectiveFrom": null,
"effectiveTo": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdBy": null,
"updatedBy": null,
"createdAt": "string",
"updatedAt": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/rules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/setsReturns rule sets for the current tenant and organization with filtering and pagination. Requires features: business_rules.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| setId | query | No | string | — |
| enabled | query | No | boolean | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"setId": "string",
"setName": "string",
"description": null,
"enabled": true,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdBy": null,
"updatedBy": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/sets?page=1&pageSize=50&sortDir=asc" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/setsCreates a new rule set for organizing business rules. Requires features: business_rules.manage_sets
{
"setId": "string",
"setName": "string",
"description": null,
"enabled": true,
"tenantId": "string",
"organizationId": "string",
"createdBy": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/business_rules/sets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"setId\": \"string\",
\"setName\": \"string\",
\"description\": null,
\"enabled\": true,
\"tenantId\": \"string\",
\"organizationId\": \"string\",
\"createdBy\": null
}"/business_rules/setsUpdates an existing rule set. Requires features: business_rules.manage_sets
{
"description": null,
"enabled": true,
"createdBy": null,
"id": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/business_rules/sets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"description\": null,
\"enabled\": true,
\"createdBy\": null,
\"id\": \"string\"
}"/business_rules/setsSoft deletes a rule set by identifier. Requires features: business_rules.manage_sets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Rule set identifier |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/business_rules/sets?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/sets/{id}Returns detailed information about a specific rule set, including all member rules. Requires features: business_rules.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"setId": "string",
"setName": "string",
"description": null,
"enabled": true,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdBy": null,
"updatedBy": null,
"createdAt": "string",
"updatedAt": "string",
"members": [
{
"id": "00000000-0000-4000-8000-000000000000",
"ruleId": "00000000-0000-4000-8000-000000000000",
"ruleName": "string",
"ruleType": "string",
"sequence": 1,
"enabled": true
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/business_rules/sets/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/business_rules/sets/{id}/membersAdds a business rule to a rule set with specified sequence and enabled state. Requires features: business_rules.manage_sets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ruleId": "00000000-0000-4000-8000-000000000000",
"sequence": 0,
"enabled": true
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/business_rules/sets/:id/members" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"ruleId\": \"00000000-0000-4000-8000-000000000000\",
\"sequence\": 0,
\"enabled\": true
}"/business_rules/sets/{id}/membersUpdates sequence or enabled state of a rule set member. Requires features: business_rules.manage_sets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"memberId": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/business_rules/sets/:id/members" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"memberId\": \"00000000-0000-4000-8000-000000000000\"
}"/business_rules/sets/{id}/membersRemoves a business rule from a rule set (hard delete). Requires features: business_rules.manage_sets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| memberId | query | Yes | string | Member identifier |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/business_rules/sets/:id/members?memberId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/check/booleanChecks if a feature toggle is enabled for the current context.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| identifier | query | Yes | string | Feature toggle identifier |
{
"enabled": true,
"source": "override",
"toggleId": "string",
"identifier": "string",
"tenantId": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/check/boolean?identifier=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/check/jsonGets the json configuration for a feature toggle.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| identifier | query | Yes | string | Feature toggle identifier |
{
"valueType": "json",
"source": "override",
"toggleId": "string",
"identifier": "string",
"tenantId": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/check/json?identifier=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/check/numberGets the number configuration for a feature toggle.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| identifier | query | Yes | string | Feature toggle identifier |
{
"valueType": "number",
"value": 1,
"source": "override",
"toggleId": "string",
"identifier": "string",
"tenantId": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/check/number?identifier=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/check/stringGets the string configuration for a feature toggle.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| identifier | query | Yes | string | Feature toggle identifier |
{
"valueType": "string",
"value": "string",
"source": "override",
"toggleId": "string",
"identifier": "string",
"tenantId": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/check/string?identifier=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/globalReturns all global feature toggles with filtering and pagination. Requires superadmin role. Requires roles: superadmin
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | Page number for pagination |
| pageSize | query | No | number | Number of items per page (max 200) |
| search | query | No | string | Case-insensitive search across identifier, name, description, and category |
| type | query | No | string | Filter by toggle type (boolean, string, number, json) |
| category | query | No | string | Filter by category (case-insensitive partial match) |
| name | query | No | string | Filter by name (case-insensitive partial match) |
| identifier | query | No | string | Filter by identifier (case-insensitive partial match) |
| sortField | query | No | string | Field to sort by |
| sortDir | query | No | string | Sort direction (ascending or descending) |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"identifier": "string",
"name": "string",
"description": null,
"category": null,
"type": "boolean",
"defaultValue": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/global?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/globalCreates a new global feature toggle. Requires superadmin role. Requires roles: superadmin
{
"identifier": "string",
"name": "string",
"description": null,
"category": null,
"type": "boolean",
"defaultValue": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/feature_toggles/global" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"identifier\": \"string\",
\"name\": \"string\",
\"description\": null,
\"category\": null,
\"type\": \"boolean\",
\"defaultValue\": null
}"/feature_toggles/globalUpdates an existing global feature toggle. Requires superadmin role. Requires roles: superadmin
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"category": null,
"defaultValue": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/feature_toggles/global" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"category\": null,
\"defaultValue\": null
}"/feature_toggles/globalSoft deletes a global feature toggle by ID. Requires superadmin role. Requires roles: superadmin
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Feature toggle identifier |
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/feature_toggles/global?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/global/{id}Returns complete details of a feature toggle. Requires roles: superadmin
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"identifier": "string",
"name": "string",
"description": null,
"category": null,
"type": "boolean",
"defaultValue": null
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/global/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/global/{id}/overrideReturns feature toggle override. Requires roles: superadmin
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"tenantName": "string",
"tenantId": "00000000-0000-4000-8000-000000000000",
"toggleType": "boolean"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/global/:id/override" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/overridesReturns list of feature toggle overrides. Requires roles: superadmin
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| category | query | No | string | — |
| name | query | No | string | — |
| identifier | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"toggleId": "00000000-0000-4000-8000-000000000000",
"overrideState": "enabled",
"identifier": "string",
"name": "string",
"category": null,
"defaultState": true,
"tenantName": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1,
"isSuperAdmin": true
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/feature_toggles/overrides?page=1&pageSize=25" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/feature_toggles/overridesEnable, disable or inherit a feature toggle for a specific tenant. Requires roles: superadmin
{
"toggleId": "00000000-0000-4000-8000-000000000000",
"isOverride": true
}{
"ok": true,
"overrideToggleId": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/feature_toggles/overrides" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"toggleId\": \"00000000-0000-4000-8000-000000000000\",
\"isOverride\": true
}"/search/embeddingsReturns current embedding provider and model configuration. Requires features: search.embeddings.view
{
"settings": {
"openaiConfigured": true,
"autoIndexingEnabled": true,
"autoIndexingLocked": true,
"lockReason": null,
"embeddingConfig": null,
"configuredProviders": [
"openai"
],
"indexedDimension": null,
"reindexRequired": true,
"documentCount": null
}
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/embeddings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/embeddingsUpdates the embedding provider and model settings. Requires features: search.embeddings.manage
{}{
"settings": {
"openaiConfigured": true,
"autoIndexingEnabled": true,
"autoIndexingLocked": true,
"lockReason": null,
"embeddingConfig": null,
"configuredProviders": [
"openai"
],
"indexedDimension": null,
"reindexRequired": true,
"documentCount": null
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/embeddings" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/search/embeddings/reindexStarts a vector embedding reindex operation. Requires features: search.embeddings.manage
{}{
"ok": true
}{
"error": "string",
"lock": {
"type": "fulltext",
"action": "string",
"startedAt": "string",
"elapsedMinutes": 1,
"processedCount": null,
"totalCount": null
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/embeddings/reindex" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/search/embeddings/reindex/cancelCancels an in-progress vector reindex operation. Requires features: search.embeddings.manage
{
"ok": true,
"jobsRemoved": 1
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/embeddings/reindex/cancel" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/indexReturns paginated list of entries in the vector search index. Requires features: search.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | No | string | Filter by entity ID (e.g., "customers:customer_person_profile", "catalog:catalog_product") |
| limit | query | No | number | Maximum entries to return (default: 50, max: 200) |
| offset | query | No | number | Offset for pagination (default: 0) |
{
"entries": [
{
"id": "string",
"entityId": "string",
"recordId": "string",
"tenantId": "string",
"organizationId": null
}
],
"limit": 1,
"offset": 1
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/index" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/indexPurges entries from the vector search index. Requires confirmAll=true when purging all entities. Requires features: search.embeddings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | No | string | Specific entity ID to purge (e.g., "customers:customer_person_profile", "catalog:catalog_product") |
| confirmAll | query | No | string | Required when purging all entities |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/search/index" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/reindexStarts a fulltext (Meilisearch) reindex operation. Can clear, recreate, or fully reindex. Requires features: search.reindex
{}{
"ok": true,
"action": "clear",
"entityId": null
}{
"error": "string",
"lock": {
"type": "fulltext",
"action": "string",
"startedAt": "string",
"elapsedMinutes": 1,
"processedCount": null,
"totalCount": null
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/reindex" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/search/reindex/cancelCancels an in-progress fulltext reindex operation. Requires features: search.reindex
{
"ok": true,
"jobsRemoved": 1
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/reindex/cancel" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/searchPerforms a search using configured strategies (fulltext, vector, tokens). Use for search playground. Requires features: search.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| q | query | Yes | string | Search query (required) |
| limit | query | No | number | Maximum results to return (default: 50, max: 100) |
| strategies | query | No | string | Comma-separated strategies to use: fulltext, vector, tokens (e.g., "fulltext,vector") |
| entityTypes | query | No | string | Comma-separated entity types to filter results (e.g., "customers:customer_person_profile,catalog:catalog_product,sales:sales_order") |
{
"results": [
{
"entityId": "string",
"recordId": "string",
"score": 1,
"source": "fulltext"
}
],
"strategiesUsed": [
"fulltext"
],
"timing": 1,
"query": "string",
"limit": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/search?q=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/search/globalPerforms a global search using saved tenant strategies. Does NOT accept strategies from URL. Requires features: search.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| q | query | Yes | string | Search query (required) |
| limit | query | No | number | Maximum results to return (default: 50, max: 100) |
| entityTypes | query | No | string | Comma-separated entity types to filter results (e.g., "customers:customer_person_profile,catalog:catalog_product,sales:sales_order") |
{
"results": [
{
"entityId": "string",
"recordId": "string",
"score": 1,
"source": "fulltext"
}
],
"strategiesUsed": [
"fulltext"
],
"strategiesEnabled": [
"fulltext"
],
"timing": 1,
"query": "string",
"limit": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/search/global?q=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/settingsReturns search module configuration, available strategies, and reindex lock status. Requires features: search.view
{
"settings": {
"strategies": [
{
"id": "string",
"name": "string",
"priority": 1,
"available": true
}
],
"fulltextConfigured": true,
"fulltextStats": null,
"vectorConfigured": true,
"tokensEnabled": true,
"defaultStrategies": [
"string"
],
"reindexLock": null,
"fulltextReindexLock": null,
"vectorReindexLock": null
}
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/settings/fulltextReturns Meilisearch configuration status and index statistics. Requires features: search.view
{
"driver": null,
"configured": true,
"envVars": {
"MEILISEARCH_HOST": {
"set": true,
"hint": "string"
},
"MEILISEARCH_API_KEY": {
"set": true,
"hint": "string"
}
},
"optionalEnvVars": {
"MEILISEARCH_INDEX_PREFIX": {
"set": true,
"hint": "string"
},
"SEARCH_EXCLUDE_ENCRYPTED_FIELDS": {
"set": true,
"hint": "string"
}
}
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/settings/fulltext" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/settings/global-searchReturns the enabled strategies for Cmd+K global search. Requires features: search.view
{
"enabledStrategies": [
"fulltext"
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/settings/global-search" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/search/settings/global-searchSets which strategies are enabled for Cmd+K global search. Requires features: search.manage
{
"enabledStrategies": [
"fulltext"
]
}{
"ok": true,
"enabledStrategies": [
"fulltext"
]
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/search/settings/global-search" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"enabledStrategies\": [
\"fulltext\"
]
}"/search/settings/vector-storeReturns vector store configuration status. Requires features: search.view
{
"currentDriver": "pgvector",
"configured": true,
"drivers": [
{
"id": "pgvector",
"name": "string",
"configured": true,
"implemented": true,
"envVars": [
{
"name": "string",
"set": true,
"hint": "string"
}
]
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/search/settings/vector-store" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/currencies/currenciesReturns a paginated collection of currencies scoped to the authenticated organization. Requires features: currencies.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| isBase | query | No | string | — |
| isActive | query | No | string | — |
| code | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"code": "string",
"name": "string",
"symbol": null,
"decimalPlaces": 1,
"thousandsSeparator": null,
"decimalSeparator": null,
"isBase": true,
"isActive": true,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/currencies/currencies?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/currencies/currenciesCreates a new currency. Requires features: currencies.manage
{
"organizationId": "string",
"tenantId": "string",
"code": "string",
"name": "string",
"symbol": null,
"thousandsSeparator": null,
"decimalSeparator": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/currencies/currencies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"string\",
\"tenantId\": \"string\",
\"code\": \"string\",
\"name\": \"string\",
\"symbol\": null,
\"thousandsSeparator\": null,
\"decimalSeparator\": null
}"/currencies/currenciesUpdates an existing currency by id. Requires features: currencies.manage
{
"id": "string",
"symbol": null,
"thousandsSeparator": null,
"decimalSeparator": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/currencies/currencies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\",
\"symbol\": null,
\"thousandsSeparator\": null,
\"decimalSeparator\": null
}"/currencies/currenciesDeletes a currency by id. Requires features: currencies.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/currencies/currencies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/currencies/currencies/optionsReturns currencies formatted for select inputs. Requires features: currencies.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| q | query | No | string | — |
| query | query | No | string | — |
| search | query | No | string | — |
| includeInactive | query | No | string | — |
| limit | query | No | number | — |
{
"items": [
{
"value": "string",
"label": "string"
}
]
}{
"items": []
}curl -X GET "https://crm.rsmotoconcierge.pl/api/currencies/currencies/options?limit=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/currencies/exchange-ratesReturns a paginated collection of exchangerates scoped to the authenticated organization. Requires features: currencies.rates.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| fromCurrencyCode | query | No | string | — |
| toCurrencyCode | query | No | string | — |
| isActive | query | No | string | — |
| source | query | No | string | — |
| type | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fromCurrencyCode": "string",
"toCurrencyCode": "string",
"rate": "string",
"date": "string",
"source": "string",
"type": null,
"isActive": true,
"createdAt": null,
"updatedAt": null,
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/currencies/exchange-rates?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/currencies/exchange-ratesCreates a new exchange rate. Requires features: currencies.rates.manage
{
"organizationId": "string",
"tenantId": "string",
"fromCurrencyCode": "string",
"toCurrencyCode": "string",
"rate": "string",
"type": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/currencies/exchange-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"string\",
\"tenantId\": \"string\",
\"fromCurrencyCode\": \"string\",
\"toCurrencyCode\": \"string\",
\"rate\": \"string\",
\"type\": null
}"/currencies/exchange-ratesUpdates an existing exchange rate by id. Requires features: currencies.rates.manage
{
"id": "string",
"type": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/currencies/exchange-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\",
\"type\": null
}"/currencies/exchange-ratesDeletes an exchange rate by id. Requires features: currencies.rates.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/currencies/exchange-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/currencies/fetch-configsReturns all currency fetch configurations scoped to the authenticated organization.
{
"configs": [
{
"id": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"provider": "string",
"isEnabled": true,
"syncTime": null,
"lastSyncAt": null,
"lastSyncStatus": null,
"lastSyncMessage": null,
"lastSyncCount": null,
"config": null,
"createdAt": "string",
"updatedAt": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/currencies/fetch-configs" \ -H "Accept: application/json"
/currencies/fetch-configsCreates a new currency fetch configuration.
{
"provider": "NBP",
"isEnabled": false,
"syncTime": null,
"config": null
}{
"config": {
"id": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"provider": "string",
"isEnabled": true,
"syncTime": null,
"lastSyncAt": null,
"lastSyncStatus": null,
"lastSyncMessage": null,
"lastSyncCount": null,
"config": null,
"createdAt": "string",
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/currencies/fetch-configs" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"provider\": \"NBP\",
\"isEnabled\": false,
\"syncTime\": null,
\"config\": null
}"/currencies/fetch-configsUpdates an existing currency fetch configuration by id.
{
"syncTime": null,
"config": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"config": {
"id": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"provider": "string",
"isEnabled": true,
"syncTime": null,
"lastSyncAt": null,
"lastSyncStatus": null,
"lastSyncMessage": null,
"lastSyncCount": null,
"config": null,
"createdAt": "string",
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/currencies/fetch-configs" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"syncTime\": null,
\"config\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/currencies/fetch-configsDeletes a currency fetch configuration by id.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Currency fetch configuration identifier to delete |
{
"success": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/currencies/fetch-configs?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/currencies/fetch-ratesFetches currency exchange rates from configured providers for a specific date.
{}{
"totalFetched": 1,
"byProvider": {
"key": {
"count": 1
}
},
"errors": [
"string"
]
}{
"error": "string"
}{
"error": "string"
}{
"totalFetched": 1,
"byProvider": {
"key": {
"count": 1
}
},
"errors": [
"string"
]
}curl -X POST "https://crm.rsmotoconcierge.pl/api/currencies/fetch-rates" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/accounting/bank-account-lookup{}curl -X POST "https://crm.rsmotoconcierge.pl/api/accounting/bank-account-lookup" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/invoicesReturns a paginated collection of accounting invoices scoped to the authenticated organization. Requires features: accounting.invoices.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| documentKind | query | No | string | — |
| listScope | query | No | string | — |
| isDraft | query | Yes | any | — |
| currencyCode | query | No | string | — |
| sourceSystem | query | No | string | — |
{
"items": [
{
"id": "string",
"organizationId": "string",
"tenantId": "string",
"documentNumber": "string",
"documentKind": "issued",
"issueDate": "string",
"salesDate": null,
"paymentDueDate": null,
"paymentTermDays": null,
"paymentMethod": null,
"paymentAccount": null,
"sellerEntityId": null,
"sellerName": null,
"sellerNip": null,
"sellerRegon": null,
"sellerAddress": null,
"buyerEntityId": null,
"buyerName": null,
"buyerNip": null,
"buyerRegon": null,
"buyerAddress": null,
"lineItems": null,
"title": null,
"counterpartyName": null,
"externalReference": null,
"currencyCode": null,
"totalAmount": null,
"sourceSystem": null,
"notes": null,
"isDraft": true,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/accounting/invoices?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/invoicesCreates a new accounting invoice. Requires features: accounting.invoices.manage
{
"documentNumber": "string",
"documentKind": "issued",
"issueDate": "string",
"salesDate": null,
"paymentDueDate": null,
"paymentTermDays": null,
"paymentMethod": null,
"paymentAccount": null,
"sellerEntityId": null,
"sellerName": null,
"sellerNip": null,
"sellerRegon": null,
"sellerAddress": null,
"buyerEntityId": null,
"buyerName": null,
"buyerNip": null,
"buyerRegon": null,
"buyerAddress": null,
"lineItems": null,
"title": null,
"counterpartyName": null,
"externalReference": null,
"currencyCode": null,
"sourceSystem": null,
"notes": null,
"organizationId": "string",
"tenantId": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/accounting/invoices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"documentNumber\": \"string\",
\"documentKind\": \"issued\",
\"issueDate\": \"string\",
\"salesDate\": null,
\"paymentDueDate\": null,
\"paymentTermDays\": null,
\"paymentMethod\": null,
\"paymentAccount\": null,
\"sellerEntityId\": null,
\"sellerName\": null,
\"sellerNip\": null,
\"sellerRegon\": null,
\"sellerAddress\": null,
\"buyerEntityId\": null,
\"buyerName\": null,
\"buyerNip\": null,
\"buyerRegon\": null,
\"buyerAddress\": null,
\"lineItems\": null,
\"title\": null,
\"counterpartyName\": null,
\"externalReference\": null,
\"currencyCode\": null,
\"sourceSystem\": null,
\"notes\": null,
\"organizationId\": \"string\",
\"tenantId\": \"string\"
}"/accounting/invoicesUpdates an existing accounting invoice by id. Requires features: accounting.invoices.manage
{
"salesDate": null,
"paymentDueDate": null,
"paymentTermDays": null,
"paymentMethod": null,
"paymentAccount": null,
"sellerEntityId": null,
"sellerName": null,
"sellerNip": null,
"sellerRegon": null,
"sellerAddress": null,
"buyerEntityId": null,
"buyerName": null,
"buyerNip": null,
"buyerRegon": null,
"buyerAddress": null,
"lineItems": null,
"title": null,
"counterpartyName": null,
"externalReference": null,
"currencyCode": null,
"sourceSystem": null,
"notes": null,
"id": "string"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/accounting/invoices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"salesDate\": null,
\"paymentDueDate\": null,
\"paymentTermDays\": null,
\"paymentMethod\": null,
\"paymentAccount\": null,
\"sellerEntityId\": null,
\"sellerName\": null,
\"sellerNip\": null,
\"sellerRegon\": null,
\"sellerAddress\": null,
\"buyerEntityId\": null,
\"buyerName\": null,
\"buyerNip\": null,
\"buyerRegon\": null,
\"buyerAddress\": null,
\"lineItems\": null,
\"title\": null,
\"counterpartyName\": null,
\"externalReference\": null,
\"currencyCode\": null,
\"sourceSystem\": null,
\"notes\": null,
\"id\": \"string\"
}"/accounting/invoicesSoft-deletes an accounting invoice by id. Requires features: accounting.invoices.manage
{
"id": "string"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/accounting/invoices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\"
}"/accounting/selling-entities{}curl -X GET "https://crm.rsmotoconcierge.pl/api/accounting/selling-entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/selling-entitiesRequires features: accounting.settings.manage
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/accounting/selling-entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/selling-entitiesRequires features: accounting.settings.manage
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/accounting/selling-entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/selling-entitiesRequires features: accounting.settings.manage
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/accounting/selling-entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/accounting/selling-entities/next-invoice-number{}curl -X GET "https://crm.rsmotoconcierge.pl/api/accounting/selling-entities/next-invoice-number" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/organization-settingsRequires features: procurement.settings.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/organization-settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/organization-settingsRequires features: procurement.settings.manage
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/organization-settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/organization-settings/default-for-createRequires features: procurement.processes.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/organization-settings/default-for-create" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-line-itemsReturns a paginated collection of procurement process line items scoped to the authenticated organization. Requires features: procurement.processes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| processId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"processId": "string",
"title": "string",
"specification": null,
"quantity": null,
"unitLabel": null,
"resourceId": null,
"sortOrder": 1,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/process-line-items?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-line-itemsAdds a specification line to a procurement process.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"processId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"specification": null,
"quantity": null,
"unitLabel": null,
"resourceId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/process-line-items" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"processId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"specification\": null,
\"quantity\": null,
\"unitLabel\": null,
\"resourceId\": null
}"/procurement/process-line-itemsUpdates a line item.
{
"id": "00000000-0000-4000-8000-000000000000",
"specification": null,
"quantity": null,
"unitLabel": null,
"resourceId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/process-line-items" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"specification\": null,
\"quantity\": null,
\"unitLabel\": null,
\"resourceId\": null
}"/procurement/process-line-itemsSoft-deletes a line item.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/process-line-items" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/procurement/process-status-transitionsRequires features: procurement.processes.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/process-status-transitions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-suppliersReturns a paginated collection of procurement process suppliers scoped to the authenticated organization. Requires features: procurement.processes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| processId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"processId": "string",
"vendorCustomerEntityId": null,
"vendorLabel": "string",
"contactName": null,
"email": null,
"phone": null,
"website": null,
"notes": null,
"offerSummary": null,
"sortOrder": 1,
"lineItemIds": [
"string"
],
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/process-suppliers?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-suppliersAdds a supplier candidate to a procurement process.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"processId": "00000000-0000-4000-8000-000000000000",
"vendorLabel": "string",
"vendorCustomerEntityId": null,
"contactName": null,
"email": null,
"phone": null,
"website": null,
"notes": null,
"offerSummary": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/process-suppliers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"processId\": \"00000000-0000-4000-8000-000000000000\",
\"vendorLabel\": \"string\",
\"vendorCustomerEntityId\": null,
\"contactName\": null,
\"email\": null,
\"phone\": null,
\"website\": null,
\"notes\": null,
\"offerSummary\": null
}"/procurement/process-suppliersUpdates a procurement supplier row.
{
"id": "00000000-0000-4000-8000-000000000000",
"vendorCustomerEntityId": null,
"contactName": null,
"email": null,
"phone": null,
"website": null,
"notes": null,
"offerSummary": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/process-suppliers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"vendorCustomerEntityId\": null,
\"contactName\": null,
\"email\": null,
\"phone\": null,
\"website\": null,
\"notes\": null,
\"offerSummary\": null
}"/procurement/process-suppliersSoft-deletes a procurement supplier.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/process-suppliers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/procurement/process-tasksReturns a paginated collection of procurement process tasks scoped to the authenticated organization. Requires features: procurement.processes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| processId | query | No | string | — |
| supplierId | query | No | string | — |
| assignedUserId | query | No | string | — |
| taskStatus | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"processId": "string",
"supplierId": null,
"title": "string",
"body": null,
"taskStatus": "string",
"dueAt": null,
"assignedUserId": null,
"delegatedFromUserId": null,
"sourceActionValue": null,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/process-tasks?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-tasksCreates a follow-up task on a procurement process.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"processId": "00000000-0000-4000-8000-000000000000",
"supplierId": null,
"title": "string",
"body": null,
"dueAt": null,
"assignedUserId": null,
"delegatedFromUserId": null,
"sourceActionValue": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/process-tasks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"processId\": \"00000000-0000-4000-8000-000000000000\",
\"supplierId\": null,
\"title\": \"string\",
\"body\": null,
\"dueAt\": null,
\"assignedUserId\": null,
\"delegatedFromUserId\": null,
\"sourceActionValue\": null
}"/procurement/process-tasksUpdates a procurement task.
{
"id": "00000000-0000-4000-8000-000000000000",
"supplierId": null,
"body": null,
"dueAt": null,
"assignedUserId": null,
"delegatedFromUserId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/process-tasks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"supplierId\": null,
\"body\": null,
\"dueAt\": null,
\"assignedUserId\": null,
\"delegatedFromUserId\": null
}"/procurement/process-tasksSoft-deletes a procurement task.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/process-tasks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/procurement/process-timelineReturns timeline entries for a single procurement process (newest first by default). Requires features: procurement.processes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| processId | query | Yes | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "string",
"processId": "string",
"eventType": "string",
"message": "string",
"actorUserId": null,
"actorLabel": null,
"metadata": null,
"createdAt": null,
"organizationId": "string",
"tenantId": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/process-timeline?processId=string&page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/process-timelineRecords a custom timeline message on a process.
{
"tenantId": "string",
"organizationId": "string",
"processId": "string",
"eventType": "string",
"message": "string",
"metadata": null
}{
"ok": true,
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/process-timeline" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"string\",
\"organizationId\": \"string\",
\"processId\": \"string\",
\"eventType\": \"string\",
\"message\": \"string\",
\"metadata\": null
}"/procurement/process-timelineUpdates the message of a timeline row with eventType "note". System events (e.g. process.created) cannot be edited.
{
"tenantId": "string",
"organizationId": "string",
"processId": "string",
"id": "string",
"message": "string"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/process-timeline" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"string\",
\"organizationId\": \"string\",
\"processId\": \"string\",
\"id\": \"string\",
\"message\": \"string\"
}"/procurement/process-timelineDeletes a timeline row with eventType "note". Query uses processId and timeline event id; tenant and organization are taken from auth scope when omitted.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
| processId | query | Yes | string | — |
| id | query | Yes | string | — |
{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/process-timeline?processId=string&id=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/processesReturns a paginated collection of procurement processes scoped to the authenticated organization. Requires features: procurement.processes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| customerEntityId | query | No | string | — |
| customerUnassigned | query | No | string | — |
| resourceId | query | No | string | — |
| salesQuoteId | query | No | string | — |
| statusValue | query | No | string | — |
| typeValue | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"title": "string",
"description": null,
"startedAt": null,
"statusValue": null,
"statusLabel": null,
"statusColor": null,
"statusIcon": null,
"typeValue": null,
"typeLabel": null,
"typeColor": null,
"typeIcon": null,
"customerEntityId": null,
"salesQuoteId": null,
"salesInvoiceId": null,
"resourceId": null,
"selectedSupplierId": null,
"refinancingEnabled": true,
"refinancingNotes": null,
"closedAt": null,
"createdAt": null,
"updatedAt": null,
"organizationId": "string",
"tenantId": "string",
"handlerUserId": null,
"handlerLabel": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/processes?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/processesCreates a procurement process. Requires features: procurement.processes.manage
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"description": null,
"customerEntityId": null,
"salesQuoteId": null,
"statusValue": null,
"typeValue": null,
"handlerUserId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/processes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"description\": null,
\"customerEntityId\": null,
\"salesQuoteId\": null,
\"statusValue\": null,
\"typeValue\": null,
\"handlerUserId\": null
}"/procurement/processesUpdates a procurement process.
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"customerEntityId": null,
"salesQuoteId": null,
"salesInvoiceId": null,
"resourceId": null,
"selectedSupplierId": null,
"refinancingLineItemId": null,
"refinancingNotes": null,
"statusValue": null,
"typeValue": null,
"handlerUserId": null,
"startedAt": null,
"closedAt": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/processes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"customerEntityId\": null,
\"salesQuoteId\": null,
\"salesInvoiceId\": null,
\"resourceId\": null,
\"selectedSupplierId\": null,
\"refinancingLineItemId\": null,
\"refinancingNotes\": null,
\"statusValue\": null,
\"typeValue\": null,
\"handlerUserId\": null,
\"startedAt\": null,
\"closedAt\": null
}"/procurement/processesSoft-deletes a procurement process. Requires features: procurement.processes.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/processes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/procurement/processes/completeSets closed status and optionally links a process-level resource (line items may have their own linked resources). Records the final invoice reference when provided.
{
"tenantId": "string",
"organizationId": "string",
"id": "string",
"resourceId": null,
"salesInvoiceId": null
}{
"ok": true,
"processId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/processes/complete" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"string\",
\"organizationId\": \"string\",
\"id\": \"string\",
\"resourceId\": null,
\"salesInvoiceId\": null
}"/procurement/status-transition-rulesRequires features: procurement.settings.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/procurement/status-transition-rules" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/status-transition-rulesRequires features: procurement.settings.manage
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/status-transition-rules" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/status-transition-rules/{id}Requires features: procurement.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/procurement/status-transition-rules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/status-transition-rules/{id}Requires features: procurement.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/procurement/status-transition-rules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/procurement/status-transition-rules/reorderRequires features: procurement.settings.manage
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/procurement/status-transition-rules/reorder" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/events/stream{}curl -X GET "https://crm.rsmotoconcierge.pl/api/events/stream" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notificationsReturns a paginated collection of notifications.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| status | query | No | any | — |
| type | query | No | string | — |
| severity | query | No | string | — |
| sourceEntityType | query | No | string | — |
| sourceEntityId | query | No | string | — |
| since | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"type": "string",
"title": "string",
"body": null,
"titleKey": null,
"bodyKey": null,
"titleVariables": null,
"bodyVariables": null,
"icon": null,
"severity": "string",
"status": "string",
"actions": [
{
"id": "string",
"label": "string"
}
],
"sourceModule": null,
"sourceEntityType": null,
"sourceEntityId": null,
"linkHref": null,
"createdAt": "string",
"readAt": null,
"actionTaken": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/notifications?page=1&pageSize=20" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notificationsCreates a notification for a user. Requires features: notifications.create
{
"type": "string",
"severity": "info",
"recipientUserId": "00000000-0000-4000-8000-000000000000"
}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"type\": \"string\",
\"severity\": \"info\",
\"recipientUserId\": \"00000000-0000-4000-8000-000000000000\"
}"/notifications/{id}/action| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications/:id/action" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/{id}/dismiss| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/notifications/:id/dismiss" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/{id}/read| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/notifications/:id/read" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/{id}/restore| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/notifications/:id/restore" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/batchRequires features: notifications.create
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications/batch" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/featureRequires features: notifications.create
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications/feature" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/mark-all-read{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/notifications/mark-all-read" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/roleRequires features: notifications.create
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications/role" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/settingsRequires features: notifications.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/notifications/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/settingsRequires features: notifications.manage
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/notifications/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/notifications/unread-count{}curl -X GET "https://crm.rsmotoconcierge.pl/api/notifications/unread-count" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/progress/active{}curl -X GET "https://crm.rsmotoconcierge.pl/api/progress/active" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/progress/jobsReturns a paginated collection of progressjobs scoped to the authenticated tenant.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| status | query | No | string | — |
| jobType | query | No | string | — |
| parentJobId | query | No | string | — |
| includeCompleted | query | No | string | — |
| completedSince | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"jobType": "string",
"name": "string",
"description": null,
"status": "string",
"progressPercent": 1,
"processedCount": 1,
"totalCount": null,
"etaSeconds": null,
"cancellable": true,
"startedAt": null,
"finishedAt": null,
"errorMessage": null,
"createdAt": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/progress/jobs?page=1&pageSize=20" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/progress/jobsCreates a new progress job for tracking a long-running operation. Requires features: progress.create
{
"jobType": "string",
"name": "string",
"cancellable": false
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/progress/jobs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"jobType\": \"string\",
\"name\": \"string\",
\"cancellable\": false
}"/progress/jobs/{id}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/progress/jobs/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/progress/jobs/{id}Requires features: progress.update
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/progress/jobs/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/progress/jobs/{id}Requires features: progress.cancel
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/progress/jobs/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrationsReturns a paginated collection of integrations. Requires features: integrations.view
{
"items": [
{
"id": "string",
"title": "string",
"category": null,
"hub": null,
"providerKey": null,
"bundleId": null,
"hasCredentials": true,
"isEnabled": true,
"apiVersion": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/integrations" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}Requires features: integrations.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/integrations/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}/credentialsRequires features: integrations.credentials.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/integrations/:id/credentials" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}/credentialsRequires features: integrations.credentials.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/integrations/:id/credentials" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}/healthRequires features: integrations.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/integrations/:id/health" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}/stateRequires features: integrations.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/integrations/:id/state" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/{id}/versionRequires features: integrations.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/integrations/:id/version" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/integrations/logsRequires features: integrations.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/integrations/logs" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/mappingsRequires features: data_sync.configure
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/mappings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/mappingsRequires features: data_sync.configure
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/mappings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/mappings/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/mappings/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/mappings/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/data_sync/mappings/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/mappings/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/data_sync/mappings/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/optionsRequires features: data_sync.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/options" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/runRequires features: data_sync.run
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/run" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/runsRequires features: data_sync.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/runs" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/runs/{id}Requires features: data_sync.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/runs/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/runs/{id}/cancelRequires features: data_sync.run
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/runs/:id/cancel" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/runs/{id}/retryRequires features: data_sync.run
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/runs/:id/retry" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/schedulesRequires features: data_sync.configure
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/schedules" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/schedulesRequires features: data_sync.configure
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/schedules" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/schedules/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/data_sync/schedules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/schedules/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/data_sync/schedules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/schedules/{id}Requires features: data_sync.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/data_sync/schedules/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/data_sync/validateRequires features: data_sync.configure
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/data_sync/validate" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messagesRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| folder | query | No | string | — |
| status | query | No | string | — |
| type | query | No | string | — |
| caseId | query | No | string | — |
| visibility | query | No | string | — |
| sourceEntityType | query | No | string | — |
| sourceEntityId | query | No | string | — |
| externalEmail | query | No | string | — |
| hasObjects | query | No | boolean | — |
| hasAttachments | query | No | boolean | — |
| hasActions | query | No | boolean | — |
| senderId | query | No | string | — |
| search | query | No | string | — |
| since | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"type": "string",
"visibility": null,
"sourceEntityType": null,
"sourceEntityId": null,
"externalEmail": null,
"externalName": null,
"subject": "string",
"bodyPreview": "string",
"senderUserId": "00000000-0000-4000-8000-000000000000",
"senderName": null,
"senderEmail": null,
"priority": "string",
"status": "string",
"hasObjects": true,
"objectCount": 1,
"hasAttachments": true,
"attachmentCount": 1,
"recipientCount": 1,
"hasActions": true,
"actionTaken": null,
"sentAt": null,
"readAt": null,
"threadId": null
}
],
"page": 1,
"pageSize": 1,
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages?folder=inbox&page=1&pageSize=20" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messagesRequires features: messages.compose
{
"type": "default",
"caseId": null,
"visibility": null,
"recipients": [],
"subject": "",
"body": "",
"bodyFormat": "text",
"priority": "normal",
"sendViaEmail": false,
"isDraft": false
}{
"id": "00000000-0000-4000-8000-000000000000",
"threadId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/messages" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"type\": \"default\",
\"caseId\": null,
\"visibility\": null,
\"recipients\": [],
\"subject\": \"\",
\"body\": \"\",
\"bodyFormat\": \"text\",
\"priority\": \"normal\",
\"sendViaEmail\": false,
\"isDraft\": false
}"/messages/{id}Requires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"type": "string",
"isDraft": true,
"canEditDraft": true,
"visibility": null,
"sourceEntityType": null,
"sourceEntityId": null,
"externalEmail": null,
"externalName": null,
"typeDefinition": {
"labelKey": "string",
"icon": "string",
"color": null,
"allowReply": true,
"allowForward": true,
"ui": null
},
"threadId": null,
"parentMessageId": null,
"senderUserId": "00000000-0000-4000-8000-000000000000",
"senderName": null,
"senderEmail": null,
"subject": "string",
"body": "string",
"bodyFormat": "text",
"priority": "string",
"sentAt": null,
"actionData": null,
"actionTaken": null,
"actionTakenAt": null,
"actionTakenByUserId": null,
"recipients": [
{
"userId": "00000000-0000-4000-8000-000000000000",
"type": "to",
"status": "string",
"readAt": null
}
],
"objects": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityModule": "string",
"entityType": "string",
"entityId": "00000000-0000-4000-8000-000000000000",
"actionRequired": true,
"actionType": null,
"actionLabel": null,
"snapshot": null,
"preview": null
}
],
"thread": [
{
"id": "00000000-0000-4000-8000-000000000000",
"senderUserId": "00000000-0000-4000-8000-000000000000",
"senderName": null,
"senderEmail": null,
"body": "string",
"sentAt": null
}
],
"isRead": true
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}Requires features: messages.compose
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"visibility": null
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/messages/:id" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"visibility\": null
}"/messages/{id}Requires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/actions/{actionId}Requires features: messages.actions
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| actionId | path | Yes | string | — |
{}{
"ok": true,
"actionId": "string"
}{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/messages/:id/actions/:actionId" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/archiveRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/messages/:id/archive" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/archiveRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id/archive" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/attachmentsRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"attachments": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"fileSize": 1,
"mimeType": "string",
"url": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/:id/attachments" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/attachmentsRequires features: messages.attach_files
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"attachmentIds": [
"00000000-0000-4000-8000-000000000000"
]
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/messages/:id/attachments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"attachmentIds\": [
\"00000000-0000-4000-8000-000000000000\"
]
}"/messages/{id}/attachmentsRequires features: messages.attach_files
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id/attachments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/messages/{id}/confirmationRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"messageId": "00000000-0000-4000-8000-000000000000",
"confirmed": true,
"confirmedAt": null,
"confirmedByUserId": null
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/:id/confirmation" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/conversationRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"affectedCount": 1
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id/conversation" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/conversation/archiveRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"affectedCount": 1
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/messages/:id/conversation/archive" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/conversation/readRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"affectedCount": 1
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id/conversation/read" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/forwardRequires features: messages.compose
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"recipients": [
{
"userId": "00000000-0000-4000-8000-000000000000",
"type": "to"
}
],
"includeAttachments": true,
"sendViaEmail": false
}{
"id": "00000000-0000-4000-8000-000000000000"
}{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/messages/:id/forward" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"recipients\": [
{
\"userId\": \"00000000-0000-4000-8000-000000000000\",
\"type\": \"to\"
}
],
\"includeAttachments\": true,
\"sendViaEmail\": false
}"/messages/{id}/forward-previewRequires features: messages.compose
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"subject": "string",
"body": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/:id/forward-preview" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/readRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/messages/:id/read" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/readRequires features: messages.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/messages/:id/read" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/{id}/replyRequires features: messages.compose
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"body": "string",
"bodyFormat": "text",
"replyAll": false,
"sendViaEmail": false
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/messages/:id/reply" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"body\": \"string\",
\"bodyFormat\": \"text\",
\"replyAll\": false,
\"sendViaEmail\": false
}"/messages/object-typesRequires features: messages.compose
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| messageType | query | Yes | string | — |
{
"items": [
{
"module": "string",
"entityType": "string",
"labelKey": "string",
"icon": "string",
"actions": [
{
"id": "string",
"labelKey": "string"
}
]
}
]
}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/object-types?messageType=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/token/{token}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| token | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"type": "string",
"subject": "string",
"body": "string",
"bodyFormat": "text",
"priority": "low",
"senderUserId": "00000000-0000-4000-8000-000000000000",
"sentAt": null,
"actionData": null,
"actionTaken": null,
"actionTakenAt": null,
"actionTakenByUserId": null,
"objects": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityModule": "string",
"entityType": "string",
"entityId": "00000000-0000-4000-8000-000000000000",
"actionRequired": true,
"actionType": null,
"actionLabel": null,
"snapshot": null
}
],
"requiresAuth": true,
"recipientUserId": "00000000-0000-4000-8000-000000000000"
}{}{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/token/:token" \ -H "Accept: application/json"
/messages/typesRequires features: messages.view
{
"items": [
{
"type": "string",
"module": "string",
"labelKey": "string",
"icon": "string",
"color": null,
"allowReply": true,
"allowForward": true,
"actionsExpireAfterHours": null,
"ui": null
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/types" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/messages/unread-countRequires features: messages.view
{
"unreadCount": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/messages/unread-count" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/chatRequires features: ai_assistant.view
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/ai_assistant/chat" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/healthRequires features: ai_assistant.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/ai_assistant/health" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/routeRequires features: ai_assistant.view
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/ai_assistant/route" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/session-keyGenerates a new session token that can be included in MCP tool calls via the _sessionToken parameter. The token inherits the calling user's roles and organization context. Requires features: ai_assistant.view
{
"sessionToken": "string",
"expiresAt": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/ai_assistant/session-key" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/settingsRequires features: ai_assistant.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/ai_assistant/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/toolsRequires features: ai_assistant.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/ai_assistant/tools" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/ai_assistant/tools/executeRequires features: ai_assistant.view
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/ai_assistant/tools/execute" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/translations/locales{}curl -X GET "https://crm.rsmotoconcierge.pl/api/translations/locales" \ -H "Accept: application/json"
/translations/locales{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/translations/locales" \ -H "Accept: application/json"
/scheduler/jobsReturns a paginated collection of scheduledjobs scoped to the authenticated organization. Requires features: scheduler.jobs.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| search | query | No | string | — |
| scopeType | query | No | string | — |
| isEnabled | query | Yes | any | — |
| sourceType | query | No | string | — |
| sourceModule | query | No | string | — |
| sort | query | No | string | — |
| order | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null,
"scopeType": "system",
"organizationId": null,
"tenantId": null,
"scheduleType": "cron",
"scheduleValue": "string",
"timezone": "string",
"targetType": "queue",
"targetQueue": null,
"targetCommand": null,
"targetPayload": null,
"requireFeature": null,
"isEnabled": true,
"lastRunAt": null,
"nextRunAt": null,
"sourceType": "user",
"sourceModule": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/scheduler/jobs?page=1&pageSize=20" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/scheduler/jobsCreates a new scheduled job with cron or interval-based scheduling. Requires features: scheduler.jobs.manage
{
"name": "string",
"description": null,
"scopeType": "system",
"organizationId": null,
"tenantId": null,
"scheduleType": "cron",
"scheduleValue": "string",
"timezone": "UTC",
"targetType": "queue",
"targetQueue": null,
"targetCommand": null,
"targetPayload": null,
"requireFeature": null,
"isEnabled": true,
"sourceType": "user",
"sourceModule": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/scheduler/jobs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"description\": null,
\"scopeType\": \"system\",
\"organizationId\": null,
\"tenantId\": null,
\"scheduleType\": \"cron\",
\"scheduleValue\": \"string\",
\"timezone\": \"UTC\",
\"targetType\": \"queue\",
\"targetQueue\": null,
\"targetCommand\": null,
\"targetPayload\": null,
\"requireFeature\": null,
\"isEnabled\": true,
\"sourceType\": \"user\",
\"sourceModule\": null
}"/scheduler/jobsUpdates an existing scheduled job by ID. Requires features: scheduler.jobs.manage
{
"id": "string",
"description": null,
"targetQueue": null,
"targetCommand": null,
"targetPayload": null,
"requireFeature": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/scheduler/jobs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\",
\"description\": null,
\"targetQueue\": null,
\"targetCommand\": null,
\"targetPayload\": null,
\"requireFeature\": null
}"/scheduler/jobsDeletes a scheduled job by ID. Requires features: scheduler.jobs.manage
{
"id": "string"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/scheduler/jobs" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\"
}"/scheduler/jobs/{id}/executionsFetch recent executions from BullMQ for a scheduled job. Requires QUEUE_STRATEGY=async.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| pageSize | query | No | number | — |
{
"items": [
{
"id": "string",
"scheduleId": "00000000-0000-4000-8000-000000000000",
"startedAt": "string",
"finishedAt": null,
"status": "running",
"triggerType": "scheduled",
"triggeredByUserId": null,
"errorMessage": null,
"errorStack": null,
"durationMs": null,
"queueJobId": "string",
"queueName": "string",
"attemptsMade": 1,
"result": null
}
],
"total": 1,
"page": 1,
"pageSize": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/scheduler/jobs/:id/executions?pageSize=20" \ -H "Accept: application/json"
/scheduler/queue-jobs/{jobId}Fetch detailed information and logs for a queue job. Requires QUEUE_STRATEGY=async.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| jobId | path | Yes | string | — |
| queue | query | Yes | string | — |
{
"id": "string",
"name": "string",
"state": "waiting",
"progress": null,
"returnvalue": null,
"failedReason": null,
"stacktrace": null,
"attemptsMade": 1,
"processedOn": null,
"finishedOn": null,
"logs": [
"string"
]
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/scheduler/queue-jobs/:jobId?queue=string" \ -H "Accept: application/json"
/scheduler/targetsReturns all registered queue names (from module workers) and command IDs (from the command registry) that can be used as schedule targets.
{
"queues": [
{
"value": "string",
"label": "string"
}
],
"commands": [
{
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/scheduler/targets" \ -H "Accept: application/json"
/scheduler/triggerExecutes a scheduled job immediately, bypassing the scheduled time. Only works with async queue strategy.
{
"id": "string"
}{
"ok": true,
"jobId": "string",
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/scheduler/trigger" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"string\"
}"/checkout/linksRequires features: checkout.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/links" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/linksRequires features: checkout.create
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/checkout/links" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/links/{id}Requires features: checkout.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/links/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/links/{id}Requires features: checkout.edit
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/checkout/links/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/links/{id}Requires features: checkout.delete
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/checkout/links/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/pay/{slug}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| slug | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/pay/:slug" \ -H "Accept: application/json"
/checkout/pay/{slug}/status/{transactionId}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| slug | path | Yes | string | — |
| transactionId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/pay/:slug/status/:transactionId" \ -H "Accept: application/json"
/checkout/pay/{slug}/submit| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| slug | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/checkout/pay/:slug/submit" \ -H "Accept: application/json"
/checkout/pay/{slug}/verify-password| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| slug | path | Yes | string | — |
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/checkout/pay/:slug/verify-password" \ -H "Accept: application/json"
/checkout/templatesRequires features: checkout.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/templates" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/templatesRequires features: checkout.create
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/checkout/templates" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/templates/{id}Requires features: checkout.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/templates/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/templates/{id}Requires features: checkout.edit
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/checkout/templates/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/templates/{id}Requires features: checkout.delete
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/checkout/templates/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/templates/{id}/previewRequires features: checkout.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/templates/:id/preview" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/transactionsRequires features: checkout.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/transactions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/transactions/{id}Requires features: checkout.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/transactions/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/checkout/transactions/by-gateway/{gatewayTransactionId}Requires features: checkout.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| gatewayTransactionId | path | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/checkout/transactions/by-gateway/:gatewayTransactionId" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/custom-fieldsRequires features: data_sync.configure
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/sync_akeneo/custom-fields" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/custom-fieldsRequires features: data_sync.configure
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/sync_akeneo/custom-fields" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/delete-productsRequires features: data_sync.configure
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/sync_akeneo/delete-products" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/discoveryRequires features: data_sync.configure
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/sync_akeneo/discovery" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/first-importRequires features: data_sync.configure
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/sync_akeneo/first-import" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sync_akeneo/first-importRequires features: data_sync.run
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/sync_akeneo/first-import" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooksReturns paginated webhooks for the current tenant and organization. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | string | — |
| pageSize | query | No | string | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
{
"items": [
{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooksCreates a new webhook endpoint. A signing secret (whsec_ prefixed) is auto-generated and returned once. Requires features: webhooks.manage
{
"name": "string",
"description": null,
"url": "https://example.com/resource",
"subscribedEvents": [
"string"
],
"httpMethod": "POST",
"customHeaders": null,
"deliveryStrategy": "http",
"strategyConfig": null,
"maxRetries": 10,
"timeoutMs": 15000,
"rateLimitPerMinute": 0,
"autoDisableThreshold": 100,
"integrationId": null
}{
"id": "string",
"name": "string",
"url": "string",
"secret": "string",
"subscribedEvents": [
"string"
],
"isActive": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"description\": null,
\"url\": \"https://example.com/resource\",
\"subscribedEvents\": [
\"string\"
],
\"httpMethod\": \"POST\",
\"customHeaders\": null,
\"deliveryStrategy\": \"http\",
\"strategyConfig\": null,
\"maxRetries\": 10,
\"timeoutMs\": 15000,
\"rateLimitPerMinute\": 0,
\"autoDisableThreshold\": 100,
\"integrationId\": null
}"/webhooks/{id}Returns webhook configuration, masked secret metadata, and delivery settings. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string",
"customHeaders": null,
"strategyConfig": null,
"timeoutMs": 1,
"rateLimitPerMinute": 1,
"autoDisableThreshold": 1,
"integrationId": null,
"maskedSecret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/{id}Updates a single webhook configuration. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"description": null,
"httpMethod": "POST",
"customHeaders": null,
"deliveryStrategy": "http",
"strategyConfig": null,
"maxRetries": 10,
"timeoutMs": 15000,
"rateLimitPerMinute": 0,
"autoDisableThreshold": 100,
"integrationId": null
}{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string",
"customHeaders": null,
"strategyConfig": null,
"timeoutMs": 1,
"rateLimitPerMinute": 1,
"autoDisableThreshold": 1,
"integrationId": null,
"maskedSecret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/webhooks/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"description\": null,
\"httpMethod\": \"POST\",
\"customHeaders\": null,
\"deliveryStrategy\": \"http\",
\"strategyConfig\": null,
\"maxRetries\": 10,
\"timeoutMs\": 15000,
\"rateLimitPerMinute\": 0,
\"autoDisableThreshold\": 100,
\"integrationId\": null
}"/webhooks/{id}Soft-deletes a webhook endpoint. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/webhooks/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/{id}/rotate-secretReturns the new secret once. Store it immediately; future reads only expose a masked value. Requires features: webhooks.secrets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true,
"secret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/00000000-0000-4000-8000-000000000000/rotate-secret" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/{id}/testCreates a synthetic event payload and delivers it immediately without using the queue. Requires features: webhooks.test
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"success": true,
"delivery": {
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/00000000-0000-4000-8000-000000000000/test" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/webhooks/deliveriesReturns paginated webhook delivery attempts with filtering by webhook, event type, and status. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| webhookId | query | No | string | — |
| eventType | query | No | string | — |
| status | query | No | string | — |
{
"items": [
{
"id": "string",
"webhookId": "string",
"webhookName": null,
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/deliveries?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/deliveries/{id}Returns a single delivery attempt by ID. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/deliveries/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/deliveries/{id}/retryResets retry scheduling fields and enqueues the delivery again. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true,
"delivery": {
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/deliveries/00000000-0000-4000-8000-000000000000/retry" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/eventsReturns all declared non-webhook events, sorted by event id. Requires features: webhooks.view
{
"data": [
{
"id": "string",
"label": "string"
}
],
"total": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/events" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/inbound/{endpointId}Endpoint ids currently resolve to registered adapter provider keys.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| endpointId | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/inbound/string" \ -H "Accept: application/json"
/webhooks/webhook-deliveriesReturns paginated webhook delivery attempts with filtering by webhook, event type, and status. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| webhookId | query | No | string | — |
| eventType | query | No | string | — |
| status | query | No | string | — |
{
"items": [
{
"id": "string",
"webhookId": "string",
"webhookName": null,
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/webhook-deliveries?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhook-deliveries/{id}Returns a single delivery attempt by ID. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/webhook-deliveries/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhook-deliveries/{id}/retryResets retry scheduling fields and enqueues the delivery again. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true,
"delivery": {
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/webhook-deliveries/00000000-0000-4000-8000-000000000000/retry" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooksReturns paginated webhooks for the current tenant and organization. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | string | — |
| pageSize | query | No | string | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
{
"items": [
{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooksCreates a new webhook endpoint. A signing secret (whsec_ prefixed) is auto-generated and returned once. Requires features: webhooks.manage
{
"name": "string",
"description": null,
"url": "https://example.com/resource",
"subscribedEvents": [
"string"
],
"httpMethod": "POST",
"customHeaders": null,
"deliveryStrategy": "http",
"strategyConfig": null,
"maxRetries": 10,
"timeoutMs": 15000,
"rateLimitPerMinute": 0,
"autoDisableThreshold": 100,
"integrationId": null
}{
"id": "string",
"name": "string",
"url": "string",
"secret": "string",
"subscribedEvents": [
"string"
],
"isActive": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"description\": null,
\"url\": \"https://example.com/resource\",
\"subscribedEvents\": [
\"string\"
],
\"httpMethod\": \"POST\",
\"customHeaders\": null,
\"deliveryStrategy\": \"http\",
\"strategyConfig\": null,
\"maxRetries\": 10,
\"timeoutMs\": 15000,
\"rateLimitPerMinute\": 0,
\"autoDisableThreshold\": 100,
\"integrationId\": null
}"/webhooks/webhooksUpdates an existing webhook configuration. Requires features: webhooks.manage
{
"description": null,
"httpMethod": "POST",
"customHeaders": null,
"deliveryStrategy": "http",
"strategyConfig": null,
"maxRetries": 10,
"timeoutMs": 15000,
"rateLimitPerMinute": 0,
"autoDisableThreshold": 100,
"integrationId": null
}{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string",
"customHeaders": null,
"strategyConfig": null,
"timeoutMs": 1,
"rateLimitPerMinute": 1,
"autoDisableThreshold": 1,
"integrationId": null
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"description\": null,
\"httpMethod\": \"POST\",
\"customHeaders\": null,
\"deliveryStrategy\": \"http\",
\"strategyConfig\": null,
\"maxRetries\": 10,
\"timeoutMs\": 15000,
\"rateLimitPerMinute\": 0,
\"autoDisableThreshold\": 100,
\"integrationId\": null
}"/webhooks/webhooksSoft-deletes a webhook endpoint. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | Yes | string | Webhook ID to delete |
{
"success": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks?id=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooks/{id}Returns webhook configuration, masked secret metadata, and delivery settings. Requires features: webhooks.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string",
"customHeaders": null,
"strategyConfig": null,
"timeoutMs": 1,
"rateLimitPerMinute": 1,
"autoDisableThreshold": 1,
"integrationId": null,
"maskedSecret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooks/{id}Updates a single webhook configuration. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"description": null,
"httpMethod": "POST",
"customHeaders": null,
"deliveryStrategy": "http",
"strategyConfig": null,
"maxRetries": 10,
"timeoutMs": 15000,
"rateLimitPerMinute": 0,
"autoDisableThreshold": 100,
"integrationId": null
}{
"id": "string",
"name": "string",
"description": null,
"url": "string",
"subscribedEvents": [
"string"
],
"httpMethod": "string",
"isActive": true,
"deliveryStrategy": "string",
"maxRetries": 1,
"consecutiveFailures": 1,
"lastSuccessAt": null,
"lastFailureAt": null,
"createdAt": "string",
"updatedAt": "string",
"customHeaders": null,
"strategyConfig": null,
"timeoutMs": 1,
"rateLimitPerMinute": 1,
"autoDisableThreshold": 1,
"integrationId": null,
"maskedSecret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"description\": null,
\"httpMethod\": \"POST\",
\"customHeaders\": null,
\"deliveryStrategy\": \"http\",
\"strategyConfig\": null,
\"maxRetries\": 10,
\"timeoutMs\": 15000,
\"rateLimitPerMinute\": 0,
\"autoDisableThreshold\": 100,
\"integrationId\": null
}"/webhooks/webhooks/{id}Soft-deletes a webhook endpoint. Requires features: webhooks.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooks/{id}/rotate-secretReturns the new secret once. Store it immediately; future reads only expose a masked value. Requires features: webhooks.secrets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"success": true,
"secret": "string",
"previousSecretSetAt": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks/00000000-0000-4000-8000-000000000000/rotate-secret" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/webhooks/webhooks/{id}/testCreates a synthetic event payload and delivers it immediately without using the queue. Requires features: webhooks.test
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"success": true,
"delivery": {
"id": "string",
"webhookId": "string",
"eventType": "string",
"messageId": "string",
"status": "string",
"responseStatus": null,
"errorMessage": null,
"attemptNumber": 1,
"maxAttempts": 1,
"targetUrl": "string",
"durationMs": null,
"enqueuedAt": "string",
"lastAttemptAt": null,
"deliveredAt": null,
"createdAt": "string",
"payload": {},
"responseBody": null,
"responseHeaders": null,
"nextRetryAt": null,
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/webhooks/webhooks/00000000-0000-4000-8000-000000000000/test" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/customer_accounts/portal/events/streamLong-lived SSE connection that receives server-side events marked with portalBroadcast: true. Events are filtered by the customer's tenant and organization.
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/events/stream" \ -H "Accept: application/json"
/customer_accounts/portal/feature-checkChecks which of the requested features the authenticated customer user has. Used by portal menu injection for feature-gating.
{
"features": [
"string"
]
}{
"ok": true,
"granted": [
"string"
]
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/feature-check" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"features\": [
\"string\"
]
}"/customer_accounts/portal/logoutRevokes the current session and clears authentication cookies.
{
"ok": true
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/logout" \ -H "Accept: application/json"
/customer_accounts/portal/notificationsReturns paginated notifications for the authenticated customer user. Dismissed notifications are excluded by default unless ?status=dismissed is specified.
{
"ok": true,
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"type": "string",
"title": "string",
"body": null,
"titleKey": null,
"bodyKey": null,
"titleVariables": null,
"bodyVariables": null,
"icon": null,
"severity": "info",
"status": "unread",
"actions": [
{
"id": "string",
"label": "string"
}
],
"sourceModule": null,
"sourceEntityType": null,
"sourceEntityId": null,
"linkHref": null,
"createdAt": "string",
"readAt": null,
"actionTaken": null
}
],
"total": 1,
"page": 1,
"pageSize": 1
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/notifications" \ -H "Accept: application/json"
/customer_accounts/portal/notifications/{id}/dismissDismisses a single notification for the authenticated customer user.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/notifications/00000000-0000-4000-8000-000000000000/dismiss" \ -H "Accept: application/json"
/customer_accounts/portal/notifications/{id}/readMarks a single notification as read for the authenticated customer user.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/notifications/00000000-0000-4000-8000-000000000000/read" \ -H "Accept: application/json"
/customer_accounts/portal/notifications/mark-all-readMarks all unread notifications as read for the authenticated customer user.
{
"ok": true,
"count": 1
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/notifications/mark-all-read" \ -H "Accept: application/json"
/customer_accounts/portal/notifications/unread-countReturns the number of unread notifications for the authenticated customer user.
{
"ok": true,
"unreadCount": 1
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/notifications/unread-count" \ -H "Accept: application/json"
/customer_accounts/portal/password-changeChanges the authenticated customer user password after verifying the current password.
{
"currentPassword": "string",
"newPassword": "string"
}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/password-change" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"currentPassword\": \"string\",
\"newPassword\": \"string\"
}"/customer_accounts/portal/profileReturns the authenticated customer user profile with roles and permissions.
{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string",
"emailVerified": true,
"customerEntityId": null,
"personEntityId": null,
"isActive": true,
"lastLoginAt": null,
"createdAt": "string"
},
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string"
}
],
"resolvedFeatures": [
"string"
],
"isPortalAdmin": true
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/profile" \ -H "Accept: application/json"
/customer_accounts/portal/profileUpdates the authenticated customer user profile.
{}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string"
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/profile" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/customer_accounts/portal/sessionsReturns active sessions for the authenticated customer user.
{
"ok": true,
"sessions": [
{
"id": "00000000-0000-4000-8000-000000000000",
"ipAddress": null,
"userAgent": null,
"lastUsedAt": null,
"createdAt": "string",
"expiresAt": "string",
"isCurrent": true
}
]
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/sessions" \ -H "Accept: application/json"
/customer_accounts/portal/sessions-refreshUses the session cookie to issue a fresh JWT access token.
{
"ok": true,
"resolvedFeatures": [
"string"
]
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/sessions-refresh" \ -H "Accept: application/json"
/customer_accounts/portal/sessions/{id}Revokes a specific session (not the current one).
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/sessions/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/portal/usersLists all portal users associated with the same company.
{
"ok": true,
"users": [
{
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string",
"emailVerified": true,
"isActive": true,
"lastLoginAt": null,
"createdAt": "string",
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string"
}
]
}
]
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/users" \ -H "Accept: application/json"
/customer_accounts/portal/users-inviteCreates an invitation for a new user to join the company portal.
{
"email": "user@example.com",
"roleIds": [
"00000000-0000-4000-8000-000000000000"
]
}{
"ok": true,
"invitation": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"expiresAt": "string"
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/users-invite" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"roleIds\": [
\"00000000-0000-4000-8000-000000000000\"
]
}"/customer_accounts/portal/users/{id}Soft deletes a portal user and revokes all their sessions.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/users/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/portal/users/{id}/rolesAssigns new roles to a company portal user.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"roleIds": [
"00000000-0000-4000-8000-000000000000"
]
}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/portal/users/00000000-0000-4000-8000-000000000000/roles" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"roleIds\": [
\"00000000-0000-4000-8000-000000000000\"
]
}"/insurance/leads/injectAccepts a Strapi insurance inquiry payload, maps it to Open Mercato lead format, resolves the referring partner by referral code (creating a partner record when missing), creates the lead, and imports remote attachments (same storage as `POST /api/insurance/leads/{id}/attachments`). Response uses `id` like `POST /api/insurance/leads`. Authenticate with an API key scoped to the target tenant/organization and granted `insurance_desk.leads.inject`. Requires features: insurance_desk.leads.inject
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"externalId": "string",
"payload": {}
}{
"id": "00000000-0000-4000-8000-000000000000",
"created": false,
"referringPartnerEntityId": null,
"attachments": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"url": "string"
}
]
}{
"id": "00000000-0000-4000-8000-000000000000",
"created": true,
"referringPartnerEntityId": null,
"attachments": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"url": "string"
}
]
}{}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/insurance/leads/inject" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"externalId\": \"string\",
\"payload\": {}
}"/customers/deals/injectParses a Strapi payload (cooperation form or insurance wizard), resolves the referring partner, creates a CRM person when contact data is present, and opens a deal linked to that person. Response uses `id` like `POST /api/customers/deals`. Requires API key with `lead_intake.deals.inject`. Requires features: lead_intake.deals.inject
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"externalId": "string",
"payload": {}
}{
"id": "00000000-0000-4000-8000-000000000000",
"created": false,
"personEntityId": null,
"referringPartnerEntityId": null,
"commentId": null
}{
"id": "00000000-0000-4000-8000-000000000000",
"created": true,
"personEntityId": null,
"referringPartnerEntityId": null,
"commentId": null
}{}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/deals/inject" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"externalId\": \"string\",
\"payload\": {}
}"/lead-intakeRequires features: lead_intake.submit
{
"fullName": "string",
"primaryEmail": "string",
"vehicle": "string",
"message": "string",
"marketingConsent": true
}{
"personEntityId": "00000000-0000-4000-8000-000000000000",
"personProfileId": null,
"dealId": "00000000-0000-4000-8000-000000000000",
"commentId": null
}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/lead-intake" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"fullName\": \"string\",
\"primaryEmail\": \"string\",
\"vehicle\": \"string\",
\"message\": \"string\",
\"marketingConsent\": true
}"/auth/users/consentsReturns all consent records for a given user, with integrity verification status. Requires features: auth.users.edit
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| userId | query | Yes | string | — |
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/auth/users/consents?userId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/categoriesReturns a paginated collection of categories scoped to the authenticated organization. Requires features: catalog.categories.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| view | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| status | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": null,
"description": null,
"parentId": null,
"parentName": null,
"depth": 1,
"treePath": "string",
"pathLabel": "string",
"childCount": 1,
"descendantCount": 1,
"isActive": true,
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/categories?view=manage&page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/categoriesCreates a new product category. Requires features: catalog.categories.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": null,
"parentId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/categories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"slug\": null,
\"parentId\": null
}"/catalog/categoriesUpdates an existing category by id. Requires features: catalog.categories.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"slug": null,
"parentId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/categories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"slug\": null,
\"parentId\": null
}"/catalog/categoriesDeletes a category by id. Requires features: catalog.categories.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/categories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/dictionaries/{key}Returns dictionary entries for a specific key (e.g., currency, unit). Requires features: catalog.products.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| key | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"entries": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string",
"color": null,
"icon": null
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/dictionaries/:key" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/offersReturns a paginated collection of offers scoped to the authenticated organization. Requires features: sales.channels.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| productId | query | No | string | — |
| channelId | query | No | string | — |
| channelIds | query | No | string | — |
| id | query | No | string | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| withDeleted | query | No | boolean | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"productId": null,
"organizationId": null,
"tenantId": null,
"channelId": null,
"title": "string",
"description": null,
"defaultMediaId": null,
"defaultMediaUrl": null,
"metadata": null,
"isActive": null,
"createdAt": null,
"updatedAt": null,
"product": null,
"productChannelPrice": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/offers?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/offersCreates a new offer linking a product to a sales channel. Requires features: sales.channels.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"channelId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"defaultMediaId": null,
"defaultMediaUrl": null,
"productId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/offers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"channelId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"defaultMediaId\": null,
\"defaultMediaUrl\": null,
\"productId\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/offersUpdates an existing offer by id. Requires features: sales.channels.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"defaultMediaId": null,
"defaultMediaUrl": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/offers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"defaultMediaId\": null,
\"defaultMediaUrl\": null
}"/catalog/offersDeletes an offer by id. Requires features: sales.channels.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/offers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/option-schemasReturns a paginated collection of option schemas scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": null,
"description": null,
"schema": null,
"metadata": null,
"is_active": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/option-schemas?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/option-schemasCreates a new option schema template for product configurations. Requires features: catalog.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"schema": {
"options": [
{
"code": "string",
"label": "string",
"inputType": "select"
}
]
}
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/option-schemas" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"schema\": {
\"options\": [
{
\"code\": \"string\",
\"label\": \"string\",
\"inputType\": \"select\"
}
]
}
}"/catalog/option-schemasUpdates an existing option schema by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/option-schemas" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/option-schemasDeletes an option schema by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/option-schemas" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/price-kindsReturns a paginated collection of price kinds scoped to the authenticated organization. Requires features: catalog.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isPromotion | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"organization_id": null,
"tenant_id": null,
"code": "string",
"title": "string",
"display_mode": null,
"currency_code": null,
"is_promotion": null,
"is_active": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/price-kinds?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/price-kindsCreates a new price kind for categorizing product prices. Requires features: catalog.settings.manage
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string",
"displayMode": "excluding-tax"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/price-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"code\": \"string\",
\"title\": \"string\",
\"displayMode\": \"excluding-tax\"
}"/catalog/price-kindsUpdates an existing price kind by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"displayMode": "excluding-tax"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/price-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"displayMode\": \"excluding-tax\"
}"/catalog/price-kindsDeletes a price kind by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/price-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/pricesReturns a paginated collection of prices scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| productId | query | No | string | — |
| variantId | query | No | string | — |
| offerId | query | No | string | — |
| channelId | query | No | string | — |
| currencyCode | query | No | string | — |
| priceKindId | query | No | string | — |
| kind | query | No | string | — |
| userId | query | No | string | — |
| userGroupId | query | No | string | — |
| customerId | query | No | string | — |
| customerGroupId | query | No | string | — |
| quantity | query | No | number | — |
| quantityUnit | query | No | string | — |
| withDeleted | query | No | boolean | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"product_id": null,
"variant_id": null,
"offer_id": null,
"currency_code": null,
"price_kind_id": null,
"kind": null,
"min_quantity": null,
"max_quantity": null,
"unit_price_net": null,
"unit_price_gross": null,
"tax_rate": null,
"tax_amount": null,
"channel_id": null,
"user_id": null,
"user_group_id": null,
"customer_id": null,
"customer_group_id": null,
"metadata": null,
"starts_at": null,
"ends_at": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/prices?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/pricesCreates a new price entry for a product or variant. Requires features: catalog.pricing.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string",
"priceKindId": "00000000-0000-4000-8000-000000000000",
"taxRateId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/prices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\",
\"priceKindId\": \"00000000-0000-4000-8000-000000000000\",
\"taxRateId\": null
}"/catalog/pricesUpdates an existing price by id. Requires features: catalog.pricing.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"taxRateId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/prices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"taxRateId\": null
}"/catalog/pricesDeletes a price by id. Requires features: catalog.pricing.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/prices" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/product-mediaReturns a list of media attachments for a specific product. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| productId | query | Yes | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"fileName": "string",
"url": "string",
"thumbnailUrl": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/product-media?productId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/product-unit-conversionsReturns a paginated collection of product unit conversions scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| productId | query | No | string | — |
| unitCode | query | No | string | — |
| isActive | query | No | boolean | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"product_id": "00000000-0000-4000-8000-000000000000",
"unit_code": "string",
"to_base_factor": 1,
"sort_order": null,
"is_active": null,
"metadata": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/product-unit-conversions?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/product-unit-conversionsCreates a product unit conversion. Requires features: catalog.products.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"productId": "00000000-0000-4000-8000-000000000000",
"unitCode": "string",
"toBaseFactor": 1
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/product-unit-conversions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"productId\": \"00000000-0000-4000-8000-000000000000\",
\"unitCode\": \"string\",
\"toBaseFactor\": 1
}"/catalog/product-unit-conversionsUpdates an existing product unit conversion by id. Requires features: catalog.products.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/product-unit-conversions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/product-unit-conversionsDeletes a product unit conversion by id. Requires features: catalog.products.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/product-unit-conversions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/productsReturns a paginated collection of products scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| search | query | No | string | — |
| status | query | No | string | — |
| isActive | query | No | string | — |
| configurable | query | No | string | — |
| productType | query | No | string | — |
| channelIds | query | No | string | — |
| channelId | query | No | string | — |
| categoryIds | query | No | string | — |
| tagIds | query | No | string | — |
| offerId | query | No | string | — |
| userId | query | No | string | — |
| userGroupId | query | No | string | — |
| customerId | query | No | string | — |
| customerGroupId | query | No | string | — |
| quantity | query | No | number | — |
| quantityUnit | query | No | string | — |
| priceDate | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| customFieldset | query | No | string | — |
| serviceLineId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"subtitle": null,
"description": null,
"sku": null,
"handle": null,
"service_line_id": null,
"product_type": null,
"status_entry_id": null,
"primary_currency_code": null,
"default_unit": null,
"default_sales_unit": null,
"default_sales_unit_quantity": null,
"uom_rounding_scale": null,
"uom_rounding_mode": null,
"unit_price_enabled": null,
"unit_price_reference_unit": null,
"unit_price_base_quantity": null,
"default_media_id": null,
"default_media_url": null,
"weight_value": null,
"weight_unit": null,
"dimensions": null,
"is_configurable": null,
"is_active": null,
"metadata": null,
"custom_fieldset_code": null,
"option_schema_id": null,
"created_at": null,
"updated_at": null,
"pricing": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/products?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/productsCreates a new product in the catalog. Requires features: catalog.products.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"sku": null,
"taxRateId": null,
"taxRate": null,
"productType": "simple",
"defaultUnit": null,
"defaultSalesUnit": null,
"unitPriceReferenceUnit": null,
"defaultMediaId": null,
"defaultMediaUrl": null,
"weightValue": null,
"weightUnit": null,
"dimensions": null,
"optionSchemaId": null,
"customFieldsetCode": null,
"serviceLineId": null,
"serviceLineAttributes": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/products" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"sku\": null,
\"taxRateId\": null,
\"taxRate\": null,
\"productType\": \"simple\",
\"defaultUnit\": null,
\"defaultSalesUnit\": null,
\"unitPriceReferenceUnit\": null,
\"defaultMediaId\": null,
\"defaultMediaUrl\": null,
\"weightValue\": null,
\"weightUnit\": null,
\"dimensions\": null,
\"optionSchemaId\": null,
\"customFieldsetCode\": null,
\"serviceLineId\": null,
\"serviceLineAttributes\": null
}"/catalog/productsUpdates an existing product by id. Requires features: catalog.products.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"sku": null,
"taxRateId": null,
"taxRate": null,
"defaultUnit": null,
"defaultSalesUnit": null,
"unitPriceReferenceUnit": null,
"defaultMediaId": null,
"defaultMediaUrl": null,
"weightValue": null,
"weightUnit": null,
"dimensions": null,
"optionSchemaId": null,
"customFieldsetCode": null,
"serviceLineId": null,
"serviceLineAttributes": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/products" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"sku\": null,
\"taxRateId\": null,
\"taxRate\": null,
\"defaultUnit\": null,
\"defaultSalesUnit\": null,
\"unitPriceReferenceUnit\": null,
\"defaultMediaId\": null,
\"defaultMediaUrl\": null,
\"weightValue\": null,
\"weightUnit\": null,
\"dimensions\": null,
\"optionSchemaId\": null,
\"customFieldsetCode\": null,
\"serviceLineId\": null,
\"serviceLineAttributes\": null
}"/catalog/productsDeletes a product by id. Requires features: catalog.products.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/products" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/service-linesReturns a paginated collection of service lines scoped to the authenticated organization. Requires features: catalog.serviceLines.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"organization_id": null,
"tenant_id": null,
"code": "string",
"title": "string",
"description": null,
"sort_order": null,
"is_active": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/service-lines?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/service-linesCreates a service line used to classify catalog products (e.g. financing, insurance). Requires features: catalog.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/service-lines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"code\": \"string\",
\"title\": \"string\"
}"/catalog/service-linesUpdates an existing service line by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/service-lines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/service-linesDeletes a service line by id. Requires features: catalog.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/service-lines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/catalog/tagsReturns a paginated collection of product tags scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| search | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"label": "string",
"slug": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/tags?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/variantsReturns a paginated collection of variants scoped to the authenticated organization. Requires features: catalog.products.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| search | query | No | string | — |
| productId | query | No | string | — |
| sku | query | No | string | — |
| isActive | query | No | string | — |
| isDefault | query | No | string | — |
| withDeleted | query | No | boolean | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"product_id": null,
"name": null,
"sku": null,
"barcode": null,
"status_entry_id": null,
"is_default": null,
"is_active": null,
"weight_value": null,
"weight_unit": null,
"dimensions": null,
"metadata": null,
"option_values": null,
"custom_fieldset_code": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/catalog/variants?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/catalog/variantsCreates a new product variant. Requires features: catalog.variants.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"productId": "00000000-0000-4000-8000-000000000000",
"defaultMediaId": null,
"defaultMediaUrl": null,
"taxRateId": null,
"taxRate": null,
"customFieldsetCode": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/catalog/variants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"productId\": \"00000000-0000-4000-8000-000000000000\",
\"defaultMediaId\": null,
\"defaultMediaUrl\": null,
\"taxRateId\": null,
\"taxRate\": null,
\"customFieldsetCode\": null
}"/catalog/variantsUpdates an existing variant by id. Requires features: catalog.variants.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"defaultMediaId": null,
"defaultMediaUrl": null,
"taxRateId": null,
"taxRate": null,
"customFieldsetCode": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/catalog/variants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"defaultMediaId\": null,
\"defaultMediaUrl\": null,
\"taxRateId\": null,
\"taxRate\": null,
\"customFieldsetCode\": null
}"/catalog/variantsDeletes a variant by id. Requires features: catalog.variants.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/catalog/variants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/configs/cacheReturns detailed cache statistics including total entries and breakdown by cache segments. Requires cache service to be available. Requires features: configs.cache.view
{
"total": 1,
"segments": {
"key": 1
}
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/configs/cache" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/configs/cachePurges cache entries. Supports two actions: purgeAll (clears entire cache) or purgeSegment (clears specific segment). Returns updated cache statistics after purge. Requires features: configs.cache.manage
{
"action": "purgeAll"
}{
"action": "purgeSegment",
"segment": "string",
"deleted": 1,
"stats": {
"total": 1,
"segments": {
"key": 1
}
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/configs/cache" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"action\": \"purgeAll\"
}"/configs/system-statusReturns comprehensive system health information including environment details, version, resource usage, and service connectivity status. Requires features: configs.system_status.view
{
"generatedAt": "string",
"runtimeMode": "development",
"categories": [
{
"key": "profiling",
"labelKey": "string",
"descriptionKey": null,
"items": [
{
"key": "string",
"category": "profiling",
"kind": "boolean",
"labelKey": "string",
"descriptionKey": "string",
"docUrl": null,
"defaultValue": null,
"state": "enabled",
"value": null,
"normalizedValue": null
}
]
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/configs/system-status" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/configs/system-statusPurges the entire cache for the current tenant. Useful for troubleshooting or forcing fresh data loading. Requires features: configs.manage
{
"cleared": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/configs/system-status" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/configs/upgrade-actionsReturns a list of pending upgrade actions for the current version. These are one-time setup tasks that need to be executed after upgrading to a new version. Requires organization and tenant context. Requires features: configs.manage
{
"version": "string",
"actions": [
{
"id": "string",
"version": "string",
"message": "string",
"ctaLabel": "string",
"successMessage": "string",
"loadingLabel": "string"
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/configs/upgrade-actions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/configs/upgrade-actionsExecutes a specific upgrade action by ID. Typically used for one-time setup tasks like seeding example data after version upgrade. Returns execution status and localized success message. Requires features: configs.manage
{
"actionId": "string"
}{
"status": "string",
"message": "string",
"version": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/configs/upgrade-actions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"actionId\": \"string\"
}"/customer_accounts/admin/rolesReturns all customer roles for the tenant.
{
"ok": true,
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string",
"description": null,
"isDefault": true,
"isSystem": true,
"customerAssignable": true,
"createdAt": "string"
}
],
"total": 1,
"totalPages": 1,
"page": 1
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles" \ -H "Accept: application/json"
/customer_accounts/admin/rolesCreates a new customer role with an empty ACL.
{
"name": "string",
"slug": "string"
}{
"ok": true,
"role": {
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string",
"description": null,
"isDefault": true,
"isSystem": true,
"customerAssignable": true,
"createdAt": "string"
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"slug\": \"string\"
}"/customer_accounts/admin/roles/{id}Returns full customer role details including ACL features.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"role": {
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string",
"description": null,
"isDefault": true,
"isSystem": true,
"customerAssignable": true,
"createdAt": "string",
"updatedAt": null,
"acl": {
"features": [
"string"
],
"isPortalAdmin": true
}
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/admin/roles/{id}Updates a customer role. System roles are protected from name changes.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/customer_accounts/admin/roles/{id}Soft deletes a customer role and its ACL. System roles and roles with assigned users cannot be deleted.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/admin/roles/{id}/aclUpdates the ACL (features and portal admin flag) for a customer role. Invalidates RBAC cache after update.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"features": [
"string"
]
}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/roles/00000000-0000-4000-8000-000000000000/acl" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"features\": [
\"string\"
]
}"/customer_accounts/admin/usersReturns a paginated list of customer users with roles. Supports filtering by status, company, role, and search.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| status | query | No | string | — |
| customerEntityId | query | No | string | — |
| roleId | query | No | string | — |
| search | query | No | string | — |
{
"ok": true,
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string",
"emailVerified": true,
"isActive": true,
"lockedUntil": null,
"lastLoginAt": null,
"customerEntityId": null,
"personEntityId": null,
"createdAt": "string",
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string"
}
]
}
],
"total": 1,
"totalPages": 1,
"page": 1
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users" \ -H "Accept: application/json"
/customer_accounts/admin/usersCreates a new customer user directly. Staff-initiated, bypasses signup flow.
{
"email": "user@example.com",
"password": "string",
"displayName": "string"
}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string"
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"password\": \"string\",
\"displayName\": \"string\"
}"/customer_accounts/admin/users-inviteCreates a staff-initiated invitation for a new customer user. The invitedByUserId is set from the staff auth context.
{
"email": "user@example.com",
"roleIds": [
"00000000-0000-4000-8000-000000000000"
]
}{
"ok": true,
"invitation": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"expiresAt": "string"
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users-invite" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"roleIds\": [
\"00000000-0000-4000-8000-000000000000\"
]
}"/customer_accounts/admin/users/{id}Returns full customer user details including CRM links, roles, and active session count.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "string",
"displayName": "string",
"emailVerified": true,
"isActive": true,
"lockedUntil": null,
"lastLoginAt": null,
"failedLoginAttempts": 1,
"customerEntityId": null,
"personEntityId": null,
"createdAt": "string",
"updatedAt": null,
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"slug": "string"
}
],
"activeSessionCount": 1
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/admin/users/{id}Updates a customer user. Staff can update status, lock, CRM links, and roles. Role assignment bypasses customer_assignable check.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"lockedUntil": null,
"personEntityId": null,
"customerEntityId": null
}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"lockedUntil\": null,
\"personEntityId\": null,
\"customerEntityId\": null
}"/customer_accounts/admin/users/{id}Soft deletes a customer user and revokes all their active sessions.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/customer_accounts/admin/users/{id}/reset-passwordAllows staff to set a new password for a customer user.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"newPassword": "string"
}{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000/reset-password" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"newPassword\": \"string\"
}"/customer_accounts/admin/users/{id}/send-reset-linkCreates a password reset token for a customer user and returns a reset link URL. The admin must prepend the appropriate portal domain/slug to the relative URL.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true,
"resetLink": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000/send-reset-link" \ -H "Accept: application/json"
/customer_accounts/admin/users/{id}/verify-emailAllows staff to manually mark a customer user email as verified.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"ok": true
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/admin/users/00000000-0000-4000-8000-000000000000/verify-email" \ -H "Accept: application/json"
/customer_accounts/email/verifyValidates the email verification token and marks the email as verified.
{
"token": "string"
}{
"ok": true
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/email/verify" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"token\": \"string\"
}"/customer_accounts/invitations/acceptAccepts an invitation, creates the user account, assigns roles, and auto-logs in.
{
"token": "string",
"password": "string",
"displayName": "string"
}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"displayName": "string",
"emailVerified": true
},
"resolvedFeatures": [
"string"
]
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/invitations/accept" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"token\": \"string\",
\"password\": \"string\",
\"displayName\": \"string\"
}"/customer_accounts/loginValidates customer credentials and issues JWT + session cookies.
{
"email": "user@example.com",
"password": "string"
}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"displayName": "string",
"emailVerified": true
},
"resolvedFeatures": [
"string"
]
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/login" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"password\": \"string\"
}"/customer_accounts/magic-link/requestSends a magic link to the customer email. Always returns 200 to prevent enumeration.
{
"email": "user@example.com"
}{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/magic-link/request" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\"
}"/customer_accounts/magic-link/verifyValidates the magic link token, auto-verifies email, and creates a session.
{
"token": "string"
}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"displayName": "string",
"emailVerified": true
},
"resolvedFeatures": [
"string"
]
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/magic-link/verify" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"token\": \"string\"
}"/customer_accounts/password/reset-confirmValidates the reset token and sets a new password. Revokes all existing sessions.
{
"token": "string",
"password": "string"
}{
"ok": true
}{
"ok": false,
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/password/reset-confirm" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"token\": \"string\",
\"password\": \"string\"
}"/customer_accounts/password/reset-requestInitiates a password reset flow. Always returns 200 to prevent email enumeration.
{
"email": "user@example.com"
}{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/password/reset-request" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\"
}"/customer_accounts/signupCreates a new customer user account and sends an email verification token.
{
"email": "user@example.com",
"password": "string",
"displayName": "string"
}{
"ok": true,
"user": {
"id": "00000000-0000-4000-8000-000000000000",
"email": "user@example.com",
"displayName": "string",
"emailVerified": true
}
}{
"ok": false,
"error": "string"
}{
"ok": false,
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customer_accounts/signup" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"password\": \"string\",
\"displayName\": \"string\"
}"/customers/activitiesReturns a paginated collection of activitys scoped to the authenticated organization. Requires features: customers.activities.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| dealId | query | No | string | — |
| activityType | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"subject": null,
"body": null,
"occurredAt": null,
"createdAt": "string",
"appearanceIcon": null,
"appearanceColor": null,
"entityId": null,
"authorUserId": null,
"authorName": null,
"authorEmail": null,
"dealId": null,
"dealTitle": null,
"customValues": null,
"activityTypeLabel": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/activities?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/activitiesDEPRECATED (sunset 2026-06-30): Creates a timeline activity. Use POST /api/customers/interactions instead. Requires features: customers.activities.manage
{
"entityId": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"activityType\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/customers/activitiesDEPRECATED (sunset 2026-06-30): Updates an activity. Use PUT /api/customers/interactions instead. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/customers/activitiesDEPRECATED (sunset 2026-06-30): Deletes an activity. Use DELETE /api/customers/interactions instead. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/addressesReturns a paginated collection of addresss scoped to the authenticated organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entity_id": "00000000-0000-4000-8000-000000000000",
"name": null,
"purpose": null,
"company_name": null,
"address_line1": null,
"address_line2": null,
"building_number": null,
"flat_number": null,
"city": null,
"region": null,
"postal_code": null,
"country": null,
"latitude": null,
"longitude": null,
"is_primary": null,
"organization_id": null,
"tenant_id": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/addresses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/addressesCreates a customer address record and associates it with the referenced entity.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"addressLine1": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"addressLine1\": \"string\"
}"/customers/addressesUpdates fields on an existing customer address.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/addressesDeletes an address by id. The identifier may be included in the body or query.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/commentsReturns a paginated collection of comments scoped to the authenticated organization. Requires features: customers.activities.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| dealId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entity_id": null,
"deal_id": null,
"body": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/comments?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/commentsAdds a comment to a customer timeline. Requires features: customers.activities.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"body": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"body\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/customers/commentsUpdates an existing timeline comment. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/customers/commentsDeletes a comment identified by `id` supplied via body or query string. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/companiesReturns a paginated collection of companies scoped to the authenticated organization. Requires features: customers.companies.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| query | No | string | — | |
| emailStartsWith | query | No | string | — |
| emailContains | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| status | query | No | string | — |
| lifecycleStage | query | No | string | — |
| source | query | No | string | — |
| hasEmail | query | No | string | — |
| hasPhone | query | No | string | — |
| hasNextInteraction | query | No | string | — |
| createdFrom | query | No | string | — |
| createdTo | query | No | string | — |
| crmRecordTypes | query | No | string | — |
| id | query | No | string | — |
| tagIds | query | No | string | — |
| tagIdsEmpty | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"owner_user_id": null,
"primary_email": null,
"primary_phone": null,
"status": null,
"lifecycle_stage": null,
"source": null,
"next_interaction_at": null,
"next_interaction_name": null,
"next_interaction_ref_id": null,
"next_interaction_icon": null,
"next_interaction_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/companies?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/companiesCreates a company record and associated profile data. Requires features: customers.companies.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"displayName": "string",
"nextInteraction": null,
"referralCode": null
}{
"id": null,
"companyId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/companies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"displayName\": \"string\",
\"nextInteraction\": null,
\"referralCode\": null
}"/customers/companiesUpdates company profile fields, tags, or custom attributes. Requires features: customers.companies.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"nextInteraction": null,
"referralCode": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/companies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"nextInteraction\": null,
\"referralCode\": null
}"/customers/companiesDeletes a company by id. The identifier can be provided via body or query. Requires features: customers.companies.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/companies" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/companies/{id}Returns a company customer record with optional related resources such as addresses, comments, activities, interactions, deals, todos, and linked people.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| include | query | No | string | Comma-separated list of relations to include (addresses, comments, activities, interactions, deals, todos, people). |
{
"interactionMode": "canonical",
"company": {
"id": "00000000-0000-4000-8000-000000000000",
"referralCode": null,
"displayName": null,
"description": null,
"ownerUserId": null,
"primaryEmail": null,
"primaryPhone": null,
"status": null,
"lifecycleStage": null,
"source": null,
"nextInteractionAt": null,
"nextInteractionName": null,
"nextInteractionRefId": null,
"nextInteractionIcon": null,
"nextInteractionColor": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
},
"profile": null,
"customFields": {},
"tags": [
{
"id": "00000000-0000-4000-8000-000000000000",
"label": "string",
"color": null
}
],
"addresses": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": null,
"purpose": null,
"addressLine1": null,
"addressLine2": null,
"buildingNumber": null,
"flatNumber": null,
"city": null,
"region": null,
"postalCode": null,
"country": null,
"latitude": null,
"longitude": null,
"isPrimary": null,
"createdAt": "string"
}
],
"comments": [
{
"id": "00000000-0000-4000-8000-000000000000",
"body": null,
"authorUserId": null,
"authorName": null,
"authorEmail": null,
"dealId": null,
"createdAt": "string",
"appearanceIcon": null,
"appearanceColor": null
}
],
"activities": [
{
"id": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"subject": null,
"body": null,
"occurredAt": null,
"dealId": null,
"authorUserId": null,
"authorName": null,
"authorEmail": null,
"createdAt": "string",
"appearanceIcon": null,
"appearanceColor": null
}
],
"interactions": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityId": null,
"interactionType": "string",
"title": null,
"body": null,
"status": "string",
"scheduledAt": null,
"occurredAt": null,
"priority": null,
"authorUserId": null,
"ownerUserId": null,
"dealId": null,
"organizationId": null,
"tenantId": null,
"authorName": null,
"authorEmail": null,
"dealTitle": null,
"customValues": null,
"appearanceIcon": null,
"appearanceColor": null,
"source": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"deals": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"status": null,
"pipelineStage": null,
"valueAmount": null,
"valueCurrency": null,
"probability": null,
"expectedCloseAt": null,
"ownerUserId": null,
"source": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"todos": [
{
"id": "00000000-0000-4000-8000-000000000000",
"todoId": "00000000-0000-4000-8000-000000000000",
"todoSource": "string",
"createdAt": "string",
"createdByUserId": null,
"title": null,
"isDone": null,
"priority": null,
"severity": null,
"description": null,
"dueAt": null,
"todoOrganizationId": null,
"customValues": null
}
],
"people": [
{
"id": "00000000-0000-4000-8000-000000000000",
"displayName": null,
"primaryEmail": null,
"primaryPhone": null,
"status": null,
"lifecycleStage": null,
"jobTitle": null,
"department": null,
"createdAt": "string",
"organizationId": null
}
],
"viewer": {
"userId": null,
"name": null,
"email": null
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/companies/:id" \ -H "Accept: application/json"
/customers/companies/registry-lookupCalls the public Ministry of Finance VAT whitelist API (wl-api.mf.gov.pl). Rate limits apply.
{}{
"ok": true,
"data": null
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/companies/registry-lookup" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/customers/dashboard/widgets/customer-todosReturns the most recently created todo links for display on dashboards. Requires features: dashboards.view, customers.widgets.todos
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"todoId": "00000000-0000-4000-8000-000000000000",
"todoSource": "string",
"todoTitle": null,
"createdAt": "string",
"organizationId": null,
"entity": {
"id": null,
"displayName": null,
"kind": null,
"ownerUserId": null
}
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dashboard/widgets/customer-todos?limit=5" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dashboard/widgets/new-customersReturns the latest customers created within the scoped tenant/organization for dashboard display. Requires features: dashboards.view, customers.widgets.new-customers
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
| kind | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"displayName": null,
"kind": null,
"organizationId": null,
"createdAt": "string",
"ownerUserId": null
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dashboard/widgets/new-customers?limit=5" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dashboard/widgets/new-dealsReturns the latest deals created within the scoped tenant/organization for dashboard display. Requires features: dashboards.view, customers.widgets.new-deals
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"status": null,
"organizationId": null,
"createdAt": "string",
"ownerUserId": null,
"valueAmount": null,
"valueCurrency": null
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dashboard/widgets/new-deals?limit=5" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dashboard/widgets/next-interactionsLists upcoming (or optionally past) customer interaction reminders ordered by interaction date. Requires features: dashboards.view, customers.widgets.next-interactions
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
| includePast | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"displayName": null,
"kind": null,
"organizationId": null,
"nextInteractionAt": null,
"nextInteractionName": null,
"nextInteractionIcon": null,
"nextInteractionColor": null,
"ownerUserId": null
}
],
"now": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dashboard/widgets/next-interactions?limit=5" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dealsReturns a paginated collection of deals scoped to the authenticated organization. Requires features: customers.deals.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| status | query | No | string | — |
| pipelineStage | query | No | string | — |
| pipelineId | query | No | string | — |
| pipelineStageId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| personEntityId | query | No | string | — |
| companyEntityId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"description": null,
"status": null,
"pipeline_stage": null,
"pipeline_id": null,
"pipeline_stage_id": null,
"value_amount": null,
"value_currency": null,
"probability": null,
"expected_close_at": null,
"owner_user_id": null,
"source": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null,
"organizationId": null,
"tenantId": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/deals?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dealsCreates a sales deal, optionally associating people and companies. Requires features: customers.deals.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"externalId": null,
"payload": null,
"referringPartnerEntityId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/deals" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"externalId\": null,
\"payload\": null,
\"referringPartnerEntityId\": null
}"/customers/dealsUpdates pipeline position, metadata, or associations for an existing deal. Requires features: customers.deals.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"externalId": null,
"payload": null,
"referringPartnerEntityId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/deals" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"externalId\": null,
\"payload\": null,
\"referringPartnerEntityId\": null
}"/customers/dealsDeletes a deal by `id`. The identifier may be provided in the body or query parameters. Requires features: customers.deals.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/deals" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/deals/{id}Returns a deal with linked people, companies, custom fields, and viewer context.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"deal": {
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"description": null,
"status": null,
"pipelineStage": null,
"pipelineId": null,
"pipelineStageId": null,
"valueAmount": null,
"valueCurrency": null,
"probability": null,
"expectedCloseAt": null,
"ownerUserId": null,
"source": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
},
"people": [
{
"id": "00000000-0000-4000-8000-000000000000",
"label": "string",
"subtitle": null,
"kind": "person"
}
],
"companies": [
{
"id": "00000000-0000-4000-8000-000000000000",
"label": "string",
"subtitle": null,
"kind": "company"
}
],
"customFields": {},
"viewer": {
"userId": null,
"name": null,
"email": null
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/deals/:id" \ -H "Accept: application/json"
/customers/dictionaries/{kind}Returns the merged dictionary entries for the requested kind, including inherited values. Requires features: customers.people.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| kind | path | Yes | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dictionaries/:kind" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dictionaries/{kind}Creates a dictionary entry (or updates the existing entry for the same value) within the current organization scope. Requires features: customers.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| kind | path | Yes | string | — |
{
"value": "string"
}{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null
}{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/dictionaries/:kind" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"value\": \"string\"
}"/customers/dictionaries/{kind}/{id}Updates value, label, color, or icon for an existing customer dictionary entry. Requires features: customers.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| kind | path | Yes | string | — |
| id | path | Yes | string | — |
{}{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/customers/dictionaries/:kind/:id" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/customers/dictionaries/{kind}/{id}Removes a customer dictionary entry by identifier. Requires features: customers.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| kind | path | Yes | string | — |
| id | path | Yes | string | — |
{
"success": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/dictionaries/:kind/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/dictionaries/currencyReturns the active currency dictionary for the current organization scope, falling back to shared entries when required. Requires features: customers.people.view
{
"id": "00000000-0000-4000-8000-000000000000",
"entries": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/dictionaries/currency" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/interactionsReturns a paginated collection of interactions scoped to the authenticated organization. Requires features: customers.interactions.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| cursor | query | No | string | — |
| entityId | query | No | string | — |
| dealId | query | No | string | — |
| status | query | No | string | — |
| interactionType | query | No | string | — |
| excludeInteractionType | query | No | string | — |
| from | query | No | string | — |
| to | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityId": null,
"dealId": null,
"interactionType": "string",
"title": null,
"body": null,
"status": "string",
"scheduledAt": null,
"occurredAt": null,
"priority": null,
"authorUserId": null,
"ownerUserId": null,
"appearanceIcon": null,
"appearanceColor": null,
"source": null,
"organizationId": null,
"tenantId": null,
"createdAt": null,
"updatedAt": null,
"authorName": null,
"authorEmail": null,
"dealTitle": null,
"customValues": null
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/interactions?limit=25" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/interactionsCreates a new interaction linked to a customer entity or deal. Requires features: customers.interactions.manage
{
"entityId": "00000000-0000-4000-8000-000000000000",
"interactionType": "string",
"title": null,
"body": null,
"status": "planned",
"scheduledAt": null,
"occurredAt": null,
"priority": null,
"authorUserId": null,
"ownerUserId": null,
"dealId": null,
"appearanceIcon": null,
"appearanceColor": null,
"source": null,
"procurementProcessId": null,
"procurementProcessTaskId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/interactions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"interactionType\": \"string\",
\"title\": null,
\"body\": null,
\"status\": \"planned\",
\"scheduledAt\": null,
\"occurredAt\": null,
\"priority\": null,
\"authorUserId\": null,
\"ownerUserId\": null,
\"dealId\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null,
\"source\": null,
\"procurementProcessId\": null,
\"procurementProcessTaskId\": null
}"/customers/interactionsUpdates fields for an existing interaction. Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"body": null,
"scheduledAt": null,
"occurredAt": null,
"priority": null,
"authorUserId": null,
"ownerUserId": null,
"dealId": null,
"appearanceIcon": null,
"appearanceColor": null,
"procurementProcessId": null,
"procurementProcessTaskId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/interactions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"title\": null,
\"body\": null,
\"scheduledAt\": null,
\"occurredAt\": null,
\"priority\": null,
\"authorUserId\": null,
\"ownerUserId\": null,
\"dealId\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null,
\"procurementProcessId\": null,
\"procurementProcessTaskId\": null
}"/customers/interactionsSoft-deletes an interaction identified by `id`. Accepts id via body or query string. Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/interactions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/interactions/cancelMarks an interaction as canceled. Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/interactions/cancel" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/interactions/completeMarks an interaction as done and sets occurredAt to current time (or a provided timestamp). Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/interactions/complete" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/peopleReturns a paginated collection of people scoped to the authenticated organization. Requires features: customers.people.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| query | No | string | — | |
| emailStartsWith | query | No | string | — |
| emailContains | query | No | string | — |
| status | query | No | string | — |
| lifecycleStage | query | No | string | — |
| source | query | No | string | — |
| hasEmail | query | No | string | — |
| hasPhone | query | No | string | — |
| hasNextInteraction | query | No | string | — |
| createdFrom | query | No | string | — |
| createdTo | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| crmRecordTypes | query | No | string | — |
| id | query | No | string | — |
| tagIds | query | No | string | — |
| tagIdsEmpty | query | No | string | — |
| companyEntityId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"owner_user_id": null,
"primary_email": null,
"primary_phone": null,
"status": null,
"lifecycle_stage": null,
"source": null,
"next_interaction_at": null,
"next_interaction_name": null,
"next_interaction_ref_id": null,
"next_interaction_icon": null,
"next_interaction_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/people?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/peopleCreates a person contact using scoped organization and tenant identifiers. Requires features: customers.people.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"nextInteraction": null,
"referralCode": null,
"firstName": "string",
"lastName": "string",
"companyEntityId": null,
"residenceStreet": null,
"residencePostalCode": null,
"residenceCity": null
}{
"id": null,
"personId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/people" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"nextInteraction\": null,
\"referralCode\": null,
\"firstName\": \"string\",
\"lastName\": \"string\",
\"companyEntityId\": null,
\"residenceStreet\": null,
\"residencePostalCode\": null,
\"residenceCity\": null
}"/customers/peopleUpdates contact details or custom fields for a person. Requires features: customers.people.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"nextInteraction": null,
"referralCode": null,
"companyEntityId": null,
"residenceStreet": null,
"residencePostalCode": null,
"residenceCity": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/people" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"nextInteraction\": null,
\"referralCode\": null,
\"companyEntityId\": null,
\"residenceStreet\": null,
\"residencePostalCode\": null,
\"residenceCity\": null
}"/customers/peopleDeletes a person by id. Request body or query may provide the identifier. Requires features: customers.people.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/people" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/people/{id}Returns a person customer record with optional related resources such as addresses, comments, activities, interactions, deals, and todos.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| include | query | No | string | Comma-separated list of relations to include (addresses, comments, activities, interactions, deals, todos). |
{
"interactionMode": "canonical",
"person": {
"id": "00000000-0000-4000-8000-000000000000",
"referralCode": null,
"displayName": null,
"description": null,
"ownerUserId": null,
"primaryEmail": null,
"primaryPhone": null,
"status": null,
"lifecycleStage": null,
"source": null,
"nextInteractionAt": null,
"nextInteractionName": null,
"nextInteractionRefId": null,
"nextInteractionIcon": null,
"nextInteractionColor": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
},
"profile": null,
"customFields": {},
"tags": [
{
"id": "00000000-0000-4000-8000-000000000000",
"label": "string",
"color": null
}
],
"addresses": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": null,
"purpose": null,
"addressLine1": null,
"addressLine2": null,
"buildingNumber": null,
"flatNumber": null,
"city": null,
"region": null,
"postalCode": null,
"country": null,
"latitude": null,
"longitude": null,
"isPrimary": null,
"createdAt": "string"
}
],
"comments": [
{
"id": "00000000-0000-4000-8000-000000000000",
"body": null,
"authorUserId": null,
"authorName": null,
"authorEmail": null,
"dealId": null,
"createdAt": "string",
"appearanceIcon": null,
"appearanceColor": null
}
],
"activities": [
{
"id": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"subject": null,
"body": null,
"occurredAt": null,
"dealId": null,
"authorUserId": null,
"authorName": null,
"authorEmail": null,
"createdAt": "string",
"appearanceIcon": null,
"appearanceColor": null
}
],
"interactions": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityId": null,
"interactionType": "string",
"title": null,
"body": null,
"status": "string",
"scheduledAt": null,
"occurredAt": null,
"priority": null,
"authorUserId": null,
"ownerUserId": null,
"dealId": null,
"organizationId": null,
"tenantId": null,
"authorName": null,
"authorEmail": null,
"dealTitle": null,
"customValues": null,
"appearanceIcon": null,
"appearanceColor": null,
"source": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"deals": [
{
"id": "00000000-0000-4000-8000-000000000000",
"title": null,
"status": null,
"pipelineStage": null,
"valueAmount": null,
"valueCurrency": null,
"probability": null,
"expectedCloseAt": null,
"ownerUserId": null,
"source": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"todos": [
{
"id": "00000000-0000-4000-8000-000000000000",
"todoId": "00000000-0000-4000-8000-000000000000",
"todoSource": "string",
"createdAt": "string",
"createdByUserId": null,
"title": null,
"isDone": null,
"priority": null,
"severity": null,
"description": null,
"dueAt": null,
"todoOrganizationId": null,
"customValues": null
}
],
"viewer": {
"userId": null,
"name": null,
"email": null
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/people/:id" \ -H "Accept: application/json"
/customers/people/check-phonePerforms an exact digits comparison (stripping non-numeric characters) to determine whether a customer contact matches the provided phone fragment. Requires features: customers.people.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| digits | query | Yes | any | — |
{
"match": null
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/people/check-phone" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/pipeline-stagesReturns pipeline stages for the authenticated organization, optionally filtered by pipelineId. Requires features: customers.pipelines.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| pipelineId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"pipelineId": "00000000-0000-4000-8000-000000000000",
"label": "string",
"order": 1,
"color": null,
"icon": null,
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-01T00:00:00.000Z"
}
],
"total": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/pipeline-stages" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/pipeline-stagesCreates a new pipeline stage. Requires features: customers.pipelines.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"pipelineId": "00000000-0000-4000-8000-000000000000",
"label": "string"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/pipeline-stages" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"pipelineId\": \"00000000-0000-4000-8000-000000000000\",
\"label\": \"string\"
}"/customers/pipeline-stagesUpdates an existing pipeline stage. Requires features: customers.pipelines.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/pipeline-stages" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/pipeline-stagesDeletes a pipeline stage. Returns 409 if active deals use this stage. Requires features: customers.pipelines.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/pipeline-stages" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/pipeline-stages/reorderUpdates the order of pipeline stages in bulk. Requires features: customers.pipelines.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"stages": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order": 1
}
]
}{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/pipeline-stages/reorder" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"stages\": [
{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"order\": 1
}
]
}"/customers/pipelinesReturns a list of pipelines scoped to the authenticated organization. Requires features: customers.pipelines.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| isDefault | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"isDefault": true,
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-01T00:00:00.000Z"
}
],
"total": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/pipelines" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/pipelinesCreates a new pipeline within the authenticated organization. Requires features: customers.pipelines.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/pipelines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\"
}"/customers/pipelinesUpdates an existing pipeline. Requires features: customers.pipelines.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/pipelines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/pipelinesDeletes a pipeline. Returns 409 if active deals exist. Requires features: customers.pipelines.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/pipelines" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/settings/address-formatReturns the current address formatting preference for the selected organization. Requires features: customers.settings.manage
{
"addressFormat": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/settings/address-format" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/settings/address-formatUpdates the address format preference for the selected organization. Requires features: customers.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"addressFormat": "line_first"
}{
"addressFormat": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/settings/address-format" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"addressFormat\": \"line_first\"
}"/customers/tagsReturns a paginated collection of tags scoped to the authenticated organization. Requires features: customers.activities.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"label": "string",
"color": null,
"description": null,
"organization_id": null,
"tenant_id": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/tags?page=1&pageSize=100" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/tagsCreates a tag scoped to the current tenant and organization. Requires features: customers.activities.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"label": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"slug\": \"string\",
\"label\": \"string\"
}"/customers/tagsUpdates label, color, or description for an existing tag. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/tagsDeletes a tag identified by `id`. The identifier may be provided via body or query string. Requires features: customers.activities.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/tags/assignLinks a tag to a customer entity within the validated tenant / organization scope. Requires features: customers.activities.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"tagId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/tags/assign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"tagId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/tags/unassignDetaches a tag from a customer entity within the validated tenant / organization scope. Requires features: customers.activities.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"tagId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/tags/unassign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"tagId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/todosReturns a paginated collection of customertodos scoped to the authenticated organization. Requires features: customers.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| all | query | No | string | — |
| entityId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"todoId": "string",
"todoSource": "string",
"todoTitle": null,
"todoIsDone": null,
"todoPriority": null,
"todoSeverity": null,
"todoDescription": null,
"todoDueAt": null,
"todoCustomValues": null,
"todoOrganizationId": null,
"organizationId": "string",
"tenantId": "string",
"createdAt": "string",
"customer": {
"id": null,
"displayName": null,
"kind": null
}
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/customers/todos?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/customers/todosDEPRECATED (sunset 2026-06-30): Creates a customer task. Use POST /api/customers/interactions instead. Requires features: customers.interactions.manage
{
"entityId": "00000000-0000-4000-8000-000000000000",
"title": "string",
"todoSource": "example:todo"
}{
"linkId": null,
"todoId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/customers/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"title\": \"string\",
\"todoSource\": \"example:todo\"
}"/customers/todosDEPRECATED (sunset 2026-06-30): Updates a customer task. Use PUT /api/customers/interactions instead. Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/customers/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/customers/todosDEPRECATED (sunset 2026-06-30): Deletes a customer task. Use DELETE /api/customers/interactions instead. Requires features: customers.interactions.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/customers/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/dashboards/layoutReturns the saved widget layout together with the widgets the current user is allowed to place. Requires features: dashboards.view
{
"layout": {
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"widgetId": "string",
"order": 1
}
]
},
"allowedWidgetIds": [
"string"
],
"canConfigure": true,
"context": {
"userId": "00000000-0000-4000-8000-000000000000",
"tenantId": null,
"organizationId": null,
"userName": null,
"userEmail": null,
"userLabel": "string"
},
"widgets": [
{
"id": "string",
"title": "string",
"description": null,
"defaultSize": "sm",
"defaultEnabled": true,
"defaultSettings": null,
"features": [
"string"
],
"moduleId": "string",
"icon": null,
"loaderKey": "string",
"supportsRefresh": true
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/layout" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dashboards/layoutSaves the provided widget ordering, sizes, and settings for the current user. Requires features: dashboards.configure
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"widgetId": "string",
"order": 1
}
]
}{
"ok": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/dashboards/layout" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"items\": [
{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"widgetId\": \"string\",
\"order\": 1
}
]
}"/dashboards/layout/{itemId}Adjusts the size or settings for a single widget within the dashboard layout. Requires features: dashboards.configure
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| itemId | path | Yes | string | — |
{}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/dashboards/layout/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/dashboards/roles/widgetsReturns the widgets explicitly assigned to the given role together with the evaluation scope. Requires features: dashboards.admin.assign-widgets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| roleId | query | Yes | string | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"widgetIds": [
"string"
],
"hasCustom": true,
"scope": {
"tenantId": null,
"organizationId": null
}
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/roles/widgets?roleId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dashboards/roles/widgetsPersists the widget list for a role within the provided tenant and organization scope. Requires features: dashboards.admin.assign-widgets
{
"roleId": "00000000-0000-4000-8000-000000000000",
"tenantId": null,
"organizationId": null,
"widgetIds": [
"string"
]
}{
"ok": true,
"widgetIds": [
"string"
]
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/dashboards/roles/widgets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"roleId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": null,
\"organizationId\": null,
\"widgetIds\": [
\"string\"
]
}"/dashboards/users/widgetsReturns the widgets inherited and explicitly configured for the requested user within the current scope. Requires features: dashboards.admin.assign-widgets
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| userId | query | Yes | string | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"mode": "inherit",
"widgetIds": [
"string"
],
"hasCustom": true,
"effectiveWidgetIds": [
"string"
],
"scope": {
"tenantId": null,
"organizationId": null
}
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/users/widgets?userId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dashboards/users/widgetsSets the widget override mode and allowed widgets for a user. Passing `mode: inherit` clears overrides. Requires features: dashboards.admin.assign-widgets
{
"userId": "00000000-0000-4000-8000-000000000000",
"tenantId": null,
"organizationId": null,
"mode": "inherit",
"widgetIds": [
"string"
]
}{
"ok": true,
"mode": "inherit",
"widgetIds": [
"string"
]
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/dashboards/users/widgets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"userId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": null,
\"organizationId\": null,
\"mode\": \"inherit\",
\"widgetIds\": [
\"string\"
]
}"/dashboards/widgets/catalogReturns the catalog of widgets that modules expose, including defaults and feature requirements. Requires features: dashboards.admin.assign-widgets
{
"items": [
{
"id": "string",
"title": "string",
"description": null,
"defaultSize": "sm",
"defaultEnabled": true,
"defaultSettings": null,
"features": [
"string"
],
"moduleId": "string",
"icon": null,
"loaderKey": "string",
"supportsRefresh": true
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dashboards/widgets/catalog" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dashboards/widgets/dataExecutes an aggregation query against the specified entity type and returns the result. Supports date range filtering, grouping, and period-over-period comparison. Requires features: analytics.view
{
"entityType": "string",
"metric": {
"field": "string",
"aggregate": "count"
}
}{
"value": null,
"data": [
{
"value": null
}
],
"metadata": {
"fetchedAt": "string",
"recordCount": 1
}
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/dashboards/widgets/data" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityType\": \"string\",
\"metric\": {
\"field\": \"string\",
\"aggregate\": \"count\"
}
}"/dictionariesReturns dictionaries accessible to the current organization, optionally including inactive records. Requires features: dictionaries.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| includeInactive | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"name": "string",
"description": null,
"isSystem": true,
"isActive": true,
"managerVisibility": null,
"organizationId": null,
"createdAt": "string",
"updatedAt": null
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dictionaries" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dictionariesRegisters a dictionary scoped to the current organization. Requires features: dictionaries.manage
{
"key": "string",
"name": "string"
}{
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"name": "string",
"description": null,
"isSystem": true,
"isActive": true,
"managerVisibility": null,
"organizationId": null,
"createdAt": "string",
"updatedAt": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/dictionaries" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"key\": \"string\",
\"name\": \"string\"
}"/dictionaries/{dictionaryId}Returns details for the specified dictionary, including inheritance flags. Requires features: dictionaries.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
{
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"name": "string",
"description": null,
"isSystem": true,
"isActive": true,
"managerVisibility": null,
"organizationId": null,
"createdAt": "string",
"updatedAt": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dictionaries/{dictionaryId}Updates mutable attributes of the dictionary. Currency dictionaries are protected from modification. Requires features: dictionaries.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
{}{
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"name": "string",
"description": null,
"isSystem": true,
"isActive": true,
"managerVisibility": null,
"organizationId": null,
"createdAt": "string",
"updatedAt": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/dictionaries/{dictionaryId}Soft deletes the dictionary unless it is the protected currency dictionary. Requires features: dictionaries.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dictionaries/{dictionaryId}/entriesReturns entries for the specified dictionary ordered alphabetically. Requires features: dictionaries.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string",
"color": null,
"icon": null,
"createdAt": "string",
"updatedAt": null
}
]
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000/entries" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/dictionaries/{dictionaryId}/entriesCreates a new entry in the specified dictionary. Requires features: dictionaries.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
{
"value": "string",
"color": null,
"icon": null
}{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string",
"color": null,
"icon": null,
"createdAt": "string",
"updatedAt": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000/entries" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"value\": \"string\",
\"color\": null,
\"icon\": null
}"/dictionaries/{dictionaryId}/entries/{entryId}Updates the specified dictionary entry using the command bus pipeline. Requires features: dictionaries.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
| entryId | path | Yes | string | — |
{
"color": null,
"icon": null
}{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string",
"color": null,
"icon": null,
"createdAt": "string",
"updatedAt": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000/entries/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"color\": null,
\"icon\": null
}"/dictionaries/{dictionaryId}/entries/{entryId}Deletes the specified dictionary entry via the command bus. Requires features: dictionaries.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| dictionaryId | path | Yes | string | — |
| entryId | path | Yes | string | — |
{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/dictionaries/00000000-0000-4000-8000-000000000000/entries/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/directory/organization-switcherReturns the hierarchical menu of organizations the current user may switch to within the active tenant.
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"depth": 1,
"selectable": true,
"children": []
}
],
"selectedId": null,
"canManage": true,
"canViewAllOrganizations": true,
"tenantId": null,
"tenants": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"isActive": true
}
],
"isSuperAdmin": true
}curl -X GET "https://crm.rsmotoconcierge.pl/api/directory/organization-switcher" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/directory/organizationsReturns organizations using options, tree, or paginated manage view depending on the `view` parameter. Requires features: directory.organizations.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| view | query | No | string | — |
| ids | query | No | string | — |
| tenantId | query | No | string | — |
| includeInactive | query | No | string | — |
| status | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"parentId": null,
"parentName": null,
"tenantId": null,
"tenantName": null,
"rootId": null,
"treePath": null
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/directory/organizations?page=1&pageSize=50&view=options" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/directory/organizationsCreates a new organization within a tenant and optionally assigns hierarchy relationships. Requires features: directory.organizations.manage
{
"name": "string",
"slug": null,
"parentId": null
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/directory/organizations" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"slug\": null,
\"parentId\": null
}"/directory/organizationsUpdates organization details and hierarchy assignments. Requires features: directory.organizations.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"slug": null,
"parentId": null
}{
"ok": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/directory/organizations" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"slug\": null,
\"parentId\": null
}"/directory/organizationsSoft deletes an organization identified by id. Requires features: directory.organizations.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/directory/organizations" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/directory/tenantsReturns tenants visible to the current user with optional search and pagination. Requires features: directory.tenants.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| isActive | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"isActive": true,
"createdAt": null,
"updatedAt": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/directory/tenants?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/directory/tenantsCreates a new tenant and returns its identifier. Requires features: directory.tenants.manage
{
"name": "string"
}{
"id": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/directory/tenants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\"
}"/directory/tenantsUpdates tenant properties such as name or activation state. Requires features: directory.tenants.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/directory/tenants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/directory/tenantsSoft deletes the tenant identified by id. Requires features: directory.tenants.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/directory/tenants" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/entities/definitionsReturns active custom field definitions for the supplied entity ids, respecting tenant scope and tombstones.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | No | any | — |
| entityIds | query | No | string | — |
| fieldset | query | No | string | — |
{
"items": [
{
"key": "string",
"kind": "string",
"label": "string",
"entityId": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/definitions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/definitionsCreates or updates a custom field definition for the current tenant/org scope. Requires features: entities.definitions.manage
{
"entityId": "string",
"key": "string",
"kind": "text"
}{
"ok": true,
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"kind": "string",
"configJson": {}
}
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/definitions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"key\": \"string\",
\"kind\": \"text\"
}"/entities/definitionsMarks the specified definition inactive and tombstones it for the current scope. Requires features: entities.definitions.manage
{
"entityId": "string",
"key": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/entities/definitions" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"key\": \"string\"
}"/entities/definitions.batchCreates or updates multiple definitions for a single entity in one transaction. Requires features: entities.definitions.manage
{
"entityId": "string",
"definitions": [
{
"key": "string",
"kind": "text"
}
]
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/definitions.batch" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"definitions\": [
{
\"key\": \"string\",
\"kind\": \"text\"
}
]
}"/entities/definitions.manageReturns scoped custom field definitions (including inactive tombstones) for administration interfaces. Requires features: entities.definitions.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | Yes | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"key": "string",
"kind": "string",
"configJson": null,
"organizationId": null,
"tenantId": null
}
],
"deletedKeys": [
"string"
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/definitions.manage?entityId=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/definitions.restoreReactivates a previously soft-deleted definition within the current tenant/org scope. Requires features: entities.definitions.manage
{
"entityId": "string",
"key": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/definitions.restore" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"key\": \"string\"
}"/entities/encryptionReturns the encrypted field map for the current tenant/organization scope. Requires features: entities.definitions.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | Yes | string | — |
{
"entityId": "string",
"fields": [
{
"field": "string",
"hashField": null
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/encryption?entityId=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/encryptionCreates or updates the encryption map for the current tenant/organization scope. Requires features: entities.definitions.manage
{
"entityId": "string",
"tenantId": null,
"organizationId": null,
"fields": [
{
"field": "string",
"hashField": null
}
]
}{
"ok": true
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/encryption" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"tenantId\": null,
\"organizationId\": null,
\"fields\": [
{
\"field\": \"string\",
\"hashField\": null
}
]
}"/entities/entitiesReturns generated and custom entities scoped to the caller with field counts per entity.
{
"items": [
{
"entityId": "string",
"source": "code",
"label": "string",
"count": 1
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/entitiesCreates or updates a tenant/org scoped custom entity definition. Requires features: entities.definitions.manage
{
"entityId": "string",
"label": "string",
"description": null,
"showInSidebar": false
}{
"ok": true,
"item": {
"id": "00000000-0000-4000-8000-000000000000",
"entityId": "string",
"label": "string"
}
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/entities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"label\": \"string\",
\"description\": null,
\"showInSidebar\": false
}"/entities/entitiesMarks the specified custom entity inactive within the current scope. Requires features: entities.definitions.manage
{
"entityId": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/entities/entities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\"
}"/entities/recordsReturns paginated records for the supplied entity. Supports custom field filters, exports, and soft-delete toggles. Requires features: entities.records.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | Yes | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| format | query | No | string | — |
| exportScope | query | No | string | — |
| export_scope | query | No | string | — |
| all | query | No | boolean | — |
| full | query | No | boolean | — |
{
"items": [
{}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/records?entityId=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/recordsCreates a record for the given entity. When `recordId` is omitted or not a UUID the data engine will generate one automatically. Requires features: entities.records.manage
{
"entityId": "string",
"values": {}
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/entities/records" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"values\": {}
}"/entities/recordsUpdates an existing record. If the provided recordId is not a UUID the record will be created instead to support optimistic flows. Requires features: entities.records.manage
{
"entityId": "string",
"recordId": "string",
"values": {}
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/entities/records" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"recordId\": \"string\",
\"values\": {}
}"/entities/recordsSoft deletes the specified record within the current tenant/org scope. Requires features: entities.records.manage
{
"entityId": "string",
"recordId": "string"
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/entities/records" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityId\": \"string\",
\"recordId\": \"string\"
}"/entities/relations/optionsReturns up to 50 option entries for populating relation dropdowns, automatically resolving label fields when omitted. Requires features: entities.definitions.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityId | query | Yes | string | — |
| labelField | query | No | string | — |
| q | query | No | string | — |
{
"items": [
{
"value": "string",
"label": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/relations/options?entityId=string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/entities/sidebar-entitiesReturns custom entities flagged with `showInSidebar` for the current tenant/org scope.
{
"items": [
{
"entityId": "string",
"label": "string",
"href": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/entities/sidebar-entities" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/assigneesReturns mock assignee options filtered by the optional `q` query parameter. Requires features: example.todos.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| q | query | No | string | — |
{
"items": [
{
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/assignees" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/assigneesEmits a clientBroadcast example todo event with optional recipient filters (user/role/org). Requires features: example.todos.manage
{
"ok": true,
"eventId": "string",
"payload": {}
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/example/assignees" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/blog/{id}Returns a placeholder blog record containing the provided identifier.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"method": "GET"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/blog/string" \ -H "Accept: application/json"
/example/blog/{id}Echoes the provided identifier as a placeholder write endpoint.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"method": "POST"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/example/blog/string" \ -H "Accept: application/json"
/example/customer-prioritiesReturns a paginated collection of customer priorities in the current tenant scope. Requires features: example.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| customerId | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"customer_id": "00000000-0000-4000-8000-000000000000",
"priority": "low",
"tenant_id": null,
"organization_id": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/customer-priorities?page=1&pageSize=50&sortField=created_at&sortDir=desc" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/customer-prioritiesCreates or stores customer priority records for injected CRUD fields. Requires features: example.todos.manage
{
"customerId": "00000000-0000-4000-8000-000000000000",
"priority": "normal"
}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/example/customer-priorities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"customerId\": \"00000000-0000-4000-8000-000000000000\",
\"priority\": \"normal\"
}"/example/customer-prioritiesUpdates customer priority values. Requires features: example.todos.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/example/customer-priorities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/example/customer-prioritiesSoft-deletes a customer priority record. Requires features: example.todos.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/example/customer-priorities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/example/notificationsRequires features: example.todos.manage
{
"linkHref": "string"
}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/example/notifications" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/organizationsFetches organization names for the provided identifiers within the current tenant scope. Requires features: example.todos.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| ids | query | No | string | — |
{
"items": [
{
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/organizations" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/qa-eventsRequires features: example.view
{
"items": [
{
"event": "string",
"payload": {},
"capturedAt": "string"
}
]
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/qa-events" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/qa-eventsRequires features: example.view
{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/example/qa-events" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/tagsReturns tag options collected from custom field values and dictionary configuration. Requires features: example.todos.view
{
"items": [
{
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/tags" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/todosReturns a paginated collection of todos in the current tenant scope. Requires features: example.todos.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | query | No | string | — |
| page | query | No | number | — |
| pageSize | query | No | number | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| title | query | No | string | — |
| isDone | query | No | boolean | — |
| withDeleted | query | No | boolean | — |
| organizationId | query | No | string | — |
| createdFrom | query | No | string | — |
| createdTo | query | No | string | — |
| format | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "string",
"title": "string",
"tenant_id": null,
"organization_id": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/example/todos?page=1&pageSize=50&sortField=id&sortDir=asc&withDeleted=false" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/example/todosCreates a todo record. Supports additional custom field keys prefixed with `cf_`. Requires features: example.todos.manage
{}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/example/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/example/todosUpdates an existing todo record by id. Accepts base fields and optional `cf_` custom fields. Requires features: example.todos.manage
{}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/example/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/example/todosDeletes a todo by id. Provide the identifier in the request body. Requires features: example.todos.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/example/todos" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/inbox_ops/emailsProcessing log of all received emails Requires features: inbox_ops.log.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/emails" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/emails/{id}Requires features: inbox_ops.log.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/emails/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/emails/{id}Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/inbox_ops/emails/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/emails/{id}Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/inbox_ops/emails/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/emails/{id}/reprocessRequires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/emails/:id/reprocess" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/extractCreates an InboxEmail record from raw text and triggers the extraction pipeline. The extraction runs asynchronously. Requires features: inbox_ops.proposals.manage
{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/extract" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposalsList inbox proposals with optional status filter and pagination Requires features: inbox_ops.proposals.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}Returns proposal with actions, discrepancies, and source email Requires features: inbox_ops.proposals.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/accept-allRequires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/accept-all" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/actions/{actionId}Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| actionId | path | Yes | string | — |
{}{}{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/actions/:actionId" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/actions/{actionId}/acceptExecutes the action and creates the entity in the target module. Returns 409 if already processed. Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| actionId | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/actions/:actionId/accept" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/actions/{actionId}/completeUsed when an action is fulfilled through the normal sales form instead of the execution engine. Updates the action status without running the execution engine. Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| actionId | path | Yes | string | — |
{}{}{}{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/actions/:actionId/complete" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/actions/{actionId}/rejectRequires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| actionId | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/actions/:actionId/reject" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/categorizeAssigns a category to a proposal. Returns the new and previous category for undo support. Requires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/categorize" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/rejectRequires features: inbox_ops.proposals.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/reject" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/replies/{replyId}/sendSends the draft_reply action payload via the configured email provider. When the messages module is available, also records the sent reply as an internal message record. Sets In-Reply-To and References headers for threading. Requires features: inbox_ops.replies.send
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| replyId | path | Yes | string | — |
{}{}{}{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/replies/:replyId/send" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/{id}/translateTranslates the proposal summary and action descriptions to the target locale. Results are cached. Requires features: inbox_ops.proposals.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/:id/translate" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/proposals/countsReturns counts by status and by category for tab badges and filter dropdowns Requires features: inbox_ops.proposals.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/proposals/counts" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/settingsReturns the forwarding address and configuration for this tenant Requires features: inbox_ops.settings.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/inbox_ops/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/settingsUpdates working language and/or active status Requires features: inbox_ops.settings.manage
{}{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/inbox_ops/settings" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/inbox_ops/webhook/inboundPublic endpoint — validated by provider HMAC signature or Resend/Svix signature. Rate limited per tenant.
{}{}{}{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/inbox_ops/webhook/inbound" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/onboarding/demo-feedbackSends a feedback/contact request from the demo environment to the admin and optionally to the user.
{
"email": "user@example.com",
"message": "",
"termsAccepted": true,
"marketingConsent": false,
"sendCopy": true
}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/onboarding/demo-feedback" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"email\": \"user@example.com\",
\"message\": \"\",
\"termsAccepted\": true,
\"marketingConsent\": false,
\"sendCopy\": true
}"/payment_gateways/cancelRequires features: payment_gateways.manage
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/payment_gateways/cancel" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/captureRequires features: payment_gateways.capture
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/payment_gateways/capture" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/providersRequires features: payment_gateways.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/payment_gateways/providers" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/providers/{providerKey}Requires features: payment_gateways.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| providerKey | path | Yes | string | — |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/payment_gateways/providers/:providerKey" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/refundRequires features: payment_gateways.refund
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/payment_gateways/refund" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/sessionsRequires features: payment_gateways.manage
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/payment_gateways/sessions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/statusRequires features: payment_gateways.view
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/payment_gateways/status" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/transactionsRequires features: payment_gateways.view
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/payment_gateways/transactions" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/transactions/{id}Requires features: payment_gateways.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/payment_gateways/transactions/:id" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/payment_gateways/webhook/{provider}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| provider | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/payment_gateways/webhook/:provider" \ -H "Accept: application/json"
/perspectives/{tableId}Returns personal perspectives and available role defaults for the requested table identifier. Requires features: perspectives.use
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| tableId | path | Yes | string | — |
{
"tableId": "string",
"perspectives": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"tableId": "string",
"settings": {},
"isDefault": true,
"createdAt": "string",
"updatedAt": null
}
],
"defaultPerspectiveId": null,
"rolePerspectives": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"tableId": "string",
"settings": {},
"isDefault": true,
"createdAt": "string",
"updatedAt": null,
"roleId": "00000000-0000-4000-8000-000000000000",
"tenantId": null,
"organizationId": null,
"roleName": null
}
],
"roles": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"hasPerspective": true,
"hasDefault": true
}
],
"canApplyToRoles": true
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/perspectives/string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/perspectives/{tableId}Saves a personal perspective and optionally applies the same configuration to selected roles. Requires features: perspectives.use
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| tableId | path | Yes | string | — |
{
"name": "string",
"settings": {}
}{
"perspective": {
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"tableId": "string",
"settings": {},
"isDefault": true,
"createdAt": "string",
"updatedAt": null
},
"rolePerspectives": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"tableId": "string",
"settings": {},
"isDefault": true,
"createdAt": "string",
"updatedAt": null,
"roleId": "00000000-0000-4000-8000-000000000000",
"tenantId": null,
"organizationId": null,
"roleName": null
}
],
"clearedRoleIds": [
"00000000-0000-4000-8000-000000000000"
]
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/perspectives/string" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"string\",
\"settings\": {}
}"/perspectives/{tableId}/{perspectiveId}Removes a perspective owned by the current user for the given table. Requires features: perspectives.use
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| tableId | path | Yes | string | — |
| perspectiveId | path | Yes | string | — |
{
"success": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/perspectives/string/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/perspectives/{tableId}/roles/{roleId}Removes all role-level perspectives associated with the provided role identifier for the table. Requires features: perspectives.role_defaults
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| tableId | path | Yes | string | — |
| roleId | path | Yes | string | — |
{
"success": true
}{
"error": "string"
}{
"error": "string"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/perspectives/string/roles/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/planner/availabilityReturns a paginated collection of availability rules scoped to the authenticated organization. Requires features: planner.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| subjectType | query | No | string | — |
| subjectIds | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"subject_type": null,
"subject_id": null,
"timezone": null,
"rrule": null,
"exdates": null,
"kind": null,
"note": null,
"unavailability_reason_entry_id": null,
"unavailability_reason_value": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/planner/availability?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/planner/availabilityCreates an availability rule for the selected subject.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"subjectType": "member",
"subjectId": "00000000-0000-4000-8000-000000000000",
"timezone": "string",
"rrule": "string",
"exdates": [],
"kind": "availability",
"note": null,
"unavailabilityReasonEntryId": null,
"unavailabilityReasonValue": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/planner/availability" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"subjectType\": \"member\",
\"subjectId\": \"00000000-0000-4000-8000-000000000000\",
\"timezone\": \"string\",
\"rrule\": \"string\",
\"exdates\": [],
\"kind\": \"availability\",
\"note\": null,
\"unavailabilityReasonEntryId\": null,
\"unavailabilityReasonValue\": null
}"/planner/availabilityUpdates an availability rule by id.
{
"id": "00000000-0000-4000-8000-000000000000",
"note": null,
"unavailabilityReasonEntryId": null,
"unavailabilityReasonValue": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/planner/availability" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"note\": null,
\"unavailabilityReasonEntryId\": null,
\"unavailabilityReasonValue\": null
}"/planner/availabilityDeletes an availability rule by id.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/planner/availability" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/planner/availability-date-specificReplaces date-specific availability rules for the subject in a single request.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"subjectType": "member",
"subjectId": "00000000-0000-4000-8000-000000000000",
"timezone": "string",
"windows": [],
"isAvailable": true,
"note": null,
"unavailabilityReasonEntryId": null,
"unavailabilityReasonValue": null
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/planner/availability-date-specific" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"subjectType\": \"member\",
\"subjectId\": \"00000000-0000-4000-8000-000000000000\",
\"timezone\": \"string\",
\"windows\": [],
\"isAvailable\": true,
\"note\": null,
\"unavailabilityReasonEntryId\": null,
\"unavailabilityReasonValue\": null
}"/planner/availability-rule-setsReturns a paginated collection of availability rule sets scoped to the authenticated organization. Requires features: planner.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"name": null,
"description": null,
"timezone": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/planner/availability-rule-sets?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/planner/availability-rule-setsCreates a reusable availability rule set. Requires features: planner.manage_availability
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null,
"timezone": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/planner/availability-rule-sets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"description\": null,
\"timezone\": \"string\"
}"/planner/availability-rule-setsUpdates an availability rule set by id. Requires features: planner.manage_availability
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/planner/availability-rule-sets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null
}"/planner/availability-rule-setsDeletes an availability rule set by id. Requires features: planner.manage_availability
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/planner/availability-rule-sets" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/planner/availability-weeklyReplaces weekly availability rules for the subject in a single request.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"subjectType": "member",
"subjectId": "00000000-0000-4000-8000-000000000000",
"timezone": "string",
"windows": []
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/planner/availability-weekly" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"subjectType\": \"member\",
\"subjectId\": \"00000000-0000-4000-8000-000000000000\",
\"timezone\": \"string\",
\"windows\": []
}"/query_index/purgeQueues a purge job to remove indexed records for an entity type within the active scope. Requires features: query_index.purge
{
"entityType": "string"
}{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/query_index/purge" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityType\": \"string\"
}"/query_index/reindexQueues a reindex job for the specified entity type within the current tenant scope. Requires features: query_index.reindex
{
"entityType": "string"
}{
"ok": true
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/query_index/reindex" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"entityType\": \"string\"
}"/query_index/statusReturns entity counts comparing base tables with the query index along with the latest job status. Requires features: query_index.status.view
{
"items": [
{
"entityId": "string",
"label": "string",
"baseCount": null,
"indexCount": null,
"vectorCount": null,
"ok": true,
"job": {
"status": "idle",
"startedAt": null,
"finishedAt": null,
"heartbeatAt": null,
"processedCount": null,
"totalCount": null,
"scope": null
}
}
],
"errors": [
{
"id": "string",
"source": "string",
"handler": "string",
"entityType": null,
"recordId": null,
"tenantId": null,
"organizationId": null,
"message": "string",
"stack": null,
"payload": null,
"occurredAt": "string"
}
],
"logs": [
{
"id": "string",
"source": "string",
"handler": "string",
"level": "info",
"entityType": null,
"recordId": null,
"tenantId": null,
"organizationId": null,
"message": "string",
"details": null,
"occurredAt": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/query_index/status" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/activitiesReturns a paginated collection of resourceactivitys scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"resource_id": null,
"activity_type": null,
"subject": null,
"body": null,
"occurred_at": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/activities?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/activitiesAdds an activity to a resource timeline. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"activityType\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/activitiesUpdates a resource activity. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/activitiesDeletes a resource activity. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/commentsReturns a paginated collection of resourcecomments scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"resource_id": null,
"body": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/comments?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/commentsAdds a note to a resource timeline. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"body": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"body\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/commentsUpdates a resource note. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/commentsDeletes a resource note. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/resource-accessory-linksRequires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| hostResourceId | query | Yes | string | — |
{
"items": []
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/resource-accessory-links?hostResourceId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-accessory-linksRequires features: resources.manage_resources
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resource-accessory-links" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-accessory-linksRequires features: resources.manage_resources
{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/resources/resource-accessory-links" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-accessory-linksRequires features: resources.manage_resources
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/resource-accessory-links" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-galleryRequires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| resourceId | query | Yes | string | — |
{
"items": []
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/resource-gallery?resourceId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-galleryRequires features: resources.manage_resources
{}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resource-gallery" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-galleryRequires features: resources.manage_resources
{}curl -X PATCH "https://crm.rsmotoconcierge.pl/api/resources/resource-gallery" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-galleryRequires features: resources.manage_resources
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/resource-gallery" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-typesReturns a paginated collection of resource types scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"name": null,
"description": null,
"appearance_icon": null,
"appearance_color": null,
"created_at": null,
"updated_at": null,
"resourceCount": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/resource-types?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resource-typesCreates a resource type for resources resources. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null,
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resource-types" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"description\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/resource-typesUpdates a resource type by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/resource-types" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/resources/resource-typesDeletes a resource type by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/resource-types" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/resourcesReturns a paginated collection of resources scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| resourceTypeId | query | No | string | — |
| isActive | query | No | string | — |
| tagIds | query | No | string | — |
| customerEntityId | query | No | string | — |
| customerUnassigned | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| resourcesResourceFieldset | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"name": null,
"description": null,
"resource_type_id": null,
"capacity": null,
"capacity_unit_value": null,
"capacity_unit_name": null,
"capacity_unit_color": null,
"capacity_unit_icon": null,
"appearance_icon": null,
"appearance_color": null,
"is_active": null,
"availability_rule_set_id": null,
"customer_entity_id": null,
"resource_type_name": null,
"created_at": null,
"updated_at": null,
"insurance_policy_id": null,
"financing_profile": null,
"vehicle_type_financing_eligible": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/resources?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/resourcesCreates a resource scoped to the selected organization. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null,
"resourceTypeId": null,
"capacity": null,
"capacityUnitValue": null,
"appearanceIcon": null,
"appearanceColor": null,
"availabilityRuleSetId": null,
"customerEntityId": null,
"procurementProcessId": null,
"insurancePolicyId": null,
"statusValue": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resources" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"description\": null,
\"resourceTypeId\": null,
\"capacity\": null,
\"capacityUnitValue\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null,
\"availabilityRuleSetId\": null,
\"customerEntityId\": null,
\"procurementProcessId\": null,
\"insurancePolicyId\": null,
\"statusValue\": null
}"/resources/resourcesUpdates a resource by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null,
"resourceTypeId": null,
"capacity": null,
"capacityUnitValue": null,
"appearanceIcon": null,
"appearanceColor": null,
"availabilityRuleSetId": null,
"customerEntityId": null,
"procurementProcessId": null,
"insurancePolicyId": null,
"statusValue": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/resources" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null,
\"resourceTypeId\": null,
\"capacity\": null,
\"capacityUnitValue\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null,
\"availabilityRuleSetId\": null,
\"customerEntityId\": null,
\"procurementProcessId\": null,
\"insurancePolicyId\": null,
\"statusValue\": null
}"/resources/resourcesDeletes a resource by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/resources" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/resources/tags/assignAssigns a tag to a resources resource. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tagId": "00000000-0000-4000-8000-000000000000",
"resourceId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resources/tags/assign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tagId\": \"00000000-0000-4000-8000-000000000000\",
\"resourceId\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/resources/tags/unassignRemoves a tag from a resources resource. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"tagId": "00000000-0000-4000-8000-000000000000",
"resourceId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/resources/tags/unassign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tagId\": \"00000000-0000-4000-8000-000000000000\",
\"resourceId\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/service-bookReturns a paginated collection of resourceservicebookentrys scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| filterServiceType | query | No | string | — |
| filterServiceActivity | query | No | string | — |
| filterServiceInFrom | query | No | string | — |
| filterServiceInTo | query | No | string | — |
| filterServiceOutFrom | query | No | string | — |
| filterServiceOutTo | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"entityId": null,
"resourceId": null,
"serviceType": "string",
"serviceActivity": "string",
"serviceInAt": null,
"serviceOutAt": null,
"description": null,
"organizationId": null,
"tenantId": null,
"createdAt": null,
"updatedAt": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/service-book?page=1&pageSize=50&sortField=serviceInAt&sortDir=desc" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/service-bookAdds a service book entry for a resource. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"serviceType": "string",
"serviceActivity": "string",
"serviceInAt": "2025-01-01T00:00:00.000Z",
"serviceOutAt": null,
"description": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/service-book" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"serviceType\": \"string\",
\"serviceActivity\": \"string\",
\"serviceInAt\": \"2025-01-01T00:00:00.000Z\",
\"serviceOutAt\": null,
\"description\": null
}"/resources/service-bookUpdates a resource service book entry. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"serviceOutAt": null,
"description": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/service-book" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"serviceOutAt\": null,
\"description\": null
}"/resources/service-bookDeletes a resource service book entry. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/service-book" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/resources/tagsReturns a paginated collection of resource tags scoped to the authenticated organization. Requires features: resources.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": null,
"slug": null,
"label": null,
"color": null,
"description": null,
"organization_id": null,
"tenant_id": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/resources/tags?page=1&pageSize=100" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/resources/tagsCreates a tag for resources resources and services. Requires features: resources.manage_resources
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"label": "string",
"color": null,
"description": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/resources/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"label\": \"string\",
\"color\": null,
\"description\": null
}"/resources/tagsUpdates a resource tag by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000",
"color": null,
"description": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/resources/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"color\": null,
\"description\": null
}"/resources/tagsDeletes a resource tag by id. Requires features: resources.manage_resources
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/resources/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/adjustment-kindsReturns a paginated collection of sales adjustment kinds that belong to the current organization. Requires features: sales.orders.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/adjustment-kinds?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/adjustment-kindsCreates an adjustment kind. Requires features: sales.settings.manage
{}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/adjustment-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/sales/adjustment-kindsUpdates an adjustment kind. Requires features: sales.settings.manage
{}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/adjustment-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/sales/adjustment-kindsDeletes an adjustment kind. Requires features: sales.settings.manage
{}{
"id": "00000000-0000-4000-8000-000000000000"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/adjustment-kinds" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{}"/sales/channelsManage sales channels to segment orders and pricing across marketplaces or stores. Requires features: sales.channels.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| id | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": null,
"description": null,
"statusEntryId": null,
"isActive": true,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/channels?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/channelsCreates a new sales channel. Requires features: sales.channels.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/channels" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"code\": \"string\"
}"/sales/channelsUpdates an existing sales channel by id. Requires features: sales.channels.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"code": "string"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/channels" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"code\": \"string\"
}"/sales/channelsDeletes a sales channel identified by id. Requires features: sales.channels.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/channels" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/dashboard/widgets/new-ordersFetches recently created sales orders for the dashboard widget with a configurable date period. Requires features: dashboards.view, sales.widgets.new-orders
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| datePeriod | query | No | string | — |
| customFrom | query | No | string | — |
| customTo | query | No | string | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"orderNumber": "string",
"status": null,
"fulfillmentStatus": null,
"paymentStatus": null,
"customerName": null,
"customerEntityId": null,
"netAmount": "string",
"grossAmount": "string",
"currency": null,
"createdAt": "string"
}
],
"total": 1,
"dateRange": {
"from": "string",
"to": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/dashboard/widgets/new-orders?limit=5&datePeriod=last24h" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/dashboard/widgets/new-quotesFetches recently created sales quotes for the dashboard widget with a configurable date period. Requires features: dashboards.view, sales.widgets.new-quotes
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| limit | query | No | number | — |
| datePeriod | query | No | string | — |
| customFrom | query | No | string | — |
| customTo | query | No | string | — |
| tenantId | query | No | string | — |
| organizationId | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"quoteNumber": "string",
"status": null,
"customerName": null,
"customerEntityId": null,
"validFrom": null,
"validUntil": null,
"netAmount": "string",
"grossAmount": "string",
"currency": null,
"createdAt": "string",
"convertedOrderId": null
}
],
"total": 1,
"dateRange": {
"from": "string",
"to": "string"
}
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/dashboard/widgets/new-quotes?limit=5&datePeriod=last24h" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/delivery-windowsDefine delivery windows to communicate lead times and cut-off rules for sales orders. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": null,
"description": null,
"leadTimeDays": null,
"cutoffTime": null,
"timezone": null,
"isActive": true,
"metadata": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/delivery-windows?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/delivery-windowsCreates a new delivery window. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/delivery-windows" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"code\": \"string\"
}"/sales/delivery-windowsUpdates an existing delivery window by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/delivery-windows" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/delivery-windowsDeletes a delivery window identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/delivery-windows" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/document-addressesReturns a paginated collection of document addresss that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| documentId | query | Yes | string | — |
| documentKind | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"document_id": "00000000-0000-4000-8000-000000000000",
"document_kind": "order",
"customer_address_id": null,
"name": null,
"purpose": null,
"company_name": null,
"address_line1": "string",
"address_line2": null,
"building_number": null,
"flat_number": null,
"city": null,
"region": null,
"postal_code": null,
"country": null,
"latitude": null,
"longitude": null,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/document-addresses?page=1&pageSize=50&documentId=00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/document-addressesCreates a sales document address linked to an order or quote.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"documentId": "00000000-0000-4000-8000-000000000000",
"documentKind": "order",
"name": null,
"purpose": null,
"companyName": null,
"addressLine1": "string",
"addressLine2": null,
"city": null,
"region": null,
"postalCode": null,
"country": null,
"buildingNumber": null,
"flatNumber": null,
"latitude": null,
"longitude": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/document-addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"documentId\": \"00000000-0000-4000-8000-000000000000\",
\"documentKind\": \"order\",
\"name\": null,
\"purpose\": null,
\"companyName\": null,
\"addressLine1\": \"string\",
\"addressLine2\": null,
\"city\": null,
\"region\": null,
\"postalCode\": null,
\"country\": null,
\"buildingNumber\": null,
\"flatNumber\": null,
\"latitude\": null,
\"longitude\": null
}"/sales/document-addressesUpdates a sales document address.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"id": "00000000-0000-4000-8000-000000000000",
"documentId": "00000000-0000-4000-8000-000000000000",
"documentKind": "order",
"name": null,
"purpose": null,
"companyName": null,
"addressLine1": "string",
"addressLine2": null,
"city": null,
"region": null,
"postalCode": null,
"country": null,
"buildingNumber": null,
"flatNumber": null,
"latitude": null,
"longitude": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/document-addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"documentId\": \"00000000-0000-4000-8000-000000000000\",
\"documentKind\": \"order\",
\"name\": null,
\"purpose\": null,
\"companyName\": null,
\"addressLine1\": \"string\",
\"addressLine2\": null,
\"city\": null,
\"region\": null,
\"postalCode\": null,
\"country\": null,
\"buildingNumber\": null,
\"flatNumber\": null,
\"latitude\": null,
\"longitude\": null
}"/sales/document-addressesDeletes a sales document address.
{
"id": "00000000-0000-4000-8000-000000000000",
"documentId": "00000000-0000-4000-8000-000000000000",
"documentKind": "order"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/document-addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"documentId\": \"00000000-0000-4000-8000-000000000000\",
\"documentKind\": \"order\"
}"/sales/document-history| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| kind | query | Yes | string | — |
| id | query | Yes | string | — |
| limit | query | No | number | — |
| before | query | No | string | — |
| after | query | No | string | — |
| types | query | No | string | — |
{
"items": [
{
"id": "string",
"occurredAt": "string",
"kind": "status",
"action": "string",
"actor": {
"id": null,
"label": "string"
},
"source": "action_log"
}
]
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/document-history?kind=order&id=00000000-0000-4000-8000-000000000000&limit=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/document-numbersGenerates the next sales order or quote number using configured formatting rules.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"kind": "order"
}{
"number": "string",
"format": "string",
"sequence": 1
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/document-numbers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"kind\": \"order\"
}"/sales/notesReturns a paginated collection of sales notes that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| contextType | query | No | string | — |
| contextId | query | No | string | — |
| orderId | query | No | string | — |
| quoteId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"context_type": "order",
"context_id": "00000000-0000-4000-8000-000000000000",
"order_id": null,
"quote_id": null,
"body": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/notes?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/notesCreates a note attached to a sales document.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"contextType": "order",
"contextId": "00000000-0000-4000-8000-000000000000",
"body": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/notes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"contextType\": \"order\",
\"contextId\": \"00000000-0000-4000-8000-000000000000\",
\"body\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/sales/notesUpdates a sales note.
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/notes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/sales/notesDeletes a sales note.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/notes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-adjustmentsReturns a paginated collection of order adjustments that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| orderId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order_id": "00000000-0000-4000-8000-000000000000",
"order_line_id": null,
"scope": "string",
"kind": "string",
"code": null,
"label": null,
"calculator_key": null,
"promotion_id": null,
"rate": 1,
"amount_net": 1,
"amount_gross": 1,
"currency_code": null,
"metadata": null,
"position": 1,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/order-adjustments?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/order-adjustmentsCreates an order adjustment and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"orderId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/order-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-adjustmentsUpdates an order adjustment and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"orderId": null
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/order-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-adjustmentsDeletes an order adjustment and recalculates totals.
{
"id": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/order-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-line-statusesManage custom order line statuses available for sales documents. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/order-line-statuses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/order-line-statusesCreates a new order line status. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"value": "string",
"color": null,
"icon": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/order-line-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"value\": \"string\",
\"color\": null,
\"icon\": null
}"/sales/order-line-statusesUpdates an existing order line status by id. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"color": null,
"icon": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/order-line-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"color\": null,
\"icon\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-line-statusesDeletes a order line status identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/order-line-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-linesReturns a paginated collection of order lines that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| orderId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order_id": "00000000-0000-4000-8000-000000000000",
"line_number": 1,
"kind": "string",
"status_entry_id": null,
"status": null,
"product_id": null,
"product_variant_id": null,
"catalog_snapshot": null,
"name": null,
"description": null,
"comment": null,
"quantity": 1,
"quantity_unit": null,
"normalized_quantity": 1,
"normalized_unit": null,
"uom_snapshot": null,
"currency_code": "string",
"unit_price_net": 1,
"unit_price_gross": 1,
"discount_amount": 1,
"discount_percent": 1,
"tax_rate": 1,
"tax_amount": 1,
"total_net_amount": 1,
"total_gross_amount": 1,
"configuration": null,
"promotion_code": null,
"promotion_snapshot": null,
"metadata": null,
"custom_field_set_id": null,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/order-lines?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/order-linesCreates an order line and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string",
"uomSnapshot": null,
"quantity": 1,
"normalizedUnit": null
}{
"id": null,
"orderId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/order-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\",
\"uomSnapshot\": null,
\"quantity\": 1,
\"normalizedUnit\": null
}"/sales/order-linesUpdates an order line and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string",
"uomSnapshot": null,
"quantity": 1,
"normalizedUnit": null
}{
"id": null,
"orderId": null
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/order-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\",
\"uomSnapshot\": null,
\"quantity\": 1,
\"normalizedUnit\": null
}"/sales/order-linesDeletes an order line and recalculates totals.
{
"id": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/order-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-statusesManage the lifecycle states available for sales orders. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/order-statuses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/order-statusesCreates a new order status. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"value": "string",
"color": null,
"icon": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/order-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"value\": \"string\",
\"color\": null,
\"icon\": null
}"/sales/order-statusesUpdates an existing order status by id. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"color": null,
"icon": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/order-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"color\": null,
\"icon\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/order-statusesDeletes a order status identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/order-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/ordersReturns a paginated collection of orders that belong to the current organization. Requires features: sales.orders.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| id | query | No | string | — |
| customerId | query | No | string | — |
| channelId | query | No | string | — |
| lineItemCountMin | query | No | number | — |
| lineItemCountMax | query | No | number | — |
| totalNetMin | query | No | number | — |
| totalNetMax | query | No | number | — |
| totalGrossMin | query | No | number | — |
| totalGrossMax | query | No | number | — |
| dateFrom | query | No | string | — |
| dateTo | query | No | string | — |
| tagIds | query | No | string | — |
| tagIdsEmpty | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"orderNumber": null,
"status": null,
"statusEntryId": null,
"customerEntityId": null,
"customerContactId": null,
"billingAddressId": null,
"shippingAddressId": null,
"customerReference": null,
"externalReference": null,
"comment": null,
"placedAt": null,
"expectedDeliveryAt": null,
"customerSnapshot": null,
"billingAddressSnapshot": null,
"shippingAddressSnapshot": null,
"shippingMethodId": null,
"shippingMethodCode": null,
"shippingMethodSnapshot": null,
"paymentMethodId": null,
"paymentMethodCode": null,
"paymentMethodSnapshot": null,
"currencyCode": null,
"channelId": null,
"organizationId": null,
"tenantId": null,
"validFrom": null,
"validUntil": null,
"lineItemCount": null,
"subtotalNetAmount": null,
"subtotalGrossAmount": null,
"discountTotalAmount": null,
"taxTotalAmount": null,
"shippingNetAmount": null,
"shippingGrossAmount": null,
"surchargeTotalAmount": null,
"grandTotalNetAmount": null,
"grandTotalGrossAmount": null,
"paidTotalAmount": null,
"refundedTotalAmount": null,
"outstandingAmount": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/orders?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/ordersCreates a new sales order. Requires features: sales.orders.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/orders" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\"
}"/sales/ordersRequires features: sales.orders.manage
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/orders" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/ordersDeletes a sales order. Requires features: sales.orders.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/orders" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/payment-methodsConfigure payment options that can be assigned to sales orders and invoices. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string",
"description": null,
"providerKey": null,
"terms": null,
"isActive": true,
"metadata": null,
"providerSettings": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/payment-methods?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/payment-methodsCreates a new payment method. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/payment-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"code\": \"string\"
}"/sales/payment-methodsUpdates an existing payment method by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/payment-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/payment-methodsDeletes a payment method identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/payment-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/payment-statusesManage the lifecycle states available for payments. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/payment-statuses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/payment-statusesCreates a new payment status. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"value": "string",
"color": null,
"icon": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/payment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"value\": \"string\",
\"color\": null,
\"icon\": null
}"/sales/payment-statusesUpdates an existing payment status by id. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"color": null,
"icon": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/payment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"color\": null,
\"icon\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/payment-statusesDeletes a payment status identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/payment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/paymentsReturns a paginated collection of payments that belong to the current organization. Requires features: sales.orders.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| orderId | query | No | string | — |
| paymentMethodId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order_id": null,
"payment_method_id": null,
"payment_method_name": null,
"payment_method_code": null,
"payment_reference": null,
"status_entry_id": null,
"status": null,
"status_label": null,
"amount": 1,
"currency_code": "string",
"captured_amount": null,
"refunded_amount": null,
"received_at": null,
"captured_at": null,
"custom_field_set_id": null,
"customFieldSetId": null,
"custom_values": null,
"customValues": null,
"custom_fields": null,
"customFields": null,
"metadata": null,
"created_at": "string",
"updated_at": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/payments?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/paymentsCreates a payment for a sales order. Requires features: sales.payments.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"amount": 1,
"currencyCode": "string"
}{
"id": null,
"orderTotals": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/payments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"amount\": 1,
\"currencyCode\": \"string\"
}"/sales/paymentsUpdates a payment. Requires features: sales.payments.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"orderTotals": null
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/payments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/paymentsDeletes a payment. Requires features: sales.payments.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"orderTotals": null
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/payments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/price-kindsLists available price kinds that can be used when pricing sales channels and offers. Requires features: sales.channels.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"code": "string",
"title": "string",
"currency_code": null,
"display_mode": "string",
"is_active": true
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/price-kinds?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/quote-adjustmentsReturns a paginated collection of quote adjustments that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| quoteId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"quote_id": "00000000-0000-4000-8000-000000000000",
"quote_line_id": null,
"scope": "string",
"kind": "string",
"code": null,
"label": null,
"calculator_key": null,
"promotion_id": null,
"rate": 1,
"amount_net": 1,
"amount_gross": 1,
"currency_code": null,
"metadata": null,
"position": 1,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/quote-adjustments?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/quote-adjustmentsCreates a quote adjustment and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"quoteId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quote-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quote-adjustmentsUpdates a quote adjustment and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000"
}{
"id": null,
"quoteId": null
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/quote-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quote-adjustmentsDeletes a quote adjustment and recalculates totals.
{
"id": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/quote-adjustments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quote-linesReturns a paginated collection of quote lines that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| id | query | No | string | — |
| quoteId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"quote_id": "00000000-0000-4000-8000-000000000000",
"line_number": 1,
"kind": "string",
"status_entry_id": null,
"status": null,
"product_id": null,
"product_variant_id": null,
"catalog_snapshot": null,
"name": null,
"description": null,
"comment": null,
"quantity": 1,
"quantity_unit": null,
"normalized_quantity": 1,
"normalized_unit": null,
"uom_snapshot": null,
"currency_code": "string",
"unit_price_net": 1,
"unit_price_gross": 1,
"discount_amount": 1,
"discount_percent": 1,
"tax_rate": 1,
"tax_amount": 1,
"total_net_amount": 1,
"total_gross_amount": 1,
"configuration": null,
"promotion_code": null,
"promotion_snapshot": null,
"metadata": null,
"custom_field_set_id": null,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/quote-lines?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/quote-linesCreates a quote line and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string",
"uomSnapshot": null,
"quantity": 1,
"normalizedUnit": null
}{
"id": null,
"quoteId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quote-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\",
\"uomSnapshot\": null,
\"quantity\": 1,
\"normalizedUnit\": null
}"/sales/quote-linesUpdates a quote line and recalculates totals.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string",
"uomSnapshot": null,
"quantity": 1,
"normalizedUnit": null
}{
"id": null,
"quoteId": null
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/quote-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\",
\"uomSnapshot\": null,
\"quantity\": 1,
\"normalizedUnit\": null
}"/sales/quote-linesDeletes a quote line and recalculates totals.
{
"id": "00000000-0000-4000-8000-000000000000",
"quoteId": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/quote-lines" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"quoteId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quotesReturns a paginated collection of quotes that belong to the current organization. Requires features: sales.quotes.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| id | query | No | string | — |
| customerId | query | No | string | — |
| channelId | query | No | string | — |
| lineItemCountMin | query | No | number | — |
| lineItemCountMax | query | No | number | — |
| totalNetMin | query | No | number | — |
| totalNetMax | query | No | number | — |
| totalGrossMin | query | No | number | — |
| totalGrossMax | query | No | number | — |
| dateFrom | query | No | string | — |
| dateTo | query | No | string | — |
| tagIds | query | No | string | — |
| tagIdsEmpty | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"quoteNumber": null,
"status": null,
"statusEntryId": null,
"customerEntityId": null,
"customerContactId": null,
"billingAddressId": null,
"shippingAddressId": null,
"customerReference": null,
"externalReference": null,
"comment": null,
"placedAt": null,
"expectedDeliveryAt": null,
"customerSnapshot": null,
"billingAddressSnapshot": null,
"shippingAddressSnapshot": null,
"shippingMethodId": null,
"shippingMethodCode": null,
"shippingMethodSnapshot": null,
"paymentMethodId": null,
"paymentMethodCode": null,
"paymentMethodSnapshot": null,
"currencyCode": null,
"channelId": null,
"organizationId": null,
"tenantId": null,
"validFrom": null,
"validUntil": null,
"lineItemCount": null,
"subtotalNetAmount": null,
"subtotalGrossAmount": null,
"discountTotalAmount": null,
"taxTotalAmount": null,
"shippingNetAmount": null,
"shippingGrossAmount": null,
"surchargeTotalAmount": null,
"grandTotalNetAmount": null,
"grandTotalGrossAmount": null,
"paidTotalAmount": null,
"refundedTotalAmount": null,
"outstandingAmount": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/quotes?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/quotesCreates a new sales quote. Requires features: sales.quotes.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"currencyCode": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quotes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"currencyCode\": \"string\"
}"/sales/quotesRequires features: sales.quotes.manage
{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/quotes" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/quotesDeletes a sales quote. Requires features: sales.quotes.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/quotes" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quotes/accept{
"token": "00000000-0000-4000-8000-000000000000"
}{
"orderId": "00000000-0000-4000-8000-000000000000",
"orderNumber": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quotes/accept" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"token\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quotes/convertCreates a sales order from a quote and removes the original quote record. Requires features: sales.quotes.manage, sales.orders.manage
{
"quoteId": "00000000-0000-4000-8000-000000000000"
}{
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quotes/convert" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"quoteId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/quotes/public/{token}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| token | path | Yes | string | — |
{
"quote": {
"quoteNumber": "string",
"currencyCode": "string",
"validFrom": null,
"validUntil": null,
"status": null,
"subtotalNetAmount": "string",
"subtotalGrossAmount": "string",
"discountTotalAmount": "string",
"taxTotalAmount": "string",
"grandTotalNetAmount": "string",
"grandTotalGrossAmount": "string"
},
"lines": [
{
"lineNumber": null,
"kind": "string",
"name": null,
"description": null,
"quantity": "string",
"quantityUnit": null,
"normalizedQuantity": "string",
"normalizedUnit": null,
"uomSnapshot": null,
"currencyCode": "string",
"unitPriceNet": "string",
"unitPriceGross": "string",
"discountAmount": "string",
"discountPercent": "string",
"taxRate": "string",
"taxAmount": "string",
"totalNetAmount": "string",
"totalGrossAmount": "string",
"unitPriceReference": null
}
],
"adjustments": [
{
"scope": null,
"kind": null,
"label": null,
"rate": null,
"amountNet": null,
"amountGross": null,
"currencyCode": null,
"position": null,
"quoteLineId": null
}
],
"isExpired": true
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/quotes/public/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/sales/quotes/sendRequires features: sales.quotes.manage
{
"quoteId": "00000000-0000-4000-8000-000000000000",
"validForDays": 14
}{
"ok": true
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/quotes/send" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"quoteId\": \"00000000-0000-4000-8000-000000000000\",
\"validForDays\": 14
}"/sales/returns| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| orderId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order_id": "00000000-0000-4000-8000-000000000000",
"return_number": "string",
"status_entry_id": null,
"status": null,
"reason": null,
"notes": null,
"returned_at": null,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/returns?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/returns{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000",
"lines": [
{
"orderLineId": "00000000-0000-4000-8000-000000000000",
"quantity": 1
}
]
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/returns" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\",
\"lines\": [
{
\"orderLineId\": \"00000000-0000-4000-8000-000000000000\",
\"quantity\": 1
}
]
}"/sales/returns/{id}Requires features: sales.returns.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"return": {
"id": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000",
"returnNumber": "string",
"statusEntryId": null,
"status": null,
"reason": null,
"notes": null,
"returnedAt": null,
"createdAt": null,
"updatedAt": null,
"totalNetAmount": 1,
"totalGrossAmount": 1
},
"lines": [
{
"id": "00000000-0000-4000-8000-000000000000",
"orderLineId": null,
"quantityReturned": "string",
"unitPriceNet": "string",
"unitPriceGross": "string",
"totalNetAmount": "string",
"totalGrossAmount": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/returns/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/settings/document-numbersRequires features: sales.settings.manage
{
"orderNumberFormat": "string",
"quoteNumberFormat": "string",
"nextOrderNumber": 1,
"nextQuoteNumber": 1
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/settings/document-numbers" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/settings/document-numbersRequires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderNumberFormat": "string",
"quoteNumberFormat": "string",
"orderCustomerEditableStatuses": null,
"orderAddressEditableStatuses": null
}{
"orderNumberFormat": "string",
"quoteNumberFormat": "string",
"nextOrderNumber": 1,
"nextQuoteNumber": 1
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/settings/document-numbers" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderNumberFormat\": \"string\",
\"quoteNumberFormat\": \"string\",
\"orderCustomerEditableStatuses\": null,
\"orderAddressEditableStatuses\": null
}"/sales/settings/order-editingRequires features: sales.settings.manage
{
"orderCustomerEditableStatuses": null,
"orderAddressEditableStatuses": null,
"orderStatuses": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/settings/order-editing" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/settings/order-editingRequires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderCustomerEditableStatuses": null,
"orderAddressEditableStatuses": null
}{
"orderCustomerEditableStatuses": null,
"orderAddressEditableStatuses": null,
"orderStatuses": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": "string"
}
]
}{
"error": "string"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/settings/order-editing" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderCustomerEditableStatuses\": null,
\"orderAddressEditableStatuses\": null
}"/sales/shipment-statusesManage the lifecycle states available for shipments. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"value": "string",
"label": null,
"color": null,
"icon": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/shipment-statuses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/shipment-statusesCreates a new shipment status. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"value": "string",
"color": null,
"icon": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/shipment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"value\": \"string\",
\"color\": null,
\"icon\": null
}"/sales/shipment-statusesUpdates an existing shipment status by id. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"color": null,
"icon": null,
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/shipment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"color\": null,
\"icon\": null,
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipment-statusesDeletes a shipment status identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/shipment-statuses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipmentsReturns a paginated collection of shipments that belong to the current organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| orderId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"order_id": "00000000-0000-4000-8000-000000000000",
"shipment_number": null,
"shipping_method_id": null,
"shipping_method_code": null,
"shipping_method_name": null,
"status_entry_id": null,
"status": null,
"status_label": null,
"carrier_name": null,
"tracking_numbers": null,
"shipped_at": null,
"delivered_at": null,
"weight_value": null,
"weight_unit": null,
"declared_value_net": null,
"declared_value_gross": null,
"currency_code": null,
"notes": null,
"metadata": null,
"custom_values": null,
"customValues": null,
"custom_fields": null,
"customFields": null,
"items_snapshot": null,
"itemsSnapshot": null,
"created_at": "string",
"updated_at": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/shipments?page=1&pageSize=50" \ -H "Accept: application/json"
/sales/shipmentsCreates a shipment for an order.
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"orderId": "00000000-0000-4000-8000-000000000000"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/shipments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"orderId\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipmentsUpdates a shipment.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/shipments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipmentsDeletes a shipment.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/shipments" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipping-methodsMaintain shipping services, carrier mappings, and pricing defaults for order fulfillment. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| currency | query | No | string | — |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string",
"description": null,
"carrierCode": null,
"providerKey": null,
"serviceLevel": null,
"estimatedTransitDays": null,
"baseRateNet": "string",
"baseRateGross": "string",
"currencyCode": null,
"isActive": true,
"metadata": null,
"providerSettings": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/shipping-methods?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/shipping-methodsCreates a new shipping method. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/shipping-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"code\": \"string\"
}"/sales/shipping-methodsUpdates an existing shipping method by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/shipping-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/shipping-methodsDeletes a shipping method identified by id. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/shipping-methods" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/tagsManage reusable tags to categorize sales orders and quotes. Requires features: sales.orders.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"label": null,
"color": null,
"description": null,
"organization_id": null,
"tenant_id": null
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/tags?page=1&pageSize=100" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/tagsCreates a sales document tag. Requires features: sales.orders.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"slug": "string",
"label": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"slug\": \"string\",
\"label\": \"string\"
}"/sales/tagsUpdates an existing sales tag. Requires features: sales.orders.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/tags" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/tagsDeletes a sales tag. Requires features: sales.orders.manage
{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/tags" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/tax-ratesReturns a paginated list of sales tax rates for the current organization. Requires features: sales.settings.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| country | query | No | string | — |
| region | query | No | string | — |
| channelId | query | No | string | — |
| isCompound | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| withDeleted | query | No | boolean | — |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": null,
"rate": 1,
"countryCode": null,
"regionCode": null,
"postalCode": null,
"city": null,
"customerGroupId": null,
"productCategoryId": null,
"channelId": null,
"priority": null,
"isCompound": true,
"isDefault": true,
"metadata": null,
"startsAt": null,
"endsAt": null,
"organizationId": null,
"tenantId": null,
"createdAt": "string",
"updatedAt": "string"
}
],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/sales/tax-rates?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/sales/tax-ratesCreates a new tax rate record. Requires features: sales.settings.manage
{
"organizationId": "00000000-0000-4000-8000-000000000000",
"tenantId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"code": "string",
"rate": 1
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/sales/tax-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"code\": \"string\",
\"rate\": 1
}"/sales/tax-ratesUpdates an existing tax rate by identifier. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/sales/tax-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/sales/tax-ratesDeletes a tax rate identified by `id`. Requires features: sales.settings.manage
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/sales/tax-rates" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/shipping-carriers/cancelRequires features: shipping_carriers.manage
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/shipping-carriers/cancel" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/pointsRequires features: shipping_carriers.view
{}{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/shipping-carriers/points" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/providersRequires features: shipping_carriers.manage
{}curl -X GET "https://crm.rsmotoconcierge.pl/api/shipping-carriers/providers" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/ratesRequires features: shipping_carriers.manage
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/shipping-carriers/rates" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/shipmentsRequires features: shipping_carriers.manage
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/shipping-carriers/shipments" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/trackingRequires features: shipping_carriers.view
{}{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/shipping-carriers/tracking" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/shipping-carriers/webhook/{provider}| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| provider | path | Yes | string | — |
{}{}{}curl -X POST "https://crm.rsmotoconcierge.pl/api/shipping-carriers/webhook/:provider" \ -H "Accept: application/json"
/staff/activitiesReturns a paginated collection of teammemberactivitys scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"member_id": null,
"activity_type": null,
"subject": null,
"body": null,
"occurred_at": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/activities?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/activitiesAdds an activity to a team member timeline. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"activityType": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"activityType\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/activitiesUpdates a team member activity. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/activitiesDeletes a team member activity. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/activities" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/addressesReturns a paginated collection of teammemberaddresss scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"member_id": null,
"name": null,
"purpose": null,
"company_name": null,
"address_line1": null,
"address_line2": null,
"building_number": null,
"flat_number": null,
"city": null,
"region": null,
"postal_code": null,
"country": null,
"latitude": null,
"longitude": null,
"is_primary": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/addresses?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/addressesAdds a team member address. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"addressLine1": "string"
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"addressLine1\": \"string\"
}"/staff/addressesUpdates a team member address. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/addressesDeletes a team member address. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/addresses" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/commentsReturns a paginated collection of teammembercomments scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"member_id": null,
"body": null,
"author_user_id": null,
"appearance_icon": null,
"appearance_color": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/comments?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/commentsAdds a note to a team member timeline. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"body": "string",
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null,
"authorUserId": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"body\": \"string\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/commentsUpdates a team member note. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/commentsDeletes a team member note. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/comments" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/job-historiesReturns a paginated collection of teammemberjobhistorys scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| entityId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
{
"items": [
{
"id": "00000000-0000-4000-8000-000000000000",
"member_id": null,
"name": null,
"company_name": null,
"description": null,
"start_date": null,
"end_date": null,
"organization_id": null,
"tenant_id": null,
"created_at": null,
"updated_at": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/job-histories?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/job-historiesAdds a team member job history entry. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"entityId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"companyName": null,
"description": null,
"startDate": "2025-01-01T00:00:00.000Z",
"endDate": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/job-histories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"entityId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"companyName\": null,
\"description\": null,
\"startDate\": \"2025-01-01T00:00:00.000Z\",
\"endDate\": null
}"/staff/job-historiesUpdates a team member job history entry. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"companyName": null,
"description": null,
"endDate": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/job-histories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"companyName\": null,
\"description\": null,
\"endDate\": null
}"/staff/job-historiesDeletes a team member job history entry. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/job-histories" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/leave-requestsReturns a paginated collection of leave requests scoped to the authenticated organization.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| status | query | No | string | — |
| memberId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"member_id": null,
"start_date": null,
"end_date": null,
"timezone": null,
"status": null,
"unavailability_reason_entry_id": null,
"unavailability_reason_value": null,
"note": null,
"decision_comment": null,
"submitted_by_user_id": null,
"decided_by_user_id": null,
"decided_at": null,
"created_at": null,
"updated_at": null,
"member": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/leave-requests?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/leave-requestsCreates a leave request for a staff member.
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"memberId": "00000000-0000-4000-8000-000000000000",
"timezone": "string",
"startDate": "2025-01-01T00:00:00.000Z",
"endDate": "2025-01-01T00:00:00.000Z",
"unavailabilityReasonEntryId": null,
"unavailabilityReasonValue": null,
"note": null,
"submittedByUserId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/leave-requests" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"memberId\": \"00000000-0000-4000-8000-000000000000\",
\"timezone\": \"string\",
\"startDate\": \"2025-01-01T00:00:00.000Z\",
\"endDate\": \"2025-01-01T00:00:00.000Z\",
\"unavailabilityReasonEntryId\": null,
\"unavailabilityReasonValue\": null,
\"note\": null,
\"submittedByUserId\": null
}"/staff/leave-requestsUpdates a leave request by id.
{
"id": "00000000-0000-4000-8000-000000000000",
"unavailabilityReasonEntryId": null,
"unavailabilityReasonValue": null,
"note": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/leave-requests" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"unavailabilityReasonEntryId\": null,
\"unavailabilityReasonValue\": null,
\"note\": null
}"/staff/leave-requestsDeletes a leave request by id.
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/leave-requests" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/leave-requests/acceptApproves a leave request and adds unavailability rules for the staff member. Requires features: staff.leave_requests.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"decisionComment": null,
"decidedByUserId": null
}{
"ok": true,
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/leave-requests/accept" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"decisionComment\": null,
\"decidedByUserId\": null
}"/staff/leave-requests/rejectRejects a leave request with an optional comment. Requires features: staff.leave_requests.manage
{
"id": "00000000-0000-4000-8000-000000000000",
"decisionComment": null,
"decidedByUserId": null
}{
"ok": true,
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/leave-requests/reject" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"decisionComment\": null,
\"decidedByUserId\": null
}"/staff/team-membersReturns a paginated collection of team members scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| isActive | query | No | string | — |
| teamId | query | No | string | — |
| roleId | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"team_id": null,
"display_name": null,
"description": null,
"user_id": null,
"availability_rule_set_id": null,
"is_active": null,
"created_at": null,
"updated_at": null,
"user": null,
"team": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/team-members?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/team-membersCreates a team member for staff assignments. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"teamId": null,
"displayName": "string",
"description": null,
"userId": null,
"roleIds": [],
"tags": [],
"availabilityRuleSetId": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/team-members" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"teamId\": null,
\"displayName\": \"string\",
\"description\": null,
\"userId\": null,
\"roleIds\": [],
\"tags\": [],
\"availabilityRuleSetId\": null
}"/staff/team-membersUpdates a team member by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"teamId": null,
"description": null,
"userId": null,
"availabilityRuleSetId": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/team-members" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"teamId\": null,
\"description\": null,
\"userId\": null,
\"availabilityRuleSetId\": null
}"/staff/team-membersDeletes a team member by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/team-members" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/team-members/selfReturns the staff team member linked to the current user, if any. Requires features: staff.leave_requests.send
{
"member": null
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/team-members/self" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/team-members/selfCreates a team member profile for the signed-in user. Requires features: staff.leave_requests.send
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"displayName": "string",
"description": null
}{
"id": null
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/team-members/self" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"displayName\": \"string\",
\"description\": null
}"/staff/team-members/tags/assignAssigns a tag to a staff team member. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"memberId": "00000000-0000-4000-8000-000000000000",
"tag": "string"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/team-members/tags/assign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"memberId\": \"00000000-0000-4000-8000-000000000000\",
\"tag\": \"string\"
}"/staff/team-members/tags/unassignRemoves a tag from a staff team member. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"memberId": "00000000-0000-4000-8000-000000000000",
"tag": "string"
}{
"id": null
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/team-members/tags/unassign" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"memberId\": \"00000000-0000-4000-8000-000000000000\",
\"tag\": \"string\"
}"/staff/team-rolesReturns a paginated collection of team roles scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| teamId | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"team_id": null,
"name": null,
"description": null,
"appearance_icon": null,
"appearance_color": null,
"created_at": null,
"updated_at": null,
"team": null,
"memberCount": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/team-roles?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/team-rolesCreates a team role for staff team members. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"teamId": null,
"name": "string",
"description": null,
"appearanceIcon": null,
"appearanceColor": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/team-roles" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"teamId\": null,
\"name\": \"string\",
\"description\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/team-rolesUpdates a team role by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"teamId": null,
"description": null,
"appearanceIcon": null,
"appearanceColor": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/team-roles" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"teamId\": null,
\"description\": null,
\"appearanceIcon\": null,
\"appearanceColor\": null
}"/staff/team-rolesDeletes a team role by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/team-roles" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/staff/teamsReturns a paginated collection of teams scoped to the authenticated organization. Requires features: staff.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| search | query | No | string | — |
| ids | query | No | string | Comma-separated list of record UUIDs to filter by (max 200). |
| isActive | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [
{
"id": null,
"organization_id": null,
"tenant_id": null,
"name": null,
"description": null,
"is_active": null,
"created_at": null,
"updated_at": null,
"memberCount": null
}
],
"total": 1,
"totalPages": 1
}curl -X GET "https://crm.rsmotoconcierge.pl/api/staff/teams?page=1&pageSize=50" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/staff/teamsCreates a staff team. Requires features: staff.manage_team
{
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"name": "string",
"description": null
}{
"id": null
}curl -X POST "https://crm.rsmotoconcierge.pl/api/staff/teams" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"tenantId\": \"00000000-0000-4000-8000-000000000000\",
\"organizationId\": \"00000000-0000-4000-8000-000000000000\",
\"name\": \"string\",
\"description\": null
}"/staff/teamsUpdates a staff team by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000",
"description": null
}{
"ok": true
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/staff/teams" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\",
\"description\": null
}"/staff/teamsDeletes a staff team by id. Requires features: staff.manage_team
{
"id": "00000000-0000-4000-8000-000000000000"
}{
"ok": true
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/staff/teams" \
-H "Accept: application/json" \
-H "authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"00000000-0000-4000-8000-000000000000\"
}"/translations/{entityType}/{entityId}Returns the full translation record for a single entity. Requires features: translations.view
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityType | path | Yes | string | — |
| entityId | path | Yes | string | — |
{}{}curl -X GET "https://crm.rsmotoconcierge.pl/api/translations/string/string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/translations/{entityType}/{entityId}Full replacement of translations JSONB for an entity. Requires features: translations.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityType | path | Yes | string | — |
| entityId | path | Yes | string | — |
{}{}curl -X PUT "https://crm.rsmotoconcierge.pl/api/translations/string/string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/translations/{entityType}/{entityId}Removes all translations for an entity. Requires features: translations.manage
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| entityType | path | Yes | string | — |
| entityId | path | Yes | string | — |
No response body.
curl -X DELETE "https://crm.rsmotoconcierge.pl/api/translations/string/string" \ -H "Accept: application/json" \ -H "authorization: Bearer <token>"
/workflows/definitionsGet a list of workflow definitions with optional filters. Supports pagination and search.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| workflowId | query | Yes | string | — |
| enabled | query | No | boolean | — |
| search | query | No | string | — |
| limit | query | No | number | — |
| offset | query | No | number | — |
{
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workflowId": "checkout-flow",
"workflowName": "Checkout Flow",
"description": "Complete checkout workflow for processing orders",
"version": 1,
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED"
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-end",
"fromStepId": "validate-cart",
"toStepId": "end",
"trigger": "auto"
}
]
},
"enabled": true,
"tenantId": "123e4567-e89b-12d3-a456-426614174001",
"organizationId": "123e4567-e89b-12d3-a456-426614174002",
"createdAt": "2025-12-08T10:00:00.000Z",
"updatedAt": "2025-12-08T10:00:00.000Z"
}
],
"pagination": {
"total": 1,
"limit": 50,
"offset": 0,
"hasMore": false
}
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/definitions?workflowId=string&limit=50&offset=0" \ -H "Accept: application/json"
/workflows/definitionsCreate a new workflow definition. The definition must include at least START and END steps with at least one transition connecting them.
{
"workflowId": "checkout-flow",
"workflowName": "Checkout Flow",
"description": "Complete checkout workflow for processing orders",
"version": 1,
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED",
"description": "Validate cart items and check inventory"
},
{
"stepId": "payment",
"stepName": "Process Payment",
"stepType": "AUTOMATED",
"description": "Charge payment method",
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": 1000
}
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-payment",
"fromStepId": "validate-cart",
"toStepId": "payment",
"trigger": "auto"
},
{
"transitionId": "payment-to-end",
"fromStepId": "payment",
"toStepId": "end",
"trigger": "auto",
"activities": [
{
"activityName": "Send Order Confirmation",
"activityType": "SEND_EMAIL",
"config": {
"to": "{{context.customerEmail}}",
"subject": "Order Confirmation #{{context.orderId}}",
"template": "order_confirmation"
}
}
]
}
]
},
"enabled": true
}{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"workflowId": "checkout-flow",
"workflowName": "Checkout Flow",
"description": "Complete checkout workflow for processing orders",
"version": 1,
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED"
},
{
"stepId": "payment",
"stepName": "Process Payment",
"stepType": "AUTOMATED"
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-payment",
"fromStepId": "validate-cart",
"toStepId": "payment",
"trigger": "auto"
},
{
"transitionId": "payment-to-end",
"fromStepId": "payment",
"toStepId": "end",
"trigger": "auto"
}
]
},
"enabled": true,
"tenantId": "123e4567-e89b-12d3-a456-426614174001",
"organizationId": "123e4567-e89b-12d3-a456-426614174002",
"createdAt": "2025-12-08T10:00:00.000Z",
"updatedAt": "2025-12-08T10:00:00.000Z"
},
"message": "Workflow definition created successfully"
}{
"error": "Validation failed",
"details": [
{
"code": "invalid_type",
"message": "Workflow must have at least START and END steps",
"path": [
"definition",
"steps"
]
}
]
}{
"error": "Workflow definition with ID \"checkout-flow\" and version 1 already exists"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/definitions" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"workflowId\": \"string\",
\"workflowName\": \"string\",
\"description\": null,
\"version\": 1,
\"definition\": {
\"steps\": [
{
\"stepId\": \"string\",
\"stepName\": \"string\",
\"stepType\": \"START\"
}
],
\"transitions\": [
{
\"transitionId\": \"string\",
\"fromStepId\": \"string\",
\"toStepId\": \"string\",
\"trigger\": \"auto\",
\"continueOnActivityFailure\": true,
\"priority\": 0
}
]
},
\"metadata\": null,
\"enabled\": true
}"/workflows/definitions/{id}Get a single workflow definition by ID. Returns the complete workflow structure including steps and transitions (with embedded activities).
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"workflowId": "checkout-flow",
"workflowName": "Checkout Flow",
"description": "Complete checkout workflow for processing orders",
"version": 1,
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED",
"description": "Validate cart items and check inventory"
},
{
"stepId": "payment",
"stepName": "Process Payment",
"stepType": "AUTOMATED",
"description": "Charge payment method",
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": 1000
}
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-payment",
"fromStepId": "validate-cart",
"toStepId": "payment",
"trigger": "auto"
},
{
"transitionId": "payment-to-end",
"fromStepId": "payment",
"toStepId": "end",
"trigger": "auto",
"activities": [
{
"activityName": "Send Order Confirmation",
"activityType": "SEND_EMAIL",
"config": {
"to": "{{context.customerEmail}}",
"subject": "Order Confirmation #{{context.orderId}}",
"template": "order_confirmation"
}
}
]
}
]
},
"enabled": true,
"tenantId": "123e4567-e89b-12d3-a456-426614174001",
"organizationId": "123e4567-e89b-12d3-a456-426614174002",
"createdAt": "2025-12-08T10:00:00.000Z",
"updatedAt": "2025-12-08T10:00:00.000Z"
}
}{
"error": "Workflow definition not found"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/definitions/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/workflows/definitions/{id}Update an existing workflow definition. Supports partial updates - only provided fields will be updated.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED"
},
{
"stepId": "payment",
"stepName": "Process Payment",
"stepType": "AUTOMATED"
},
{
"stepId": "confirmation",
"stepName": "Order Confirmation",
"stepType": "AUTOMATED"
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-payment",
"fromStepId": "validate-cart",
"toStepId": "payment",
"trigger": "auto"
},
{
"transitionId": "payment-to-confirmation",
"fromStepId": "payment",
"toStepId": "confirmation",
"trigger": "auto"
},
{
"transitionId": "confirmation-to-end",
"fromStepId": "confirmation",
"toStepId": "end",
"trigger": "auto"
}
]
},
"enabled": true
}{
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"workflowId": "checkout-flow",
"workflowName": "Checkout Flow",
"description": "Complete checkout workflow for processing orders",
"version": 1,
"definition": {
"steps": [
{
"stepId": "start",
"stepName": "Start",
"stepType": "START"
},
{
"stepId": "validate-cart",
"stepName": "Validate Cart",
"stepType": "AUTOMATED"
},
{
"stepId": "payment",
"stepName": "Process Payment",
"stepType": "AUTOMATED"
},
{
"stepId": "confirmation",
"stepName": "Order Confirmation",
"stepType": "AUTOMATED"
},
{
"stepId": "end",
"stepName": "End",
"stepType": "END"
}
],
"transitions": [
{
"transitionId": "start-to-validate",
"fromStepId": "start",
"toStepId": "validate-cart",
"trigger": "auto"
},
{
"transitionId": "validate-to-payment",
"fromStepId": "validate-cart",
"toStepId": "payment",
"trigger": "auto"
},
{
"transitionId": "payment-to-confirmation",
"fromStepId": "payment",
"toStepId": "confirmation",
"trigger": "auto"
},
{
"transitionId": "confirmation-to-end",
"fromStepId": "confirmation",
"toStepId": "end",
"trigger": "auto"
}
]
},
"enabled": true,
"tenantId": "123e4567-e89b-12d3-a456-426614174001",
"organizationId": "123e4567-e89b-12d3-a456-426614174002",
"createdAt": "2025-12-08T10:00:00.000Z",
"updatedAt": "2025-12-08T11:30:00.000Z"
},
"message": "Workflow definition updated successfully"
}{
"error": "Validation failed",
"details": [
{
"code": "invalid_type",
"message": "Expected object, received string",
"path": [
"definition"
]
}
]
}{
"error": "Workflow definition not found"
}curl -X PUT "https://crm.rsmotoconcierge.pl/api/workflows/definitions/00000000-0000-4000-8000-000000000000" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/workflows/definitions/{id}Soft delete a workflow definition. Cannot be deleted if there are active workflow instances (RUNNING or WAITING status) using this definition.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"message": "Workflow definition deleted successfully"
}{
"error": "Workflow definition not found"
}{
"error": "Cannot delete workflow definition with 3 active instance(s)"
}curl -X DELETE "https://crm.rsmotoconcierge.pl/api/workflows/definitions/00000000-0000-4000-8000-000000000000" \ -H "Accept: application/json"
/workflows/eventsGet a paginated list of all workflow events with filtering options
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| page | query | No | number | — |
| pageSize | query | No | number | — |
| eventType | query | No | string | — |
| workflowInstanceId | query | No | string | — |
| userId | query | No | string | — |
| occurredAtFrom | query | No | string | — |
| occurredAtTo | query | No | string | — |
| sortField | query | No | string | — |
| sortDir | query | No | string | — |
{
"items": [],
"total": 1,
"page": 1,
"pageSize": 1,
"totalPages": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/events?page=1&pageSize=50&sortField=occurredAt&sortDir=desc" \ -H "Accept: application/json"
/workflows/events/{id}Get detailed information about a specific workflow event
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"id": "string",
"workflowInstanceId": "string",
"stepInstanceId": null,
"eventType": "string",
"occurredAt": "string",
"userId": null,
"workflowInstance": null
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/events/:id" \ -H "Accept: application/json"
/workflows/instancesGet a list of workflow instances with optional filters. Supports pagination and filtering by status, workflowId, correlationKey, etc.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| workflowId | query | No | string | — |
| status | query | No | string | — |
| correlationKey | query | No | string | — |
| entityType | query | No | string | — |
| entityId | query | No | string | — |
| limit | query | No | number | — |
| offset | query | No | number | — |
{
"data": [],
"pagination": {
"total": 1,
"limit": 1,
"offset": 1,
"hasMore": true
}
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/instances?limit=50&offset=0" \ -H "Accept: application/json"
/workflows/instancesStart a new workflow instance from a workflow definition. The workflow will execute immediately.
{
"workflowId": "string"
}{
"data": {},
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"workflowId\": \"string\"
}"/workflows/instances/{id}Get detailed information about a specific workflow instance including current state, context, and execution status.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id" \ -H "Accept: application/json"
/workflows/instances/{id}/advanceManually advance a workflow instance to the next step. Useful for manual progression, step-by-step testing, user-triggered transitions, and approval flows. Validates transitions and auto-progresses if possible.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{}{
"data": {
"instance": {
"id": "00000000-0000-4000-8000-000000000000",
"status": "string",
"currentStepId": null,
"previousStepId": null,
"transitionFired": null
}
},
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id/advance" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{}"/workflows/instances/{id}/cancelCancel a running or paused workflow instance. The workflow will be marked as CANCELLED and will not execute further.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id/cancel" \ -H "Accept: application/json"
/workflows/instances/{id}/eventsGet a chronological list of events for a workflow instance. Events track all state changes, transitions, and activities.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
| eventType | query | No | string | — |
| limit | query | No | number | — |
| offset | query | No | number | — |
{
"data": [],
"pagination": {
"total": 1,
"limit": 1,
"offset": 1,
"hasMore": true
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id/events?limit=100&offset=0" \ -H "Accept: application/json"
/workflows/instances/{id}/retryRetry a failed workflow instance from its current step. The workflow will be reset to RUNNING status and execution will continue.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"data": {},
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id/retry" \ -H "Accept: application/json"
/workflows/instances/{id}/signalSends a signal to a specific workflow instance waiting for a signal. The workflow must be in PAUSED status and waiting for the specified signal.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"signalName": "string"
}{
"success": true,
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances/:id/signal" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"signalName\": \"string\"
}"/workflows/instances/validate-startEvaluates pre-conditions defined on the START step and returns validation errors with localized messages if any fail. Returns canStart: true/false with details.
{
"workflowId": "string"
}{
"canStart": true,
"workflowId": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/instances/validate-start" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"workflowId\": \"string\"
}"/workflows/signalsSends a signal to all workflow instances waiting for the specified signal that match the correlation key. Returns the count of workflows that received the signal.
{
"correlationKey": "string",
"signalName": "string"
}{
"success": true,
"message": "string",
"count": 1
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/signals" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"correlationKey\": \"string\",
\"signalName\": \"string\"
}"/workflows/tasksReturns paginated list of user tasks with optional filtering by status, assignee, workflow instance, overdue, and myTasks flags.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| status | query | No | string | Filter by status (comma-separated for multiple: PENDING,IN_PROGRESS,COMPLETED,CANCELLED,ESCALATED) |
| assignedTo | query | No | string | Filter by assigned user ID |
| workflowInstanceId | query | No | string | Filter by workflow instance ID |
| overdue | query | No | boolean | Filter overdue tasks (true/false) |
| myTasks | query | No | boolean | Show only tasks assigned to or claimable by current user |
| limit | query | No | number | Number of results (max 100) |
| offset | query | No | number | Pagination offset |
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"workflowInstanceId": null,
"stepInstanceId": null,
"procurementProcessTaskId": null,
"procurementProcessId": null,
"procurementProcessTitle": null,
"serviceCaseId": null,
"serviceCaseTitle": null,
"taskName": "string",
"description": null,
"status": "PENDING",
"formSchema": null,
"formData": null,
"assignedTo": null,
"assignedToDisplayName": null,
"assignedToRoles": null,
"claimedBy": null,
"claimedByDisplayName": null,
"claimedAt": null,
"dueDate": null,
"escalatedAt": null,
"escalatedTo": null,
"completedBy": null,
"completedAt": null,
"comments": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdAt": "string",
"updatedAt": "string"
}
],
"pagination": {
"total": 1,
"limit": 1,
"offset": 1,
"hasMore": true
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/tasks?limit=50&offset=0" \ -H "Accept: application/json"
/workflows/tasks/{id}Returns complete details of a user task by ID.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"workflowInstanceId": null,
"stepInstanceId": null,
"procurementProcessTaskId": null,
"procurementProcessId": null,
"procurementProcessTitle": null,
"serviceCaseId": null,
"serviceCaseTitle": null,
"taskName": "string",
"description": null,
"status": "PENDING",
"formSchema": null,
"formData": null,
"assignedTo": null,
"assignedToDisplayName": null,
"assignedToRoles": null,
"claimedBy": null,
"claimedByDisplayName": null,
"claimedAt": null,
"dueDate": null,
"escalatedAt": null,
"escalatedTo": null,
"completedBy": null,
"completedAt": null,
"comments": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdAt": "string",
"updatedAt": "string"
}
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X GET "https://crm.rsmotoconcierge.pl/api/workflows/tasks/:id" \ -H "Accept: application/json"
/workflows/tasks/{id}/claimAllows a user to claim a task assigned to their role(s). Once claimed, the task moves to IN_PROGRESS status and is assigned to the claiming user.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"workflowInstanceId": null,
"stepInstanceId": null,
"procurementProcessTaskId": null,
"procurementProcessId": null,
"procurementProcessTitle": null,
"serviceCaseId": null,
"serviceCaseTitle": null,
"taskName": "string",
"description": null,
"status": "PENDING",
"formSchema": null,
"formData": null,
"assignedTo": null,
"assignedToDisplayName": null,
"assignedToRoles": null,
"claimedBy": null,
"claimedByDisplayName": null,
"claimedAt": null,
"dueDate": null,
"escalatedAt": null,
"escalatedTo": null,
"completedBy": null,
"completedAt": null,
"comments": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdAt": "string",
"updatedAt": "string"
},
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/tasks/:id/claim" \ -H "Accept: application/json"
/workflows/tasks/{id}/completeValidates form data against task schema, updates task with completion data, merges form data into workflow context, and resumes workflow execution.
| Name | In | Required | Schema | Description |
|---|---|---|---|---|
| id | path | Yes | string | — |
{
"formData": {}
}{
"data": {
"id": "00000000-0000-4000-8000-000000000000",
"workflowInstanceId": null,
"stepInstanceId": null,
"procurementProcessTaskId": null,
"procurementProcessId": null,
"procurementProcessTitle": null,
"serviceCaseId": null,
"serviceCaseTitle": null,
"taskName": "string",
"description": null,
"status": "PENDING",
"formSchema": null,
"formData": null,
"assignedTo": null,
"assignedToDisplayName": null,
"assignedToRoles": null,
"claimedBy": null,
"claimedByDisplayName": null,
"claimedAt": null,
"dueDate": null,
"escalatedAt": null,
"escalatedTo": null,
"completedBy": null,
"completedAt": null,
"comments": null,
"tenantId": "00000000-0000-4000-8000-000000000000",
"organizationId": "00000000-0000-4000-8000-000000000000",
"createdAt": "string",
"updatedAt": "string"
},
"message": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}{
"error": "string"
}curl -X POST "https://crm.rsmotoconcierge.pl/api/workflows/tasks/:id/complete" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{
\"formData\": {}
}"