List services
Returns a paginated list of services owned by the authenticated workshop. Filtering - q searches in the service title (case-insensitive). - is_active filters visibility (true|false). - category_ids expects comma-separated int...
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
This endpoint does not use a JSON body. Send path/query parameters and required headers.
Response Example
{
"data": {
"id": 123
}
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
const response = await axios({
method: "get",
url: `${BASE_URL}/api/ws/services`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X GET "${BASE_URL}/api/ws/services" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}"
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services`, {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
});
const data = await response.json();
console.log(data);
Create service
Creates a new service for the authenticated workshop. Body - Send JSON matching WorkshopServiceCreateRequest. - Or send multipart/form-data with the same fields and an optional image_file/file. - Only one image is stored. If ...
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
{
"body": {
"example_field": "example_value"
}
}
Response Example
{
"success": true,
"message": "Operation completed"
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
const response = await axios({
method: "post",
url: `${BASE_URL}/api/ws/services`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
data: {
"example_field": "example_value"
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X POST "${BASE_URL}/api/ws/services" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}" \\
-d '{
"example_field": "example_value"
}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: JSON.stringify({
"example_field": "example_value"
}),
});
const data = await response.json();
console.log(data);
POST/api/ws/services/batchBatch mutate services
Applies one action to many services in a single request. - hide: set is_active=false - show: set is_active=true - delete: hard-delete services
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
{
"body": {
"example_field": "example_value"
}
}
Response Example
{
"success": true,
"message": "Operation completed"
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
const response = await axios({
method: "post",
url: `${BASE_URL}/api/ws/services/batch`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
data: {
"example_field": "example_value"
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X POST "${BASE_URL}/api/ws/services/batch" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}" \\
-d '{
"example_field": "example_value"
}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services/batch`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: JSON.stringify({
"example_field": "example_value"
}),
});
const data = await response.json();
console.log(data);
GET/api/ws/services/:service_idGet service by ID
Returns a single service owned by the authenticated workshop.
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
This endpoint does not use a JSON body. Send path/query parameters and required headers.
Response Example
{
"data": {
"id": 123
}
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
// Replace path params before calling endpoint: service_id
const response = await axios({
method: "get",
url: `${BASE_URL}/api/ws/services/:service_id`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X GET "${BASE_URL}/api/ws/services/:service_id" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}"
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services/:service_id`, {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
});
const data = await response.json();
console.log(data);
PUT/api/ws/services/:service_idUpdate service
Partially updates a service. Only provided fields are changed. Body - Send JSON matching WorkshopServiceUpdateRequest. - Or use multipart/form-data and upload a file in image_file/file. - Any provided image (or file) replaces...
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
{
"path_params": {
"service_id": 123
},
"body": {
"example_field": "example_value"
}
}
Response Example
{
"success": true,
"message": "Operation completed"
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
// Replace path params before calling endpoint: service_id
const response = await axios({
method: "put",
url: `${BASE_URL}/api/ws/services/:service_id`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
data: {
"example_field": "example_value"
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X PUT "${BASE_URL}/api/ws/services/:service_id" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}" \\
-d '{
"example_field": "example_value"
}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services/:service_id`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: JSON.stringify({
"example_field": "example_value"
}),
});
const data = await response.json();
console.log(data);
DELETE/api/ws/services/:service_idDelete service
Deletes a service owned by the authenticated workshop.
Auth: BearerSource: API-DOC/workshop-rules/services.md
Request Example
{
"path_params": {
"service_id": 123
},
"body": {
"example_field": "example_value"
}
}
Response Example
{
"success": true,
"message": "Operation completed"
}
Node.js Axios example
import axios from "axios";
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
async function run() {
// Replace path params before calling endpoint: service_id
const response = await axios({
method: "delete",
url: `${BASE_URL}/api/ws/services/:service_id`,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
data: {
"example_field": "example_value"
},
timeout: 20000,
});
console.log(response.data);
}
run().catch((error) => {
console.error(error.response?.data ?? error.message);
});
cURL example
BASE_URL="${MINBIL_API_BASE_URL:-http://localhost:5000}"
API_KEY="${MINBIL_API_KEY:-YOUR_API_KEY}"
ACCESS_TOKEN="${MINBIL_WS_ACCESS_TOKEN:-YOUR_BEARER_TOKEN}"
curl -X DELETE "${BASE_URL}/api/ws/services/:service_id" \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer ${ACCESS_TOKEN}" \\
-d '{
"example_field": "example_value"
}'
Fetch example
const BASE_URL = process.env.MINBIL_API_BASE_URL ?? "http://localhost:5000";
const API_KEY = process.env.MINBIL_API_KEY ?? "YOUR_API_KEY";
const ACCESS_TOKEN = process.env.MINBIL_WS_ACCESS_TOKEN ?? "YOUR_BEARER_TOKEN";
const response = await fetch(`${BASE_URL}/api/ws/services/:service_id`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: JSON.stringify({
"example_field": "example_value"
}),
});
const data = await response.json();
console.log(data);