Introduction
Industry Tuner API - A comprehensive API for authentication, user/company/expert management, projects & proposals, subscriptions, blogs, FAQs, locations, policies, site settings, and more.
This documentation aims to provide all the information you need to work with our API.
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by logging in through the authentication endpoints. Include the token in the Authorization header as: Bearer {YOUR_AUTH_TOKEN}.
Admin About Page
Get current about page content.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/about-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/about-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "About page content retrieved successfully",
"data": {
"id": 1,
"page_title": "About Us",
"side_image": "http://localhost/images/about/side.jpg",
"heading": "Welcome",
"description": "Description",
"our_mission_text": "Mission text",
"our_vision_text": "Vision text",
"our_values_text": "Values text",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update about page content.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/about-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "page_title=About Us"\
--form "heading=Welcome to Our Company"\
--form "description=We are a leading company"\
--form "our_mission_text=Our mission is to..."\
--form "our_vision_text=Our vision is to..."\
--form "our_values_text=Our values are..."\
--form "side_image=@C:\Users\AMITB\AppData\Local\Temp\php3BDB.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/about-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('page_title', 'About Us');
body.append('heading', 'Welcome to Our Company');
body.append('description', 'We are a leading company');
body.append('our_mission_text', 'Our mission is to...');
body.append('our_vision_text', 'Our vision is to...');
body.append('our_values_text', 'Our values are...');
body.append('side_image', document.querySelector('input[name="side_image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "About page content updated successfully",
"data": {
"id": 1,
"page_title": "About Us",
"side_image": "http://localhost/images/about/side.jpg",
"heading": "Welcome",
"description": "Description",
"our_mission_text": "Mission text",
"our_vision_text": "Vision text",
"our_values_text": "Values text",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"page_title": [
"The page title field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update about page content.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/about-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "page_title=About Us"\
--form "heading=Welcome to Our Company"\
--form "description=We are a leading company"\
--form "our_mission_text=Our mission is to..."\
--form "our_vision_text=Our vision is to..."\
--form "our_values_text=Our values are..."\
--form "side_image=@C:\Users\AMITB\AppData\Local\Temp\php4004.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/about-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('page_title', 'About Us');
body.append('heading', 'Welcome to Our Company');
body.append('description', 'We are a leading company');
body.append('our_mission_text', 'Our mission is to...');
body.append('our_vision_text', 'Our vision is to...');
body.append('our_values_text', 'Our values are...');
body.append('side_image', document.querySelector('input[name="side_image"]').files[0]);
fetch(url, {
method: "PATCH",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "About page content updated successfully",
"data": {
"id": 1,
"page_title": "About Us",
"side_image": "http://localhost/images/about/side.jpg",
"heading": "Welcome",
"description": "Description",
"our_mission_text": "Mission text",
"our_vision_text": "Vision text",
"our_values_text": "Values text",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"page_title": [
"The page title field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Blogs
Blog Categories
List blog categories (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/blog-categories" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blog-categories"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog categories retrieved",
"data": [
{
"id": 1,
"name": "Tech",
"is_active": true,
"blogs_count": 5,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
]
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a blog category.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/blog-categories" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Technology\",
\"is_active\": true
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blog-categories"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Technology",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Blog category created",
"data": {
"id": 1,
"name": "Technology",
"is_active": true,
"blogs_count": 0,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "The name has already been taken.",
"errors": {
"name": [
"The name has already been taken."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single category (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/blog-categories/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blog-categories/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog category retrieved",
"data": {
"id": 1,
"name": "Technology",
"is_active": true,
"blogs_count": 3,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog category not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a category.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/blog-categories/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"AI\",
\"is_active\": false
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blog-categories/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "AI",
"is_active": false
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog category updated",
"data": {
"id": 1,
"name": "AI",
"is_active": false,
"blogs_count": 3,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:10:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog category not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a category.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/blog-categories/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blog-categories/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog category deleted",
"data": null
}
Example response (404):
{
"success": false,
"message": "Blog category not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Blogs
List blogs for admin.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/blogs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blogs retrieved",
"data": [
{
"id": 1,
"name": "Launch Update",
"blog_category_id": 2,
"category": {
"id": 2,
"name": "News",
"is_active": true,
"blogs_count": 1
},
"thumbnail_image": "https://cdn/img.png",
"description": "Short summary",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
]
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a blog with sections.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/blogs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Launch Update\",
\"blog_category_id\": 2,
\"thumbnail_image\": \"https:\\/\\/cdn\\/img.png\",
\"description\": \"Eius et animi quos velit et.\",
\"share_facebook\": true,
\"share_twitter\": false,
\"share_linkedin\": true,
\"is_active\": true,
\"sections\": [
\"architecto\"
]
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Launch Update",
"blog_category_id": 2,
"thumbnail_image": "https:\/\/cdn\/img.png",
"description": "Eius et animi quos velit et.",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
"architecto"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Blog created",
"data": {
"id": 1,
"name": "Launch Update",
"blog_category_id": 2,
"thumbnail_image": "https://cdn/img.png",
"description": "...",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"sections.0.heading": [
"The heading field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a blog (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/blogs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blogs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog retrieved",
"data": {
"id": 1,
"name": "Launch Update",
"blog_category_id": 2,
"category": {
"id": 2,
"name": "News",
"is_active": true,
"blogs_count": 1
},
"thumbnail_image": "https://cdn/img.png",
"description": "...",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a blog and its sections.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/blogs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Launch Update v2\",
\"blog_category_id\": 2,
\"thumbnail_image\": \"https:\\/\\/cdn\\/img2.png\",
\"description\": \"Eius et animi quos velit et.\",
\"share_facebook\": false,
\"share_twitter\": false,
\"share_linkedin\": false,
\"is_active\": false,
\"sections\": [
\"architecto\"
]
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blogs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Launch Update v2",
"blog_category_id": 2,
"thumbnail_image": "https:\/\/cdn\/img2.png",
"description": "Eius et animi quos velit et.",
"share_facebook": false,
"share_twitter": false,
"share_linkedin": false,
"is_active": false,
"sections": [
"architecto"
]
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog updated",
"data": {
"id": 1,
"name": "Launch Update v2",
"blog_category_id": 2,
"thumbnail_image": "https://cdn/img2.png",
"description": "...",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:10:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog not found"
}
Example response (422):
{
"success": false,
"message": "One or more section ids are invalid for this blog."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a blog.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/blogs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/blogs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog deleted",
"data": null
}
Example response (404):
{
"success": false,
"message": "Blog not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Commission Settings
Get current commission (platform fee) settings.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/commission-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/commission-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Commission settings retrieved successfully",
"data": {
"id": 1,
"platform_fee_company_percent": 10,
"platform_fee_expert_percent": 5,
"is_enabled": true,
"created_at": "2026-02-12T00:00:00+00:00",
"updated_at": "2026-02-12T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update commission (platform fee) settings.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/commission-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"platform_fee_company_percent\": 10,
\"platform_fee_expert_percent\": 5,
\"is_enabled\": true
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/commission-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"platform_fee_company_percent": 10,
"platform_fee_expert_percent": 5,
"is_enabled": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Commission settings updated successfully",
"data": {
"id": 1,
"platform_fee_company_percent": 10,
"platform_fee_expert_percent": 5,
"is_enabled": true,
"created_at": "2026-02-12T00:00:00+00:00",
"updated_at": "2026-02-12T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"platform_fee_company_percent": [
"Platform fee for companies must not exceed 100."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update commission (platform fee) settings.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/commission-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"platform_fee_company_percent\": 10,
\"platform_fee_expert_percent\": 5,
\"is_enabled\": true
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/commission-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"platform_fee_company_percent": 10,
"platform_fee_expert_percent": 5,
"is_enabled": true
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Commission settings updated successfully",
"data": {
"id": 1,
"platform_fee_company_percent": 10,
"platform_fee_expert_percent": 5,
"is_enabled": true,
"created_at": "2026-02-12T00:00:00+00:00",
"updated_at": "2026-02-12T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"platform_fee_company_percent": [
"Platform fee for companies must not exceed 100."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Dashboard
Get admin dashboard summary: totals and recent projects, experts, companies.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/dashboard" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dashboard"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Dashboard data retrieved successfully",
"data": {
"total_projects": 100,
"total_companies": 50,
"total_experts": 200,
"recent_projects": [],
"recent_experts": [],
"recent_companies": []
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Dispute Categories
List all dispute categories (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/dispute-categories" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dispute-categories"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new dispute category.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/dispute-categories" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"b\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dispute-categories"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "b"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single dispute category.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/dispute-categories/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dispute-categories/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a dispute category.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/dispute-categories/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"b\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dispute-categories/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "b"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a dispute category.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/dispute-categories/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/dispute-categories/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Disputes
List all disputes (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/disputes" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/disputes"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single dispute (admin).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/disputes/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/disputes/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mark a dispute as solved (set status to completed or ongoing).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/disputes/16/mark-solved" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"status\": \"completed\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/disputes/16/mark-solved"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"status": "completed"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Expert Milestone Payments
List milestone payments to be done for experts (company has paid; optionally filter by expert/project).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/expert-milestone-payments?expert_id=2&project_id=1&per_page=15" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-milestone-payments"
);
const params = {
"expert_id": "2",
"project_id": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert milestone payments retrieved successfully",
"data": {
"data": []
}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mark expert payment as done (payment mode + upload receipt).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/expert-milestone-payments/16/mark-paid" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "payment_mode=paypal"\
--form "receipt=@C:\Users\AMITB\AppData\Local\Temp\php4824.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-milestone-payments/16/mark-paid"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('payment_mode', 'paypal');
body.append('receipt', document.querySelector('input[name="receipt"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert payment marked as done",
"data": {}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Milestone not found."
}
Example response (422):
{
"success": false,
"message": "Company has not paid this milestone yet."
}
Example response (422):
{
"success": false,
"message": "Expert payment for this milestone is already marked as done."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Expert Projects
List all proposals submitted by an expert.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/experts/1/proposals?per_page=15" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/experts/1/proposals"
);
const params = {
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Proposals retrieved successfully",
"data": {
"data": []
}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "User is not an expert."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all awarded projects for an expert (projects where this expert was awarded and accepted).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/experts/1/awarded-projects?per_page=15" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/experts/1/awarded-projects"
);
const params = {
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Awarded projects retrieved successfully",
"data": {
"data": []
}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "User is not an expert."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all completed projects for an expert (awarded projects with status completed).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/experts/1/completed-projects?per_page=15" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/experts/1/completed-projects"
);
const params = {
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Completed projects retrieved successfully",
"data": {
"data": []
}
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "User is not an expert."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin FAQ Management
Company FAQs
Get all company FAQs.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/company-faqs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/company-faqs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company FAQs retrieved",
"data": [
{
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new company FAQ.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/company-faqs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"heading\": \"How do I get started?\",
\"description\": \"You can get started by creating an account.\",
\"order\": 0
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/company-faqs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Company FAQ created",
"data": {
"id": 1,
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"heading": [
"The heading field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single company FAQ.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/company-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/company-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company FAQ retrieved",
"data": {
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Company FAQ not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a company FAQ.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/company-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"heading\": \"How do I get started?\",
\"description\": \"You can get started by creating an account.\",
\"order\": 0
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/company-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company FAQ updated",
"data": {
"id": 1,
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Company FAQ not found"
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"heading": [
"The heading field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a company FAQ.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/company-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/company-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company FAQ deleted",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Company FAQ not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert FAQs
Get all expert FAQs.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/expert-faqs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-faqs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert FAQs retrieved",
"data": [
{
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new expert FAQ.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/expert-faqs" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"heading\": \"How do I get started?\",
\"description\": \"You can get started by creating an account.\",
\"order\": 0
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-faqs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Expert FAQ created",
"data": {
"id": 1,
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"heading": [
"The heading field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single expert FAQ.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/expert-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert FAQ retrieved",
"data": {
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Expert FAQ not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an expert FAQ.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/expert-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"heading\": \"How do I get started?\",
\"description\": \"You can get started by creating an account.\",
\"order\": 0
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert FAQ updated",
"data": {
"id": 1,
"heading": "How do I get started?",
"description": "You can get started by creating an account.",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Expert FAQ not found"
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"heading": [
"The heading field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete an expert FAQ.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/expert-faqs/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/expert-faqs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert FAQ deleted",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Expert FAQ not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Home Page
Get current home page content.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/home-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/home-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Home page content retrieved successfully",
"data": {
"id": 1,
"section1": {
"hero_headline": "Welcome",
"hero_description": "Description",
"hero_image": "http://localhost/images/hero.jpg"
},
"section2": {
"headline": "Section 2"
},
"section3": {
"headline": "Section 3",
"description": "Description",
"button_name": "Click",
"button_url": "https://example.com",
"image": "http://localhost/images/section3.jpg"
},
"section4": {
"headline": "Section 4",
"options": [
{
"image": "http://localhost/images/option1.jpg",
"title": "Option 1",
"description": "Description 1"
}
]
},
"section5": {
"steps": [
{
"title": "Step 1",
"description": "Description 1"
}
]
},
"section6": {
"headline": "Section 6",
"button_name": "Click",
"button_url": "https://example.com",
"background_image": "http://localhost/images/bg.jpg"
},
"section7": {
"headline": "Section 7",
"description": "Description"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update home page content.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/home-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "hero_headline=Welcome to Our Platform"\
--form "hero_description=Connect with industry experts"\
--form "section2_headline=Our Services"\
--form "section3_headline=Get Started"\
--form "section3_description=Join us today"\
--form "section3_button_name=Sign Up"\
--form "section3_button_url=https://example.com/signup"\
--form "section4_headline=Features"\
--form "section4_options[]=architecto"\
--form "section5_steps[]=architecto"\
--form "section6_headline=Ready to Start?"\
--form "section6_button_name=Get Started"\
--form "section6_button_url=https://example.com/start"\
--form "section7_headline=About Us"\
--form "section7_description=We are a leading platform"\
--form "hero_image=@C:\Users\AMITB\AppData\Local\Temp\php5541.tmp" \
--form "section3_image=@C:\Users\AMITB\AppData\Local\Temp\php5542.tmp" \
--form "section4_image=@C:\Users\AMITB\AppData\Local\Temp\php5544.tmp" \
--form "section6_background_image=@C:\Users\AMITB\AppData\Local\Temp\php5545.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/home-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('hero_headline', 'Welcome to Our Platform');
body.append('hero_description', 'Connect with industry experts');
body.append('section2_headline', 'Our Services');
body.append('section3_headline', 'Get Started');
body.append('section3_description', 'Join us today');
body.append('section3_button_name', 'Sign Up');
body.append('section3_button_url', 'https://example.com/signup');
body.append('section4_headline', 'Features');
body.append('section4_options[]', 'architecto');
body.append('section5_steps[]', 'architecto');
body.append('section6_headline', 'Ready to Start?');
body.append('section6_button_name', 'Get Started');
body.append('section6_button_url', 'https://example.com/start');
body.append('section7_headline', 'About Us');
body.append('section7_description', 'We are a leading platform');
body.append('hero_image', document.querySelector('input[name="hero_image"]').files[0]);
body.append('section3_image', document.querySelector('input[name="section3_image"]').files[0]);
body.append('section4_image', document.querySelector('input[name="section4_image"]').files[0]);
body.append('section6_background_image', document.querySelector('input[name="section6_background_image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Home page content updated successfully",
"data": {
"id": 1,
"section1": {
"hero_headline": "Welcome",
"hero_description": "Description",
"hero_image": "http://localhost/images/hero.jpg"
},
"section2": {
"headline": "Section 2"
},
"section3": {
"headline": "Section 3",
"description": "Description",
"button_name": "Click",
"button_url": "https://example.com",
"image": "http://localhost/images/section3.jpg"
},
"section4": {
"headline": "Section 4",
"options": [
{
"image": "http://localhost/images/option1.jpg",
"title": "Option 1",
"description": "Description 1"
}
]
},
"section5": {
"steps": [
{
"title": "Step 1",
"description": "Description 1"
}
]
},
"section6": {
"headline": "Section 6",
"button_name": "Click",
"button_url": "https://example.com",
"background_image": "http://localhost/images/bg.jpg"
},
"section7": {
"headline": "Section 7",
"description": "Description"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"hero_headline": [
"The hero headline field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update home page content.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/home-page" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "hero_headline=Welcome to Our Platform"\
--form "hero_description=Connect with industry experts"\
--form "section2_headline=Our Services"\
--form "section3_headline=Get Started"\
--form "section3_description=Join us today"\
--form "section3_button_name=Sign Up"\
--form "section3_button_url=https://example.com/signup"\
--form "section4_headline=Features"\
--form "section4_options[]=architecto"\
--form "section5_steps[]=architecto"\
--form "section6_headline=Ready to Start?"\
--form "section6_button_name=Get Started"\
--form "section6_button_url=https://example.com/start"\
--form "section7_headline=About Us"\
--form "section7_description=We are a leading platform"\
--form "hero_image=@C:\Users\AMITB\AppData\Local\Temp\php5559.tmp" \
--form "section3_image=@C:\Users\AMITB\AppData\Local\Temp\php555A.tmp" \
--form "section4_image=@C:\Users\AMITB\AppData\Local\Temp\php555C.tmp" \
--form "section6_background_image=@C:\Users\AMITB\AppData\Local\Temp\php555D.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/home-page"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('hero_headline', 'Welcome to Our Platform');
body.append('hero_description', 'Connect with industry experts');
body.append('section2_headline', 'Our Services');
body.append('section3_headline', 'Get Started');
body.append('section3_description', 'Join us today');
body.append('section3_button_name', 'Sign Up');
body.append('section3_button_url', 'https://example.com/signup');
body.append('section4_headline', 'Features');
body.append('section4_options[]', 'architecto');
body.append('section5_steps[]', 'architecto');
body.append('section6_headline', 'Ready to Start?');
body.append('section6_button_name', 'Get Started');
body.append('section6_button_url', 'https://example.com/start');
body.append('section7_headline', 'About Us');
body.append('section7_description', 'We are a leading platform');
body.append('hero_image', document.querySelector('input[name="hero_image"]').files[0]);
body.append('section3_image', document.querySelector('input[name="section3_image"]').files[0]);
body.append('section4_image', document.querySelector('input[name="section4_image"]').files[0]);
body.append('section6_background_image', document.querySelector('input[name="section6_background_image"]').files[0]);
fetch(url, {
method: "PATCH",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Home page content updated successfully",
"data": {
"id": 1,
"section1": {
"hero_headline": "Welcome",
"hero_description": "Description",
"hero_image": "http://localhost/images/hero.jpg"
},
"section2": {
"headline": "Section 2"
},
"section3": {
"headline": "Section 3",
"description": "Description",
"button_name": "Click",
"button_url": "https://example.com",
"image": "http://localhost/images/section3.jpg"
},
"section4": {
"headline": "Section 4",
"options": [
{
"image": "http://localhost/images/option1.jpg",
"title": "Option 1",
"description": "Description 1"
}
]
},
"section5": {
"steps": [
{
"title": "Step 1",
"description": "Description 1"
}
]
},
"section6": {
"headline": "Section 6",
"button_name": "Click",
"button_url": "https://example.com",
"background_image": "http://localhost/images/bg.jpg"
},
"section7": {
"headline": "Section 7",
"description": "Description"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"hero_headline": [
"The hero headline field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Milestone Payments
List all milestone payments (paid by companies) with optional filters.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/milestone-payments?project_id=1&company_id=1&per_page=15" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/milestone-payments"
);
const params = {
"project_id": "1",
"company_id": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestone payments retrieved successfully",
"data": {
"data": []
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Policies
Get privacy policy.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Privacy policy retrieved successfully",
"data": {
"id": 1,
"type": "privacy_policy",
"content": "Privacy policy content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get terms & conditions.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Terms & conditions retrieved successfully",
"data": {
"id": 2,
"type": "terms_conditions",
"content": "Terms & conditions content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get refund & cancellation policy.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Refund & cancellation policy retrieved successfully",
"data": {
"id": 3,
"type": "refund_cancellation",
"content": "Refund & cancellation policy content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update privacy policy.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the privacy policy content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the privacy policy content..."
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Privacy policy updated successfully",
"data": {
"id": 1,
"type": "privacy_policy",
"content": "Updated privacy policy content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update privacy policy.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the privacy policy content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/privacy-policy"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the privacy policy content..."
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Privacy policy updated successfully",
"data": {
"id": 1,
"type": "privacy_policy",
"content": "Updated privacy policy content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update terms & conditions.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the terms & conditions content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the terms & conditions content..."
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Terms & conditions updated successfully",
"data": {
"id": 2,
"type": "terms_conditions",
"content": "Updated terms & conditions content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update terms & conditions.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the terms & conditions content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/terms-conditions"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the terms & conditions content..."
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Terms & conditions updated successfully",
"data": {
"id": 2,
"type": "terms_conditions",
"content": "Updated terms & conditions content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update refund & cancellation policy.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the refund & cancellation policy content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the refund & cancellation policy content..."
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Refund & cancellation policy updated successfully",
"data": {
"id": 3,
"type": "refund_cancellation",
"content": "Updated refund & cancellation policy content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update refund & cancellation policy.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"content\": \"This is the refund & cancellation policy content...\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/policies/refund-cancellation"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"content": "This is the refund & cancellation policy content..."
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Refund & cancellation policy updated successfully",
"data": {
"id": 3,
"type": "refund_cancellation",
"content": "Updated refund & cancellation policy content...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"content": [
"The content field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Projects
List all projects for admin (optionally filter by company_id).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/projects?company_id=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/projects"
);
const params = {
"company_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Projects retrieved successfully",
"data": {
"data": [],
"meta": {}
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get full project details for admin: project, company, all proposals, milestones with payment status.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/projects/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/projects/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project details retrieved successfully",
"data": {
"project": {},
"company": {},
"proposals": [],
"milestones": []
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Project not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Site Settings
Get current site settings.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/site-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/site-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Site settings retrieved successfully",
"data": {
"id": 1,
"favicon": "http://localhost/favicon.ico",
"logo": "http://localhost/logos/logo.png",
"footer_logo": "http://localhost/logos/footer-logo.png",
"footer_description": "Company description",
"address": "123 Main St",
"email": "info@example.com",
"phone": "1234567890",
"phone_country_code": "+1",
"facebook_url": "https://facebook.com/company",
"instagram_url": "https://instagram.com/company",
"linkedin_url": "https://linkedin.com/company",
"copyright": "© 2024 Company",
"header_image": "http://localhost/images/header.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update site settings.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/site-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "footer_description=Company description"\
--form "address=123 Main St, City, State"\
--form "email=info@example.com"\
--form "phone=1234567890"\
--form "phone_country_code=+1"\
--form "facebook_url=https://facebook.com/company"\
--form "instagram_url=https://instagram.com/company"\
--form "linkedin_url=https://linkedin.com/company"\
--form "copyright=© 2024 Company"\
--form "favicon=@C:\Users\AMITB\AppData\Local\Temp\php577F.tmp" \
--form "logo=@C:\Users\AMITB\AppData\Local\Temp\php5780.tmp" \
--form "footer_logo=@C:\Users\AMITB\AppData\Local\Temp\php5781.tmp" \
--form "header_image=@C:\Users\AMITB\AppData\Local\Temp\php5792.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/site-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('footer_description', 'Company description');
body.append('address', '123 Main St, City, State');
body.append('email', 'info@example.com');
body.append('phone', '1234567890');
body.append('phone_country_code', '+1');
body.append('facebook_url', 'https://facebook.com/company');
body.append('instagram_url', 'https://instagram.com/company');
body.append('linkedin_url', 'https://linkedin.com/company');
body.append('copyright', '© 2024 Company');
body.append('favicon', document.querySelector('input[name="favicon"]').files[0]);
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('footer_logo', document.querySelector('input[name="footer_logo"]').files[0]);
body.append('header_image', document.querySelector('input[name="header_image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Site settings updated successfully",
"data": {
"id": 1,
"favicon": "http://localhost/favicon.ico",
"logo": "http://localhost/logos/logo.png",
"footer_logo": "http://localhost/logos/footer-logo.png",
"footer_description": "Company description",
"address": "123 Main St",
"email": "info@example.com",
"phone": "1234567890",
"phone_country_code": "+1",
"facebook_url": "https://facebook.com/company",
"instagram_url": "https://instagram.com/company",
"linkedin_url": "https://linkedin.com/company",
"copyright": "© 2024 Company",
"header_image": "http://localhost/images/header.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email must be a valid email address."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update site settings.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/admin/site-settings" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "footer_description=Company description"\
--form "address=123 Main St, City, State"\
--form "email=info@example.com"\
--form "phone=1234567890"\
--form "phone_country_code=+1"\
--form "facebook_url=https://facebook.com/company"\
--form "instagram_url=https://instagram.com/company"\
--form "linkedin_url=https://linkedin.com/company"\
--form "copyright=© 2024 Company"\
--form "favicon=@C:\Users\AMITB\AppData\Local\Temp\php5797.tmp" \
--form "logo=@C:\Users\AMITB\AppData\Local\Temp\php5798.tmp" \
--form "footer_logo=@C:\Users\AMITB\AppData\Local\Temp\php5799.tmp" \
--form "header_image=@C:\Users\AMITB\AppData\Local\Temp\php579A.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/site-settings"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('footer_description', 'Company description');
body.append('address', '123 Main St, City, State');
body.append('email', 'info@example.com');
body.append('phone', '1234567890');
body.append('phone_country_code', '+1');
body.append('facebook_url', 'https://facebook.com/company');
body.append('instagram_url', 'https://instagram.com/company');
body.append('linkedin_url', 'https://linkedin.com/company');
body.append('copyright', '© 2024 Company');
body.append('favicon', document.querySelector('input[name="favicon"]').files[0]);
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('footer_logo', document.querySelector('input[name="footer_logo"]').files[0]);
body.append('header_image', document.querySelector('input[name="header_image"]').files[0]);
fetch(url, {
method: "PATCH",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Site settings updated successfully",
"data": {
"id": 1,
"favicon": "http://localhost/favicon.ico",
"logo": "http://localhost/logos/logo.png",
"footer_logo": "http://localhost/logos/footer-logo.png",
"footer_description": "Company description",
"address": "123 Main St",
"email": "info@example.com",
"phone": "1234567890",
"phone_country_code": "+1",
"facebook_url": "https://facebook.com/company",
"instagram_url": "https://instagram.com/company",
"linkedin_url": "https://linkedin.com/company",
"copyright": "© 2024 Company",
"header_image": "http://localhost/images/header.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email must be a valid email address."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Subscription Configuration
Get subscription configuration(s).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/subscription-config?role=architecto" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/subscription-config"
);
const params = {
"role": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Subscription configuration retrieved",
"data": {
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
}
}
Example response (200):
{
"success": true,
"message": "Subscription configurations retrieved",
"data": [
{
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
},
{
"role": "expert",
"price": 4999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
}
]
}
Example response (200):
{
"success": true,
"message": "No subscription configuration found",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create or update subscription configuration.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/subscription-config" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"role\": \"company\",
\"price\": 9999,
\"currency\": \"INR\",
\"validity_type\": \"lifetime\",
\"validity_value\": null
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/subscription-config"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Subscription configuration saved",
"data": {
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
}
}
Example response (200):
{
"success": true,
"message": "Subscription configuration saved",
"data": {
"role": "expert",
"price": 5000,
"currency": "INR",
"validity_type": "months",
"validity_value": 12
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"price": [
"The price field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin User Management
Get list of all registered companies with subscription status and profile data.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/companies" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/companies"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Companies retrieved successfully",
"data": [
{
"id": 1,
"name": "Company Name",
"company_name": "Company Name",
"email": "company@example.com",
"email_verified_at": "2024-01-01T00:00:00+00:00",
"has_subscription": true,
"subscription": {
"id": 1,
"status": "active",
"lifetime": true,
"starts_at": "2024-01-01T00:00:00+00:00",
"ends_at": null,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"profile": {
"id": 1,
"user_id": 1,
"company_name": "Company Name",
"email": "company@example.com",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"phone": "1234567890",
"company_logo": "http://localhost/logos/image.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all registered experts with subscription status, payment details, and profile data.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/experts" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/experts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Experts retrieved successfully",
"data": [
{
"id": 2,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"email_verified_at": "2024-01-01T00:00:00+00:00",
"has_subscription": false,
"subscription": null,
"payment_details": {
"id": 1,
"user_id": 2,
"payment_method": "paypal",
"paypal_email": "expert@example.com",
"country": null,
"state": null,
"city": null,
"zip_postal_code": null,
"address": null,
"bank_name": null,
"swift_code_or_ifsc": null,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"profile": {
"id": 1,
"user_id": 2,
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"designation_id": 1,
"experience": 5,
"bio": "Expert in software development",
"phone": "1234567890",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"profile_image": "http://localhost/profiles/image.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Authentication
User Registration & Login
Register a new user (expert or company).
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/register" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_type\": \"expert\",
\"email\": \"john.doe@example.com\",
\"password\": \"password123\",
\"confirm_password\": \"password123\",
\"agree_terms\": true,
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"company_name\": \"Acme Corp\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/register"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"user_type": "expert",
"email": "john.doe@example.com",
"password": "password123",
"confirm_password": "password123",
"agree_terms": true,
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Registration successful. Please verify your email.",
"data": []
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email has already been taken."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Login user (expert or company).
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"john.doe@example.com\",
\"password\": \"password123\",
\"user_type\": \"expert\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "john.doe@example.com",
"password": "password123",
"user_type": "expert"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Login successful",
"data": {
"token": "1|abcdefghijklmnopqrstuvwxyz1234567890",
"user": {
"id": 1,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"email_verified_at": "2024-01-01T00:00:00+00:00",
"roles": [
"expert"
],
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"role": "expert",
"subscription": {
"id": 1,
"status": "active",
"lifetime": true,
"starts_at": "2024-01-01T00:00:00+00:00",
"ends_at": null,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
}
Example response (401):
{
"success": false,
"message": "Invalid credentials"
}
Example response (403):
{
"success": false,
"message": "Admin users cannot login through this endpoint. Please use the admin login."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Logout user.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/logout" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/logout"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Logged out successfully",
"data": []
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Password Management
Send password reset link.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/forgot-password" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"john.doe@example.com\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/forgot-password"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "john.doe@example.com"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Password reset link sent to your email.",
"data": []
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reset password.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/reset-password" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"token\": \"abc123def456ghi789\",
\"email\": \"john.doe@example.com\",
\"password\": \"newpassword123\",
\"password_confirmation\": \"newpassword123\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/reset-password"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"token": "abc123def456ghi789",
"email": "john.doe@example.com",
"password": "newpassword123",
"password_confirmation": "newpassword123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Password reset successful.",
"data": []
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"token": [
"The token field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Change password for authenticated user.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/auth/change-password" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"current_password\": \"oldpassword123\",
\"password\": \"newpassword123\",
\"password_confirmation\": \"newpassword123\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/change-password"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"current_password": "oldpassword123",
"password": "newpassword123",
"password_confirmation": "newpassword123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Password changed successfully.",
"data": []
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only expert and company users can change their password."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"current_password": [
"The current password is incorrect."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Email Verification
Verify email.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/auth/verify-email/1/abc123def456ghi789" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/verify-email/1/abc123def456ghi789"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "User email verified successfully.",
"data": []
}
Example response (403):
{
"success": false,
"message": "Invalid verification link"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Resend email verification notification.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/auth/resend-verification?email=john.doe%40example.com" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"gbailey@example.net\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/auth/resend-verification"
);
const params = {
"email": "john.doe@example.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "gbailey@example.net"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Verification email sent successfully.",
"data": []
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Authentication
Login admin user.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/auth/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"admin@example.com\",
\"password\": \"adminpassword123\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/auth/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "admin@example.com",
"password": "adminpassword123"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Login successful",
"data": {
"token": "1|abcdefghijklmnopqrstuvwxyz1234567890",
"user": {
"id": 1,
"name": "Admin User",
"first_name": "Admin",
"last_name": "User",
"email": "admin@example.com",
"email_verified_at": "2024-01-01T00:00:00+00:00",
"roles": [
"admin"
],
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
},
"role": "admin"
}
}
Example response (401):
{
"success": false,
"message": "Invalid credentials"
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Logout admin user.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/auth/logout" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/auth/logout"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Logged out successfully",
"data": []
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Company Profile
Get the current company's profile.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/company/profile" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/company/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Profile retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"company_name": "Acme Corp",
"email": "company@example.com",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"phone": "1234567890",
"company_logo": "http://localhost/storage/logos/image.jpg",
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only companies can access this endpoint."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update or create the company's profile.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/company/profile" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "company_name=Acme Corporation"\
--form "email=company@example.com"\
--form "address_line_1=123 Main Street"\
--form "address_line_2=Suite 100"\
--form "landmark=Near Central Park"\
--form "country_id=1"\
--form "state_id=1"\
--form "city_id=1"\
--form "zip_postal_code=12345"\
--form "phone=1234567890"\
--form "phone_country_code_id=1"\
--form "company_logo=@C:\Users\AMITB\AppData\Local\Temp\php4CDA.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/company/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('company_name', 'Acme Corporation');
body.append('email', 'company@example.com');
body.append('address_line_1', '123 Main Street');
body.append('address_line_2', 'Suite 100');
body.append('landmark', 'Near Central Park');
body.append('country_id', '1');
body.append('state_id', '1');
body.append('city_id', '1');
body.append('zip_postal_code', '12345');
body.append('phone', '1234567890');
body.append('phone_country_code_id', '1');
body.append('company_logo', document.querySelector('input[name="company_logo"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Profile updated successfully",
"data": {
"id": 1,
"user_id": 1,
"company_name": "Acme Corp",
"email": "company@example.com",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"phone": "1234567890",
"company_logo": "http://localhost/storage/logos/image.jpg",
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
}
}
Example response (201):
{
"success": true,
"message": "Profile created successfully",
"data": {
"id": 1,
"user_id": 1,
"company_name": "Acme Corp",
"email": "company@example.com",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"phone": "1234567890",
"company_logo": null,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only companies can access this endpoint."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email has already been taken."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Contact
Store a new contact form submission.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/contact" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"John Doe\",
\"email\": \"john@example.com\",
\"phone\": \"+1234567890\",
\"message\": \"Hello, I would like to know more about your services.\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/contact"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"message": "Hello, I would like to know more about your services."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Contact form submitted successfully",
"data": {
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"message": "Hello, I would like to know more about your services.",
"created_at": "2024-01-11T16:00:00+00:00",
"updated_at": "2024-01-11T16:00:00+00:00"
}
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
],
"email": [
"Email is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all contact form submissions (Admin only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/contacts" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/contacts"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Contacts retrieved successfully",
"data": [
{
"id": 1,
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"message": "Hello, I would like to know more about your services.",
"created_at": "2024-01-11T16:00:00+00:00",
"updated_at": "2024-01-11T16:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a contact form submission (Admin only).
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/contacts/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Contact deleted successfully",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Contact not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Designation
Get list of all designations (Public endpoint for frontend users).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/designations?is_active=1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/designations"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Designations retrieved successfully",
"data": [
{
"id": 1,
"name": "Software Engineer",
"description": "Develops software applications",
"is_active": true,
"created_at": "2024-01-14 11:32:19",
"updated_at": "2024-01-14 11:32:19"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all designations (Admin only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/designations?is_active=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/designations"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Designations retrieved successfully",
"data": [
{
"id": 1,
"name": "Software Engineer",
"description": "Develops software applications",
"is_active": true,
"created_at": "2024-01-14 11:32:19",
"updated_at": "2024-01-14 11:32:19"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new designation (Admin only).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/designations" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Software Engineer\",
\"description\": \"Develops software applications\",
\"is_active\": true
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/designations"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Software Engineer",
"description": "Develops software applications",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Designation created successfully",
"data": {
"id": 1,
"name": "Software Engineer",
"description": "Develops software applications",
"is_active": true,
"created_at": "2024-01-14 11:32:19",
"updated_at": "2024-01-14 11:32:19"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a specific designation (Admin only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/designations/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/designations/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Designation retrieved successfully",
"data": {
"id": 1,
"name": "Software Engineer",
"description": "Develops software applications",
"is_active": true,
"created_at": "2024-01-14 11:32:19",
"updated_at": "2024-01-14 11:32:19"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Designation not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a designation (Admin only).
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/designations/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Senior Software Engineer\",
\"description\": \"Develops and maintains software applications\",
\"is_active\": true
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/designations/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Senior Software Engineer",
"description": "Develops and maintains software applications",
"is_active": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Designation updated successfully",
"data": {
"id": 1,
"name": "Senior Software Engineer",
"description": "Develops and maintains software applications",
"is_active": true,
"created_at": "2024-01-14 11:32:19",
"updated_at": "2024-01-14 11:33:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Designation not found."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a designation (Admin only).
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/designations/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/designations/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Designation deleted successfully",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Designation not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Dispute Categories
List dispute categories (public - for dropdown when raising dispute).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/dispute-categories" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/dispute-categories"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": true,
"message": "Dispute categories retrieved successfully",
"data": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Disputes
Get form data for raising a dispute: dispute categories and eligible projects.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/disputes/form-data" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes/form-data"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List disputes for the logged-in company or expert.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/disputes" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new dispute.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/disputes" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "subject=b"\
--form "dispute_category_id=16"\
--form "project_id=16"\
--form "description=Eius et animi quos velit et."\
--form "files[]=@C:\Users\AMITB\AppData\Local\Temp\php53EF.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('subject', 'b');
body.append('dispute_category_id', '16');
body.append('project_id', '16');
body.append('description', 'Eius et animi quos velit et.');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single dispute.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/disputes/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a dispute (only ongoing disputes).
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/disputes/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "subject=b"\
--form "dispute_category_id=16"\
--form "project_id=16"\
--form "description=Eius et animi quos velit et."\
--form "files[]=@C:\Users\AMITB\AppData\Local\Temp\php5410.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('subject', 'b');
body.append('dispute_category_id', '16');
body.append('project_id', '16');
body.append('description', 'Eius et animi quos velit et.');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a dispute (only ongoing disputes).
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/disputes/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "subject=b"\
--form "dispute_category_id=16"\
--form "project_id=16"\
--form "description=Eius et animi quos velit et."\
--form "files[]=@C:\Users\AMITB\AppData\Local\Temp\php5420.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('subject', 'b');
body.append('dispute_category_id', '16');
body.append('project_id', '16');
body.append('description', 'Eius et animi quos velit et.');
body.append('files[]', document.querySelector('input[name="files[]"]').files[0]);
fetch(url, {
method: "PATCH",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a dispute (only ongoing disputes).
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/disputes/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/disputes/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert Payment Details
Get the current expert's payment details.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/expert/payment-details" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/expert/payment-details"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Payment details retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"payment_method": "paypal",
"paypal_email": "expert@example.com",
"country_id": null,
"state_id": null,
"city_id": null,
"zip_postal_code": null,
"address": null,
"bank_name": null,
"swift_code_or_ifsc": null,
"country": null,
"state": null,
"city": null,
"created_at": "2026-01-14T12:00:00+00:00",
"updated_at": "2026-01-14T12:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can access this endpoint."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update or create the expert's payment details.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/expert/payment-details" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_method\": \"paypal\",
\"paypal_email\": \"expert@example.com\",
\"country_id\": 1,
\"state_id\": 1,
\"city_id\": 1,
\"zip_postal_code\": \"90001\",
\"address\": \"123 Main Street\",
\"bank_name\": \"Bank of America\",
\"swift_code_or_ifsc\": \"BOFAUS3N\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/expert/payment-details"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"payment_method": "paypal",
"paypal_email": "expert@example.com",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "90001",
"address": "123 Main Street",
"bank_name": "Bank of America",
"swift_code_or_ifsc": "BOFAUS3N"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Payment details updated successfully",
"data": {
"id": 1,
"user_id": 1,
"payment_method": "paypal",
"paypal_email": "expert@example.com",
"country": null,
"state": null,
"city": null,
"zip_postal_code": null,
"address": null,
"bank_name": null,
"swift_code_or_ifsc": null,
"created_at": "2026-01-14T12:00:00+00:00",
"updated_at": "2026-01-14T12:00:00+00:00"
}
}
Example response (201):
{
"success": true,
"message": "Payment details created successfully",
"data": {
"id": 1,
"user_id": 1,
"payment_method": "bank_transfer",
"paypal_email": null,
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "90001",
"address": "123 Main Street",
"bank_name": "Bank of America",
"swift_code_or_ifsc": "BOFAUS3N",
"country": {
"id": 1,
"name": "United States"
},
"state": {
"id": 1,
"name": "California"
},
"city": {
"id": 1,
"name": "Los Angeles"
},
"created_at": "2026-01-14T12:00:00+00:00",
"updated_at": "2026-01-14T12:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can access this endpoint."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"payment_method": [
"The payment method field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert Profile
Get the current expert's profile.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/expert/profile" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/expert/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Profile retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"designation_id": 1,
"experience": 5,
"bio": "Expert in software development",
"phone": "1234567890",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"profile_image": "http://localhost/storage/profiles/image.jpg",
"created_at": "2026-01-15T05:14:18+00:00",
"updated_at": "2026-01-15T05:14:18+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can access this endpoint."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update or create the expert's profile.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/expert/profile" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "first_name=John"\
--form "last_name=Doe"\
--form "email=expert@example.com"\
--form "designation_id=1"\
--form "experience=5"\
--form "bio=Expert in software development"\
--form "phone=1234567890"\
--form "phone_country_code_id=1"\
--form "address_line_1=123 Main Street"\
--form "address_line_2=Apt 4B"\
--form "landmark=Near Central Park"\
--form "country_id=1"\
--form "state_id=1"\
--form "city_id=1"\
--form "zip_postal_code=12345"\
--form "profile_image=@C:\Users\AMITB\AppData\Local\Temp\php5480.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/expert/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('first_name', 'John');
body.append('last_name', 'Doe');
body.append('email', 'expert@example.com');
body.append('designation_id', '1');
body.append('experience', '5');
body.append('bio', 'Expert in software development');
body.append('phone', '1234567890');
body.append('phone_country_code_id', '1');
body.append('address_line_1', '123 Main Street');
body.append('address_line_2', 'Apt 4B');
body.append('landmark', 'Near Central Park');
body.append('country_id', '1');
body.append('state_id', '1');
body.append('city_id', '1');
body.append('zip_postal_code', '12345');
body.append('profile_image', document.querySelector('input[name="profile_image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Profile updated successfully",
"data": {
"id": 1,
"user_id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"designation_id": 1,
"experience": 5,
"bio": "Expert in software development",
"phone": "1234567890",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"profile_image": "http://localhost/storage/profiles/image.jpg",
"created_at": "2026-01-15T05:14:18+00:00",
"updated_at": "2026-01-15T05:14:18+00:00"
}
}
Example response (201):
{
"success": true,
"message": "Profile created successfully",
"data": {
"id": 1,
"user_id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"designation_id": 1,
"experience": 5,
"bio": "Expert in software development",
"phone": "1234567890",
"address_line_1": "123 Main St",
"country_id": 1,
"state_id": 1,
"city_id": 1,
"zip_postal_code": "12345",
"profile_image": null,
"created_at": "2026-01-15T05:14:18+00:00",
"updated_at": "2026-01-15T05:14:18+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can access this endpoint."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"email": [
"The email has already been taken."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Industry Type
Get list of all industry types (Public endpoint for frontend users).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/industry-types?is_active=1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/industry-types"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Industry types retrieved successfully",
"data": [
{
"id": 1,
"name": "Technology",
"description": "Technology industry",
"image": "http://localhost/industry-types/tech.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all industry types (Admin only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/industry-types?is_active=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/industry-types"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Industry types retrieved successfully",
"data": [
{
"id": 1,
"name": "Technology",
"description": "Technology industry",
"image": "http://localhost/industry-types/tech.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new industry type (Admin only).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/industry-types" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=Technology"\
--form "description=Technology industry"\
--form "is_active=1"\
--form "image=@C:\Users\AMITB\AppData\Local\Temp\php557E.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/industry-types"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'Technology');
body.append('description', 'Technology industry');
body.append('is_active', '1');
body.append('image', document.querySelector('input[name="image"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Industry type created successfully",
"data": {
"id": 1,
"name": "Technology",
"description": "Technology industry",
"image": "http://localhost/industry-types/tech.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an industry type (Admin only).
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/industry-types/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=Information Technology"\
--form "description=Information Technology industry"\
--form "is_active=1"\
--form "image=@C:\Users\AMITB\AppData\Local\Temp\php5580.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/industry-types/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'Information Technology');
body.append('description', 'Information Technology industry');
body.append('is_active', '1');
body.append('image', document.querySelector('input[name="image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Industry type updated successfully",
"data": {
"id": 1,
"name": "Information Technology",
"description": "Information Technology industry",
"image": "http://localhost/industry-types/tech.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:27:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Industry type not found."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete an industry type (Admin only).
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/industry-types/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/industry-types/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Industry type deleted successfully",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Industry type not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Location
Get list of all active countries.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/location/countries" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/location/countries"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Countries retrieved successfully",
"data": [
{
"id": 1,
"name": "United States",
"code": "US",
"code3": "USA",
"is_active": true,
"sort_order": 0
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all active states for a specific country.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/location/countries/architecto/states" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/location/countries/architecto/states"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "States retrieved successfully",
"data": [
{
"id": 1,
"country_id": 1,
"name": "California",
"code": "CA",
"is_active": true,
"sort_order": 0
}
]
}
Example response (404):
{
"success": false,
"message": "Country not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all active cities for a specific state.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/location/states/architecto/cities" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/location/states/architecto/cities"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Cities retrieved successfully",
"data": [
{
"id": 1,
"state_id": 1,
"name": "Los Angeles",
"is_active": true,
"sort_order": 0
}
]
}
Example response (404):
{
"success": false,
"message": "State not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all phone country codes.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/location/phone-country-codes?country_id=1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/location/phone-country-codes"
);
const params = {
"country_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Phone country codes retrieved successfully",
"data": [
{
"id": 1,
"phone_code": "+1"
},
{
"id": 2,
"phone_code": "+91"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Milestone Payments
List milestone payments for an awarded project (expert only – the awarded expert).
requires authentication
Shows expert_payout (milestone amount minus platform fee). Payment status is set by admin when paying manually.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/16/expert-milestones" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/expert-milestones"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestones retrieved successfully",
"data": {
"milestones": []
}
}
Example response (403):
{
"success": false,
"message": "You can only view milestones for projects you are awarded on."
}
Example response (422):
{
"success": false,
"message": "Project must be awarded before viewing milestones."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List milestone payments for an awarded project (company only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/16/milestones" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestones retrieved successfully",
"data": {
"milestones": [],
"project_total_cost": 1000,
"allocated_amount": 0,
"remaining_amount": 1000
}
}
Example response (403):
{
"success": false,
"message": "You can only manage milestones for your own awarded projects."
}
Example response (422):
{
"success": false,
"message": "Project must be awarded to an expert before adding milestones."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Add a milestone payment. Sum of all milestone amounts must not exceed project total cost.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/milestones" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Design approval\",
\"description\": \"Final design sign-off\",
\"amount\": 500,
\"milestone_completion_date\": \"2026-03-01\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Design approval",
"description": "Final design sign-off",
"amount": 500,
"milestone_completion_date": "2026-03-01"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Milestone added successfully",
"data": {
"milestone": {},
"remaining_amount": 500
}
}
Example response (422):
{
"success": false,
"message": "Milestone total would exceed project cost. Remaining amount: 500.00"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Stripe checkout session to pay for a milestone. Redirect user to checkout_url; on success Stripe webhook marks milestone completed.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/milestones/16/create-checkout-session" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones/16/create-checkout-session"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Checkout session created",
"data": {
"checkout_url": "https://checkout.stripe.com/...",
"session_id": "cs_xxx",
"amount": 500,
"currency": "USD"
}
}
Example response (403):
{
"success": false,
"message": "You can only manage milestones for your own awarded projects."
}
Example response (422):
{
"success": false,
"message": "This milestone has already been paid and completed."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a milestone payment. Total of all milestones must not exceed project cost.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/project/16/milestones/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"architecto\",
\"description\": \"Eius et animi quos velit et.\",
\"amount\": 4326.41688,
\"milestone_completion_date\": \"architecto\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "architecto",
"description": "Eius et animi quos velit et.",
"amount": 4326.41688,
"milestone_completion_date": "architecto"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestone updated successfully",
"data": {
"milestone": {},
"remaining_amount": 0
}
}
Example response (422):
{
"success": false,
"message": "Milestone total would exceed project cost. Max allowed for this milestone: 500.00"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a milestone payment. Total of all milestones must not exceed project cost.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/project/16/milestones/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"architecto\",
\"description\": \"Eius et animi quos velit et.\",
\"amount\": 4326.41688,
\"milestone_completion_date\": \"architecto\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "architecto",
"description": "Eius et animi quos velit et.",
"amount": 4326.41688,
"milestone_completion_date": "architecto"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestone updated successfully",
"data": {
"milestone": {},
"remaining_amount": 0
}
}
Example response (422):
{
"success": false,
"message": "Milestone total would exceed project cost. Max allowed for this milestone: 500.00"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a milestone payment.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/project/16/milestones/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/milestones/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Milestone deleted successfully",
"data": {
"remaining_amount": 1000
}
}
Example response (404):
{
"success": false,
"message": "Milestone not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Projects
List all projects for the logged-in company (draft, published, cancelled).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/my-projects" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/my-projects"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company projects retrieved successfully",
"data": [
{
"id": 1,
"user_id": 1,
"status": "draft",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only companies can view their projects."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single project for the logged-in company (any status: draft, published, cancelled).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/my-projects/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/my-projects/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "draft",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only view your own projects."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new project.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"industry_type_id\": 1,
\"requirement_type_id\": 16,
\"requirement_title\": \"Need a Laravel Developer\",
\"requirement_details\": \"We need an experienced Laravel developer for our project.\",
\"experience_level_years\": 5,
\"project_type\": \"hourly\",
\"estimated_hours\": 40,
\"rate\": \"50.00\",
\"amount\": \"2000.00\",
\"is_close_bidding\": false,
\"questions\": [
\"architecto\"
],
\"requirement_type\": \"Development\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"industry_type_id": 1,
"requirement_type_id": 16,
"requirement_title": "Need a Laravel Developer",
"requirement_details": "We need an experienced Laravel developer for our project.",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": "2000.00",
"is_close_bidding": false,
"questions": [
"architecto"
],
"requirement_type": "Development"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Project created successfully",
"data": {
"id": 1,
"user_id": 1,
"industry_type_id": 1,
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only companies can create projects."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"industry_type_id": [
"The industry type id field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an existing project.
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/project/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"industry_type_id\": 1,
\"requirement_type_id\": 16,
\"requirement_title\": \"Need a Laravel Developer\",
\"requirement_details\": \"We need an experienced Laravel developer for our project.\",
\"experience_level_years\": 5,
\"project_type\": \"hourly\",
\"estimated_hours\": 40,
\"rate\": \"50.00\",
\"amount\": \"2000.00\",
\"is_close_bidding\": false,
\"questions\": [
\"architecto\"
],
\"requirement_type\": \"Development\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"industry_type_id": 1,
"requirement_type_id": 16,
"requirement_title": "Need a Laravel Developer",
"requirement_details": "We need an experienced Laravel developer for our project.",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": "2000.00",
"is_close_bidding": false,
"questions": [
"architecto"
],
"requirement_type": "Development"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project updated successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "draft",
"industry_type_id": 1,
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only edit projects that are in draft mode."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"industry_type_id": [
"The industry type id field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an existing project.
requires authentication
Example request:
curl --request PATCH \
"https://industry-tuner-api.test/api/v1/project/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"industry_type_id\": 1,
\"requirement_type_id\": 16,
\"requirement_title\": \"Need a Laravel Developer\",
\"requirement_details\": \"We need an experienced Laravel developer for our project.\",
\"experience_level_years\": 5,
\"project_type\": \"hourly\",
\"estimated_hours\": 40,
\"rate\": \"50.00\",
\"amount\": \"2000.00\",
\"is_close_bidding\": false,
\"questions\": [
\"architecto\"
],
\"requirement_type\": \"Development\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"industry_type_id": 1,
"requirement_type_id": 16,
"requirement_title": "Need a Laravel Developer",
"requirement_details": "We need an experienced Laravel developer for our project.",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": "2000.00",
"is_close_bidding": false,
"questions": [
"architecto"
],
"requirement_type": "Development"
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project updated successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "draft",
"industry_type_id": 1,
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only edit projects that are in draft mode."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"industry_type_id": [
"The industry type id field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Publish a draft project.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/publish" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/publish"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project published successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only publish your own projects."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Example response (422):
{
"success": false,
"message": "Project is already published."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Cancel a project.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/cancel" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/cancel"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project cancelled successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "cancelled",
"industry_type_id": 1,
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only cancel your own projects."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Example response (422):
{
"success": false,
"message": "Project is already cancelled."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Close bidding on a project. Project is hidden from public listing and single view; no proposal submission.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/close-bidding" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/close-bidding"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Bidding closed successfully",
"data": {}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only manage your own projects."
}
Example response (422):
{
"success": false,
"message": "Bidding is already closed for this project."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Open bidding on a project. Project is visible publicly and can receive proposals (if published and not awarded).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/open-bidding" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/open-bidding"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Bidding opened successfully",
"data": {}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only manage your own projects."
}
Example response (422):
{
"success": false,
"message": "Bidding is already open for this project."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a project completely.
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/project/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project deleted successfully"
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "You can only delete your own projects."
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Submit a review for the expert who worked on this completed project.
requires authentication
Only the owning company can submit one review per project after completion.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/review-expert" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"rating\": 5,
\"message\": \"Great work and communication throughout the project.\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/review-expert"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"rating": 5,
"message": "Great work and communication throughout the project."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Review submitted successfully",
"data": {
"id": 1,
"project_id": 1,
"expert_id": 2,
"company_id": 1,
"rating": 5,
"message": "Great work",
"created_at": "2026-03-12T10:00:00+00:00"
}
}
Example response (403):
{
"success": false,
"message": "You can only review your own completed projects."
}
Example response (422):
{
"success": false,
"message": "Project must be completed and awarded before reviewing."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all published projects that are open for proposals (excludes close-bid and awarded projects).
Close-bid projects and awarded projects are not returned. Each project includes is_awarded and is_close_bidding.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Published projects retrieved successfully",
"data": [
{
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"is_awarded": false,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all published projects for a specific industry type (excludes close-bid and awarded projects).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/industry-type/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/industry-type/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Published projects retrieved successfully",
"data": [
{
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"is_awarded": false,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
]
}
Example response (404):
{
"success": false,
"message": "Industry type not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single published project by ID.
Close-bid projects return 404 (no public view). Response includes is_awarded and is_close_bidding.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/16" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"is_awarded": false,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Project not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Proposals
List all projects the logged-in expert has submitted a proposal to.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/my-applied-projects" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/my-applied-projects"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Projects you applied to retrieved successfully",
"data": [
{
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can view projects they have applied to."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single project the logged-in expert has submitted a proposal to.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/my-applied-projects/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/my-applied-projects/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project retrieved successfully",
"data": {
"id": 1,
"user_id": 1,
"status": "published",
"industry_type_id": 1,
"industry_type": {
"id": 1,
"name": "Technology"
},
"requirement_title": "Need a Laravel Developer",
"requirement_type": "Development",
"requirement_details": "We need an experienced Laravel developer",
"experience_level_years": 5,
"project_type": "hourly",
"estimated_hours": 40,
"rate": "50.00",
"amount": null,
"questions": [],
"created_at": "2026-01-16T10:00:00+00:00",
"updated_at": "2026-01-16T10:00:00+00:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Only experts can view projects they have applied to."
}
Example response (404):
{
"success": false,
"message": "Project not found or you have not applied to this project."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List proposals for the authenticated user.
requires authentication
Experts: proposals they submitted. Companies: not used; use indexByProject for their project's proposals.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/proposals" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/proposals"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Proposals retrieved successfully",
"data": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single proposal. Visible to the expert who submitted it or the company that owns the project.
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/proposal/16" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/proposal/16"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Proposal retrieved successfully",
"data": {}
}
Example response (404):
{
"success": false,
"message": "Proposal not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Award the project to an expert (company only - project owner).
requires authentication
Sets the proposal as "pending" until the expert accepts or declines.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/proposal/16/award" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/proposal/16/award"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Project awarded to expert successfully. Waiting for expert response."
}
Example response (403):
{
"success": false,
"message": "You can only award proposals for your own projects."
}
Example response (422):
{
"success": false,
"message": "This project has already been awarded to an expert."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert accepts the award. Project is then awarded to this expert and proposal submission is closed.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/proposal/16/accept-award" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/proposal/16/accept-award"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "You have accepted the award. The project is now awarded to you."
}
Example response (403):
{
"success": false,
"message": "Only the expert who received the award can accept it."
}
Example response (422):
{
"success": false,
"message": "This proposal is not pending your response."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert declines the award. Proposal submission for the project continues; company can see the decline.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/proposal/16/decline-award" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/proposal/16/decline-award"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "You have declined the award."
}
Example response (403):
{
"success": false,
"message": "Only the expert who received the award can decline it."
}
Example response (422):
{
"success": false,
"message": "This proposal is not pending your response."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get proposal form data for a project (when expert clicks "Apply now").
requires authentication
Returns project details and questions so the frontend can render the proposal form.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/16/proposal-form" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/proposal-form"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Proposal form retrieved successfully",
"data": {
"project": {},
"questions": [],
"already_submitted": false
}
}
Example response (403):
{
"success": false,
"message": "Only published projects can receive proposals."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List proposals for a project (company only - project owner).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/project/16/proposals" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/proposals"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Proposals retrieved successfully",
"data": []
}
Example response (403):
{
"success": false,
"message": "You can only view proposals for your own projects."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Submit a proposal for a published project.
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/project/16/proposal" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"heading\": \"My approach to your Laravel project\",
\"cover_letter\": \"I have 5 years of experience...\",
\"work_samples\": [
\"architecto\"
],
\"question_answers\": [
\"architecto\"
],
\"estimated_total_hours\": 40,
\"estimated_rate\": 50,
\"estimated_amount\": 2000
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/project/16/proposal"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"heading": "My approach to your Laravel project",
"cover_letter": "I have 5 years of experience...",
"work_samples": [
"architecto"
],
"question_answers": [
"architecto"
],
"estimated_total_hours": 40,
"estimated_rate": 50,
"estimated_amount": 2000
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Proposal submitted successfully",
"data": {}
}
Example response (403):
{
"success": false,
"message": "Only experts can submit proposals."
}
Example response (422):
{
"success": false,
"message": "You have already submitted a proposal for this project."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public About Page
Get public about page content.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/about-page" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/about-page"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "About page content retrieved successfully",
"data": {
"id": 1,
"page_title": "About Us",
"side_image": "http://localhost/images/about/side.jpg",
"heading": "Welcome",
"description": "Description",
"our_mission_text": "Mission text",
"our_vision_text": "Vision text",
"our_values_text": "Values text",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Blogs
Blog Categories
Get active blog categories with blog counts.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/blog-categories" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/blog-categories"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog categories retrieved",
"data": [
{
"id": 1,
"name": "Technology",
"is_active": true,
"blogs_count": 3,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single active category.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/blog-categories/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/blog-categories/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog category retrieved",
"data": {
"id": 1,
"name": "Technology",
"is_active": true,
"blogs_count": 3,
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog category not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Blogs
List active blogs with optional category filter.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/blogs?category_id=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/blogs"
);
const params = {
"category_id": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blogs retrieved",
"data": [
{
"id": 1,
"name": "Launch Update",
"blog_category_id": 2,
"category": {
"id": 2,
"name": "News",
"is_active": true,
"blogs_count": 1
},
"thumbnail_image": "https://cdn/img.png",
"description": "...",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a single active blog.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/blogs/launch-update" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/blogs/launch-update"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Blog retrieved",
"data": {
"id": 1,
"name": "Launch Update",
"slug": "launch-update",
"blog_category_id": 2,
"category": {
"id": 2,
"name": "News",
"is_active": true,
"blogs_count": 1
},
"thumbnail_image": "https://cdn/img.png",
"description": "...",
"share_facebook": true,
"share_twitter": false,
"share_linkedin": true,
"is_active": true,
"sections": [
{
"id": 1,
"heading": "Intro",
"description": "...",
"image": null,
"position": "left",
"button_name": null,
"button_url": null,
"order": 0
}
],
"created_at": "2026-01-21T12:00:00+00:00",
"updated_at": "2026-01-21T12:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Blog not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Company
List all companies in the system (public endpoint).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/company" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/company"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Companies retrieved successfully",
"data": [
{
"id": 1,
"name": "Company Name",
"company_name": "Company Name",
"email": "company@example.com",
"profile": {
"id": 1,
"company_name": "Company Name",
"company_logo": "http://localhost/logos/image.jpg",
"address_line_1": "123 Main St",
"country": {
"id": 1,
"name": "India"
},
"state": {
"id": 1,
"name": "State"
},
"city": {
"id": 1,
"name": "City"
}
},
"created_at": "2024-01-01T00:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check if the given email exists in the system as a company.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/company/check-email?email=company%40example.com" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"gbailey@example.net\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/company/check-email"
);
const params = {
"email": "company@example.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "gbailey@example.net"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "OK",
"data": {
"exists": true
}
}
Example response (200):
{
"success": true,
"message": "OK",
"data": {
"exists": false
}
}
Example response (422):
{
"success": false,
"message": "The given data was invalid.",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Expert
List all experts in the system (public endpoint).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/expert" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/expert"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Experts retrieved successfully",
"data": [
{
"id": 1,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"profile": {
"id": 1,
"designation": {
"id": 1,
"name": "Developer"
},
"experience": 5,
"bio": "Expert in software development",
"profile_image": "http://localhost/profiles/image.jpg",
"country": {
"id": 1,
"name": "India"
}
},
"created_at": "2024-01-01T00:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single expert by ID (public endpoint).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/expert/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/expert/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert retrieved successfully",
"data": {
"id": 1,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"email": "expert@example.com",
"profile": {
"id": 1,
"designation": {
"id": 1,
"name": "Developer"
},
"experience": 5,
"bio": "Expert in software development",
"profile_image": "http://localhost/profiles/image.jpg",
"country": {
"id": 1,
"name": "India"
}
},
"created_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "Expert not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public FAQs
Company FAQs
Get all company FAQs (Public).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/faq/company" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/faq/company"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Company FAQs retrieved",
"data": [
{
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Expert FAQs
Get all expert FAQs (Public).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/faq/expert" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/faq/expert"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Expert FAQs retrieved",
"data": [
{
"id": 1,
"heading": "Question 1",
"description": "Answer 1",
"order": 0,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Home Page
Get public home page content.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/home-page" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/home-page"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Home page content retrieved successfully",
"data": {
"id": 1,
"section1": {
"hero_headline": "Welcome",
"hero_description": "Description",
"hero_image": "http://localhost/images/hero.jpg"
},
"section2": {
"headline": "Section 2"
},
"section3": {
"headline": "Section 3",
"description": "Description",
"button_name": "Click",
"button_url": "https://example.com",
"image": "http://localhost/images/section3.jpg"
},
"section4": {
"headline": "Section 4",
"options": [
{
"image": "http://localhost/images/option1.jpg",
"title": "Option 1",
"description": "Description 1"
}
]
},
"section5": {
"steps": [
{
"title": "Step 1",
"description": "Description 1"
}
]
},
"section6": {
"headline": "Section 6",
"button_name": "Click",
"button_url": "https://example.com",
"background_image": "http://localhost/images/bg.jpg"
},
"section7": {
"headline": "Section 7",
"description": "Description"
},
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Policies
Get privacy policy.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/policies/privacy-policy" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/policies/privacy-policy"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Privacy policy retrieved successfully",
"data": {
"id": 1,
"type": "privacy_policy",
"content": "Privacy policy content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get terms & conditions.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/policies/terms-conditions" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/policies/terms-conditions"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Terms & conditions retrieved successfully",
"data": {
"id": 2,
"type": "terms_conditions",
"content": "Terms & conditions content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get refund & cancellation policy.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/policies/refund-cancellation" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/policies/refund-cancellation"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Refund & cancellation policy retrieved successfully",
"data": {
"id": 3,
"type": "refund_cancellation",
"content": "Refund & cancellation policy content here...",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Public Site Settings
Get public site settings.
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/site-settings" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/site-settings"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Site settings retrieved successfully",
"data": {
"id": 1,
"favicon": "http://localhost/favicon.ico",
"logo": "http://localhost/logos/logo.png",
"footer_logo": "http://localhost/logos/footer-logo.png",
"footer_description": "Company description",
"address": "123 Main St",
"email": "info@example.com",
"phone": "1234567890",
"phone_country_code": "+1",
"facebook_url": "https://facebook.com/company",
"instagram_url": "https://instagram.com/company",
"linkedin_url": "https://linkedin.com/company",
"copyright": "© 2024 Company",
"header_image": "http://localhost/images/header.jpg",
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Requirement Type
Get list of all requirement types (Public endpoint for frontend users).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/requirement-types?is_active=1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/requirement-types"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Requirement types retrieved successfully",
"data": [
{
"id": 1,
"name": "Consulting",
"description": "Consulting requirement",
"image": "http://localhost/requirement-types/consulting.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get list of all requirement types (Admin only).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/admin/requirement-types?is_active=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/requirement-types"
);
const params = {
"is_active": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Requirement types retrieved successfully",
"data": [
{
"id": 1,
"name": "Consulting",
"description": "Consulting requirement",
"image": "http://localhost/requirement-types/consulting.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
]
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new requirement type (Admin only).
requires authentication
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/admin/requirement-types" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=Consulting"\
--form "description=Consulting requirement"\
--form "is_active=1"\
--form "image=@C:\Users\AMITB\AppData\Local\Temp\php572A.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/requirement-types"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'Consulting');
body.append('description', 'Consulting requirement');
body.append('is_active', '1');
body.append('image', document.querySelector('input[name="image"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201):
{
"success": true,
"message": "Requirement type created successfully",
"data": {
"id": 1,
"name": "Consulting",
"description": "Consulting requirement",
"image": "http://localhost/requirement-types/consulting.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:26:06"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a requirement type (Admin only).
requires authentication
Example request:
curl --request PUT \
"https://industry-tuner-api.test/api/v1/admin/requirement-types/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=Consulting"\
--form "description=Consulting requirement"\
--form "is_active=1"\
--form "image=@C:\Users\AMITB\AppData\Local\Temp\php573C.tmp" const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/requirement-types/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'Consulting');
body.append('description', 'Consulting requirement');
body.append('is_active', '1');
body.append('image', document.querySelector('input[name="image"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Requirement type updated successfully",
"data": {
"id": 1,
"name": "Consulting",
"description": "Consulting requirement",
"image": "http://localhost/requirement-types/consulting.jpg",
"is_active": true,
"created_at": "2024-01-16 03:26:06",
"updated_at": "2024-01-16 03:27:00"
}
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Requirement type not found."
}
Example response (422):
{
"success": false,
"message": "Validation failed",
"errors": {
"name": [
"Name is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a requirement type (Admin only).
requires authentication
Example request:
curl --request DELETE \
"https://industry-tuner-api.test/api/v1/admin/requirement-types/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/admin/requirement-types/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Requirement type deleted successfully",
"data": null
}
Example response (401):
{
"success": false,
"message": "Unauthenticated"
}
Example response (403):
{
"success": false,
"message": "Unauthorized. Admin role required."
}
Example response (404):
{
"success": false,
"message": "Requirement type not found."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Subscription
User Subscription
Get current subscription status for authenticated user (company or expert).
requires authentication
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/subscription/subscription" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/subscription/subscription"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Subscription retrieved successfully",
"data": {
"id": 1,
"status": "active",
"lifetime": true,
"starts_at": "2024-01-01T00:00:00+00:00",
"ends_at": null,
"created_at": "2024-01-01T00:00:00+00:00",
"updated_at": "2024-01-01T00:00:00+00:00"
}
}
Example response (404):
{
"success": false,
"message": "No subscription found",
"data": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Stripe checkout session for subscription.
requires authentication
This endpoint creates a checkout session in Stripe and returns the checkout URL which the frontend should redirect to. Works for both company and expert users.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/subscription/create-checkout-session" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/subscription/create-checkout-session"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Checkout session created successfully",
"data": {
"checkout_url": "https://checkout.stripe.com/...",
"session_id": "cs_xxx",
"amount": 9999,
"currency": "INR"
}
}
Example response (400):
{
"success": false,
"message": "Subscription configuration not found. Please contact administrator."
}
Example response (400):
{
"success": false,
"message": "Subscription is only available for company or expert users."
}
Example response (403):
{
"success": false,
"message": "You already have an active subscription."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Stripe payment intent for subscription.
requires authentication
This endpoint creates a payment intent in Stripe and returns the client secret which is used by the frontend to complete the payment. Works for both company and expert users.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/subscription/create-payment-intent" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/subscription/create-payment-intent"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Payment intent created successfully",
"data": {
"client_secret": "pi_xxx_secret_xxx",
"payment_intent_id": "pi_xxx",
"amount": 9999,
"currency": "INR"
}
}
Example response (400):
{
"success": false,
"message": "Subscription configuration not found. Please contact administrator."
}
Example response (400):
{
"success": false,
"message": "Subscription is only available for company or expert users."
}
Example response (403):
{
"success": false,
"message": "You already have an active subscription."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Confirm payment and activate subscription.
requires authentication
This endpoint confirms the payment intent and activates the subscription if payment is successful. The subscription is also activated via webhook for reliability, but this provides immediate feedback. Works for both company and expert users.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/subscription/confirm-payment" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"payment_intent_id\": \"pi_xxx\"
}"
const url = new URL(
"https://industry-tuner-api.test/api/v1/subscription/confirm-payment"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"payment_intent_id": "pi_xxx"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Payment confirmed successfully",
"data": {
"status": "succeeded",
"subscription_activated": true
}
}
Example response (400):
{
"success": false,
"message": "Payment not found."
}
Example response (400):
{
"success": false,
"message": "Failed to confirm payment: ..."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Stripe Webhook
Handle Stripe webhook events.
This endpoint receives webhook events from Stripe and processes them. It handles payment_intent.succeeded and payment_intent.payment_failed events.
Example request:
curl --request POST \
"https://industry-tuner-api.test/api/v1/stripe/webhook" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/stripe/webhook"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Webhook processed successfully"
}
Example response (400):
{
"success": false,
"message": "Invalid webhook signature."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Subscription Configuration
Get subscription configuration (Public).
Example request:
curl --request GET \
--get "https://industry-tuner-api.test/api/v1/subscription/subscription-config?role=architecto" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://industry-tuner-api.test/api/v1/subscription/subscription-config"
);
const params = {
"role": "architecto",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"success": true,
"message": "Subscription configuration retrieved",
"data": {
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
}
}
Example response (200):
{
"success": true,
"message": "Subscription configurations retrieved",
"data": [
{
"role": "company",
"price": 9999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
},
{
"role": "expert",
"price": 4999,
"currency": "INR",
"validity_type": "lifetime",
"validity_value": null
}
]
}
Example response (200):
{
"success": true,
"message": "No subscription configuration found",
"data": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.