MENU navbar-image

Introduction

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

This API is not authenticated.

Broker Sync

Manually sync brokers from Zoho CRM.

requires authentication

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/brokers/sync" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/sync"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "message": "Zoho broker sync completed.",
        "summary": {
            "total": 10,
            "created": 2,
            "updated": 8,
            "skipped": 0,
            "failed": 0
        }
    }
}
 

Request      

POST api/admin/brokers/sync

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get latest broker sync status.

requires authentication

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/brokers/sync-status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/sync-status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 1,
        "broker_id": null,
        "action": "zoho.sync",
        "status": "success",
        "source_system": "zoho",
        "message": "Zoho broker sync completed.",
        "created_at": "2026-04-09T10:12:30Z"
    }
}
 

Request      

GET api/admin/brokers/sync-status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get broker logs.

requires authentication

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/brokers/16/logs" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16/logs"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "per_page": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "broker_id": 5,
            "action": "zoho.sync.record",
            "status": "success",
            "source_system": "zoho",
            "message": "Zoho broker record updated.",
            "created_at": "2026-04-09T10:12:30Z"
        }
    ]
}
 

Request      

GET api/admin/brokers/{broker_id}/logs

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

Body Parameters

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

Endpoints

POST api/register

Example request:
curl --request POST \
    "http://finweb-api.test/api/register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\"
}"
const url = new URL(
    "http://finweb-api.test/api/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/register

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

email   string     

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string     

Must be at least 8 characters. Example: -0pBNvYgxw

POST api/login

Example request:
curl --request POST \
    "http://finweb-api.test/api/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"password\": \"|]|{+-\",
    \"remember\": true
}"
const url = new URL(
    "http://finweb-api.test/api/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "password": "|]|{+-",
    "remember": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

password   string     

Example: |]|{+-

remember   boolean  optional    

Example: true

GET api/brokers

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/brokers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/brokers"
);

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
vary: Origin
 

{
    "data": []
}
 

Request      

GET api/brokers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/brokers/{slug}

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/brokers/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/brokers/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Broker not found."
}
 

Request      

GET api/brokers/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   integer     

The slug of the broker. Example: 16

GET api/insights

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/insights" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/insights"
);

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
vary: Origin
 

{
    "data": []
}
 

Request      

GET api/insights

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/insights/{slug}

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/insights/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/insights/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Insight not found."
}
 

Request      

GET api/insights/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   integer     

The slug of the insight. Example: 16

POST api/join-us

Example request:
curl --request POST \
    "http://finweb-api.test/api/join-us" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"b\",
    \"last_name\": \"n\",
    \"email\": \"ashly64@example.com\",
    \"mobile\": \"v\",
    \"state\": \"d\",
    \"enquiry_type\": \"l\",
    \"message\": \"architecto\",
    \"source\": \"n\"
}"
const url = new URL(
    "http://finweb-api.test/api/join-us"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "b",
    "last_name": "n",
    "email": "ashly64@example.com",
    "mobile": "v",
    "state": "d",
    "enquiry_type": "l",
    "message": "architecto",
    "source": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/join-us

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

first_name   string     

Must not be greater than 255 characters. Example: b

last_name   string     

Must not be greater than 255 characters. Example: n

email   string     

Must be a valid email address. Must not be greater than 255 characters. Example: ashly64@example.com

mobile   string  optional    

Must not be greater than 50 characters. Example: v

state   string  optional    

Must not be greater than 50 characters. Example: d

enquiry_type   string     

Must not be greater than 120 characters. Example: l

message   string  optional    

Example: architecto

source   string  optional    

Must not be greater than 100 characters. Example: n

POST api/get-in-touch

Example request:
curl --request POST \
    "http://finweb-api.test/api/get-in-touch" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"message\": \"architecto\",
    \"source\": \"n\"
}"
const url = new URL(
    "http://finweb-api.test/api/get-in-touch"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "message": "architecto",
    "source": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-in-touch

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

email   string     

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

message   string  optional    

Example: architecto

source   string  optional    

Must not be greater than 100 characters. Example: n

GET api/me

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/me"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/me

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

PUT api/me

Example request:
curl --request PUT \
    "http://finweb-api.test/api/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\"
}"
const url = new URL(
    "http://finweb-api.test/api/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/me

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

email   string     

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

POST api/me/avatar

Example request:
curl --request POST \
    "http://finweb-api.test/api/me/avatar" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "avatar=@C:\Users\paolo\AppData\Local\Temp\php267D.tmp" \
    --form "avatars[]=@C:\Users\paolo\AppData\Local\Temp\php267E.tmp" 
const url = new URL(
    "http://finweb-api.test/api/me/avatar"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);
body.append('avatars[]', document.querySelector('input[name="avatars[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/me/avatar

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

avatar   file  optional    

This field is required when avatars is not present. Must be a file. Must be an image. Must not be greater than 4096 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php267D.tmp

avatars   file[]  optional    

Must be a file. Must be an image. Must not be greater than 4096 kilobytes.

POST api/logout

Example request:
curl --request POST \
    "http://finweb-api.test/api/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

PUT api/auth/password

Example request:
curl --request PUT \
    "http://finweb-api.test/api/auth/password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"current_password\": \"architecto\",
    \"password\": \"]|{+-0pBNvYg\"
}"
const url = new URL(
    "http://finweb-api.test/api/auth/password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "current_password": "architecto",
    "password": "]|{+-0pBNvYg"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/auth/password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

current_password   string     

Example: architecto

password   string     

Must be at least 8 characters. Example: ]|{+-0pBNvYg

GET api/dashboard/metrics

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/dashboard/metrics" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/dashboard/metrics"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/dashboard/metrics

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/admin/brokers

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/brokers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"status\": \"pending\",
    \"active\": true,
    \"approved\": true,
    \"per_page\": 22,
    \"page\": 67,
    \"sort\": \"z\"
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "status": "pending",
    "active": true,
    "approved": true,
    "per_page": 22,
    "page": 67,
    "sort": "z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/brokers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

Must not be greater than 255 characters. Example: b

status   string  optional    

Example: pending

Must be one of:
  • active
  • pending
  • inactive
active   boolean  optional    

Example: true

approved   boolean  optional    

Example: true

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

page   integer  optional    

Must be at least 1. Example: 67

sort   string  optional    

Must match the regex /^-?(name|email|company_name|license_no|active|approved|created_at|updated_at|slug)$/. Must not be greater than 255 characters. Example: z

POST api/admin/brokers

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/brokers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"slug\": \"a\",
    \"profile_url\": \"http:\\/\\/breitenberg.com\\/nostrum-aut-adipisci-quidem-nostrum.html\",
    \"featured_image\": \"l\",
    \"avatar\": \"v\",
    \"company_name\": \"q\",
    \"phone\": \"w\",
    \"license_no\": \"r\",
    \"active\": true,
    \"profile_content\": {
        \"intro\": {
            \"headline\": \"s\",
            \"paragraphs\": [
                \"architecto\"
            ],
            \"ctaLabel\": \"n\"
        },
        \"homeLoans\": {
            \"title\": \"g\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"commercialLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"auto\"
                    }
                }
            ]
        },
        \"otherLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"no\"
                    }
                }
            ]
        },
        \"contact\": {
            \"mapEmbedUrl\": \"http:\\/\\/www.dach.com\\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html\"
        },
        \"sections\": [
            {
                \"title\": \"m\",
                \"description\": \"Eius et animi quos velit et.\",
                \"highlights\": [
                    \"v\"
                ],
                \"accordion\": [
                    {
                        \"title\": \"d\",
                        \"body\": \"architecto\",
                        \"embed\": {
                            \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                            \"height\": 17,
                            \"allow\": \"i\",
                            \"scrolling\": \"no\"
                        }
                    }
                ]
            }
        ]
    }
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "slug": "a",
    "profile_url": "http:\/\/breitenberg.com\/nostrum-aut-adipisci-quidem-nostrum.html",
    "featured_image": "l",
    "avatar": "v",
    "company_name": "q",
    "phone": "w",
    "license_no": "r",
    "active": true,
    "profile_content": {
        "intro": {
            "headline": "s",
            "paragraphs": [
                "architecto"
            ],
            "ctaLabel": "n"
        },
        "homeLoans": {
            "title": "g",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "commercialLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "auto"
                    }
                }
            ]
        },
        "otherLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "no"
                    }
                }
            ]
        },
        "contact": {
            "mapEmbedUrl": "http:\/\/www.dach.com\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html"
        },
        "sections": [
            {
                "title": "m",
                "description": "Eius et animi quos velit et.",
                "highlights": [
                    "v"
                ],
                "accordion": [
                    {
                        "title": "d",
                        "body": "architecto",
                        "embed": {
                            "iframeUrl": "http:\/\/bailey.com\/",
                            "height": 17,
                            "allow": "i",
                            "scrolling": "no"
                        }
                    }
                ]
            }
        ]
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/admin/brokers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

email   string     

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string     

Must be at least 8 characters. Example: -0pBNvYgxw

slug   string  optional    

Must not be greater than 255 characters. Example: a

profile_url   string  optional    

Must not be greater than 2048 characters. Example: http://breitenberg.com/nostrum-aut-adipisci-quidem-nostrum.html

featured_image   string  optional    

Must not be greater than 2048 characters. Example: l

avatar   string  optional    

Must not be greater than 2048 characters. Example: v

company_name   string     

Must not be greater than 255 characters. Example: q

phone   string  optional    

Must not be greater than 50 characters. Example: w

license_no   string  optional    

Must not be greater than 255 characters. Example: r

active   boolean  optional    

Example: true

profile_content   object  optional    
intro   object  optional    
headline   string  optional    

Must not be greater than 255 characters. Example: s

paragraphs   string[]  optional    
ctaLabel   string  optional    

Must not be greater than 255 characters. Example: n

sections   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: m

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.sections..accordion..embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: no

Must be one of:
  • yes
  • no
  • auto
homeLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: g

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.homeLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
commercialLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.commercialLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
otherLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.otherLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: no

Must be one of:
  • yes
  • no
  • auto
contact   object  optional    
mapEmbedUrl   string  optional    

Must not be greater than 2048 characters. Example: http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html

GET api/admin/brokers/{broker_id}

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/brokers/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/brokers/{broker_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

PUT api/admin/brokers/{broker_id}

Example request:
curl --request PUT \
    "http://finweb-api.test/api/admin/brokers/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"slug\": \"a\",
    \"profile_url\": \"http:\\/\\/breitenberg.com\\/nostrum-aut-adipisci-quidem-nostrum.html\",
    \"featured_image\": \"l\",
    \"avatar\": \"v\",
    \"company_name\": \"q\",
    \"phone\": \"w\",
    \"license_no\": \"r\",
    \"active\": false,
    \"approved\": true,
    \"profile_content\": {
        \"intro\": {
            \"headline\": \"s\",
            \"paragraphs\": [
                \"architecto\"
            ],
            \"ctaLabel\": \"n\"
        },
        \"homeLoans\": {
            \"title\": \"g\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"auto\"
                    }
                }
            ]
        },
        \"commercialLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"otherLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"contact\": {
            \"mapEmbedUrl\": \"http:\\/\\/www.dach.com\\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html\"
        },
        \"sections\": [
            {
                \"title\": \"m\",
                \"description\": \"Eius et animi quos velit et.\",
                \"highlights\": [
                    \"v\"
                ],
                \"accordion\": [
                    {
                        \"title\": \"d\",
                        \"body\": \"architecto\",
                        \"embed\": {
                            \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                            \"height\": 17,
                            \"allow\": \"i\",
                            \"scrolling\": \"yes\"
                        }
                    }
                ]
            }
        ]
    }
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "slug": "a",
    "profile_url": "http:\/\/breitenberg.com\/nostrum-aut-adipisci-quidem-nostrum.html",
    "featured_image": "l",
    "avatar": "v",
    "company_name": "q",
    "phone": "w",
    "license_no": "r",
    "active": false,
    "approved": true,
    "profile_content": {
        "intro": {
            "headline": "s",
            "paragraphs": [
                "architecto"
            ],
            "ctaLabel": "n"
        },
        "homeLoans": {
            "title": "g",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "auto"
                    }
                }
            ]
        },
        "commercialLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "otherLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "contact": {
            "mapEmbedUrl": "http:\/\/www.dach.com\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html"
        },
        "sections": [
            {
                "title": "m",
                "description": "Eius et animi quos velit et.",
                "highlights": [
                    "v"
                ],
                "accordion": [
                    {
                        "title": "d",
                        "body": "architecto",
                        "embed": {
                            "iframeUrl": "http:\/\/bailey.com\/",
                            "height": 17,
                            "allow": "i",
                            "scrolling": "yes"
                        }
                    }
                ]
            }
        ]
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/admin/brokers/{broker_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string  optional    

Must be at least 8 characters. Example: -0pBNvYgxw

slug   string  optional    

Must not be greater than 255 characters. Example: a

profile_url   string  optional    

Must not be greater than 2048 characters. Example: http://breitenberg.com/nostrum-aut-adipisci-quidem-nostrum.html

featured_image   string  optional    

Must not be greater than 2048 characters. Example: l

avatar   string  optional    

Must not be greater than 2048 characters. Example: v

company_name   string  optional    

Must not be greater than 255 characters. Example: q

phone   string  optional    

Must not be greater than 50 characters. Example: w

license_no   string  optional    

Must not be greater than 255 characters. Example: r

active   boolean  optional    

Example: false

approved   boolean  optional    

Example: true

profile_content   object  optional    
intro   object  optional    
headline   string  optional    

Must not be greater than 255 characters. Example: s

paragraphs   string[]  optional    
ctaLabel   string  optional    

Must not be greater than 255 characters. Example: n

sections   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: m

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.sections..accordion..embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
homeLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: g

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.homeLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
commercialLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.commercialLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
otherLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.otherLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
contact   object  optional    
mapEmbedUrl   string  optional    

Must not be greater than 2048 characters. Example: http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html

PATCH api/admin/brokers/{broker_id}

Example request:
curl --request PATCH \
    "http://finweb-api.test/api/admin/brokers/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"slug\": \"a\",
    \"profile_url\": \"http:\\/\\/breitenberg.com\\/nostrum-aut-adipisci-quidem-nostrum.html\",
    \"featured_image\": \"l\",
    \"avatar\": \"v\",
    \"company_name\": \"q\",
    \"phone\": \"w\",
    \"license_no\": \"r\",
    \"active\": false,
    \"approved\": true,
    \"profile_content\": {
        \"intro\": {
            \"headline\": \"s\",
            \"paragraphs\": [
                \"architecto\"
            ],
            \"ctaLabel\": \"n\"
        },
        \"homeLoans\": {
            \"title\": \"g\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"commercialLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"no\"
                    }
                }
            ]
        },
        \"otherLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"no\"
                    }
                }
            ]
        },
        \"contact\": {
            \"mapEmbedUrl\": \"http:\\/\\/www.dach.com\\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html\"
        },
        \"sections\": [
            {
                \"title\": \"m\",
                \"description\": \"Eius et animi quos velit et.\",
                \"highlights\": [
                    \"v\"
                ],
                \"accordion\": [
                    {
                        \"title\": \"d\",
                        \"body\": \"architecto\",
                        \"embed\": {
                            \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                            \"height\": 17,
                            \"allow\": \"i\",
                            \"scrolling\": \"auto\"
                        }
                    }
                ]
            }
        ]
    }
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "slug": "a",
    "profile_url": "http:\/\/breitenberg.com\/nostrum-aut-adipisci-quidem-nostrum.html",
    "featured_image": "l",
    "avatar": "v",
    "company_name": "q",
    "phone": "w",
    "license_no": "r",
    "active": false,
    "approved": true,
    "profile_content": {
        "intro": {
            "headline": "s",
            "paragraphs": [
                "architecto"
            ],
            "ctaLabel": "n"
        },
        "homeLoans": {
            "title": "g",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "commercialLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "no"
                    }
                }
            ]
        },
        "otherLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "no"
                    }
                }
            ]
        },
        "contact": {
            "mapEmbedUrl": "http:\/\/www.dach.com\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html"
        },
        "sections": [
            {
                "title": "m",
                "description": "Eius et animi quos velit et.",
                "highlights": [
                    "v"
                ],
                "accordion": [
                    {
                        "title": "d",
                        "body": "architecto",
                        "embed": {
                            "iframeUrl": "http:\/\/bailey.com\/",
                            "height": 17,
                            "allow": "i",
                            "scrolling": "auto"
                        }
                    }
                ]
            }
        ]
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/admin/brokers/{broker_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string  optional    

Must be at least 8 characters. Example: -0pBNvYgxw

slug   string  optional    

Must not be greater than 255 characters. Example: a

profile_url   string  optional    

Must not be greater than 2048 characters. Example: http://breitenberg.com/nostrum-aut-adipisci-quidem-nostrum.html

featured_image   string  optional    

Must not be greater than 2048 characters. Example: l

avatar   string  optional    

Must not be greater than 2048 characters. Example: v

company_name   string  optional    

Must not be greater than 255 characters. Example: q

phone   string  optional    

Must not be greater than 50 characters. Example: w

license_no   string  optional    

Must not be greater than 255 characters. Example: r

active   boolean  optional    

Example: false

approved   boolean  optional    

Example: true

profile_content   object  optional    
intro   object  optional    
headline   string  optional    

Must not be greater than 255 characters. Example: s

paragraphs   string[]  optional    
ctaLabel   string  optional    

Must not be greater than 255 characters. Example: n

sections   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: m

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.sections..accordion..embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
homeLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: g

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.homeLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
commercialLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.commercialLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: no

Must be one of:
  • yes
  • no
  • auto
otherLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.otherLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: no

Must be one of:
  • yes
  • no
  • auto
contact   object  optional    
mapEmbedUrl   string  optional    

Must not be greater than 2048 characters. Example: http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html

POST api/admin/brokers/{broker_id}/images

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/brokers/16/images" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "featured_image=@C:\Users\paolo\AppData\Local\Temp\php271B.tmp" \
    --form "featured_images[]=@C:\Users\paolo\AppData\Local\Temp\php271C.tmp" \
    --form "avatar=@C:\Users\paolo\AppData\Local\Temp\php271D.tmp" \
    --form "avatars[]=@C:\Users\paolo\AppData\Local\Temp\php272E.tmp" 
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16/images"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('featured_image', document.querySelector('input[name="featured_image"]').files[0]);
body.append('featured_images[]', document.querySelector('input[name="featured_images[]"]').files[0]);
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);
body.append('avatars[]', document.querySelector('input[name="avatars[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/admin/brokers/{broker_id}/images

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

Body Parameters

featured_image   file  optional    

Must be a file. Must be an image. Must not be greater than 2048 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php271B.tmp

featured_images   file[]  optional    

Must be a file. Must be an image. Must not be greater than 2048 kilobytes.

avatar   file  optional    

Must be a file. Must be an image. Must not be greater than 4096 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php271D.tmp

avatars   file[]  optional    

Must be a file. Must be an image. Must not be greater than 4096 kilobytes.

DELETE api/admin/brokers/{broker_id}

Example request:
curl --request DELETE \
    "http://finweb-api.test/api/admin/brokers/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/admin/brokers/{broker_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

GET api/admin/brokers/{broker_id}/audits

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/brokers/16/audits" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1
}"
const url = new URL(
    "http://finweb-api.test/api/admin/brokers/16/audits"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "per_page": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/brokers/{broker_id}/audits

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

broker_id   integer     

The ID of the broker. Example: 16

Body Parameters

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

GET api/admin/insights

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/insights" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"is_published\": true,
    \"sort\": \"n\",
    \"per_page\": 67
}"
const url = new URL(
    "http://finweb-api.test/api/admin/insights"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "is_published": true,
    "sort": "n",
    "per_page": 67
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/insights

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

Must not be greater than 255 characters. Example: b

is_published   boolean  optional    

Example: true

sort   string  optional    

Must not be greater than 255 characters. Example: n

per_page   integer  optional    

Must be at least 1. Example: 67

POST api/admin/insights

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/insights" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"slug\": \"n\",
    \"published_at\": \"2026-04-07T04:45:16\",
    \"excerpt\": \"architecto\",
    \"body\": \"architecto\",
    \"image_url\": \"http:\\/\\/bailey.com\\/\",
    \"button_text\": \"m\",
    \"button_url\": \"https:\\/\\/www.gulgowski.com\\/nihil-accusantium-harum-mollitia-modi-deserunt\",
    \"link_type\": \"internal\",
    \"is_published\": true
}"
const url = new URL(
    "http://finweb-api.test/api/admin/insights"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "slug": "n",
    "published_at": "2026-04-07T04:45:16",
    "excerpt": "architecto",
    "body": "architecto",
    "image_url": "http:\/\/bailey.com\/",
    "button_text": "m",
    "button_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
    "link_type": "internal",
    "is_published": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/admin/insights

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

Must not be greater than 255 characters. Example: b

slug   string     

Must not be greater than 255 characters. Example: n

published_at   string     

Must be a valid date. Example: 2026-04-07T04:45:16

excerpt   string  optional    

Example: architecto

body   string  optional    

Example: architecto

image_url   string  optional    

Must not be greater than 2048 characters. Example: http://bailey.com/

button_text   string  optional    

Must not be greater than 255 characters. Example: m

button_url   string  optional    

Must not be greater than 2048 characters. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

link_type   string     

Example: internal

Must be one of:
  • internal
  • external
is_published   boolean  optional    

Example: true

GET api/admin/insights/{insight_id}

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/insights/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/insights/16"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/insights/{insight_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

insight_id   integer     

The ID of the insight. Example: 16

PUT api/admin/insights/{insight_id}

Example request:
curl --request PUT \
    "http://finweb-api.test/api/admin/insights/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"slug\": \"n\",
    \"published_at\": \"2026-04-07T04:45:16\",
    \"excerpt\": \"architecto\",
    \"body\": \"architecto\",
    \"image_url\": \"http:\\/\\/bailey.com\\/\",
    \"button_text\": \"m\",
    \"button_url\": \"https:\\/\\/www.gulgowski.com\\/nihil-accusantium-harum-mollitia-modi-deserunt\",
    \"link_type\": \"internal\",
    \"is_published\": false
}"
const url = new URL(
    "http://finweb-api.test/api/admin/insights/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "slug": "n",
    "published_at": "2026-04-07T04:45:16",
    "excerpt": "architecto",
    "body": "architecto",
    "image_url": "http:\/\/bailey.com\/",
    "button_text": "m",
    "button_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
    "link_type": "internal",
    "is_published": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/admin/insights/{insight_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

insight_id   integer     

The ID of the insight. Example: 16

Body Parameters

title   string  optional    

Must not be greater than 255 characters. Example: b

slug   string  optional    

Must not be greater than 255 characters. Example: n

published_at   string  optional    

Must be a valid date. Example: 2026-04-07T04:45:16

excerpt   string  optional    

Example: architecto

body   string  optional    

Example: architecto

image_url   string  optional    

Must not be greater than 2048 characters. Example: http://bailey.com/

button_text   string  optional    

Must not be greater than 255 characters. Example: m

button_url   string  optional    

Must not be greater than 2048 characters. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

link_type   string  optional    

Example: internal

Must be one of:
  • internal
  • external
is_published   boolean  optional    

Example: false

PATCH api/admin/insights/{insight_id}

Example request:
curl --request PATCH \
    "http://finweb-api.test/api/admin/insights/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"slug\": \"n\",
    \"published_at\": \"2026-04-07T04:45:16\",
    \"excerpt\": \"architecto\",
    \"body\": \"architecto\",
    \"image_url\": \"http:\\/\\/bailey.com\\/\",
    \"button_text\": \"m\",
    \"button_url\": \"https:\\/\\/www.gulgowski.com\\/nihil-accusantium-harum-mollitia-modi-deserunt\",
    \"link_type\": \"internal\",
    \"is_published\": false
}"
const url = new URL(
    "http://finweb-api.test/api/admin/insights/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "slug": "n",
    "published_at": "2026-04-07T04:45:16",
    "excerpt": "architecto",
    "body": "architecto",
    "image_url": "http:\/\/bailey.com\/",
    "button_text": "m",
    "button_url": "https:\/\/www.gulgowski.com\/nihil-accusantium-harum-mollitia-modi-deserunt",
    "link_type": "internal",
    "is_published": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/admin/insights/{insight_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

insight_id   integer     

The ID of the insight. Example: 16

Body Parameters

title   string  optional    

Must not be greater than 255 characters. Example: b

slug   string  optional    

Must not be greater than 255 characters. Example: n

published_at   string  optional    

Must be a valid date. Example: 2026-04-07T04:45:16

excerpt   string  optional    

Example: architecto

body   string  optional    

Example: architecto

image_url   string  optional    

Must not be greater than 2048 characters. Example: http://bailey.com/

button_text   string  optional    

Must not be greater than 255 characters. Example: m

button_url   string  optional    

Must not be greater than 2048 characters. Example: https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt

link_type   string  optional    

Example: internal

Must be one of:
  • internal
  • external
is_published   boolean  optional    

Example: false

POST api/admin/insights/upload

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/insights/upload" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "image=@C:\Users\paolo\AppData\Local\Temp\php279C.tmp" \
    --form "images[]=@C:\Users\paolo\AppData\Local\Temp\php279D.tmp" 
const url = new URL(
    "http://finweb-api.test/api/admin/insights/upload"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('image', document.querySelector('input[name="image"]').files[0]);
body.append('images[]', document.querySelector('input[name="images[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/admin/insights/upload

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

image   file  optional    

This field is required when images is not present. Must be a file. Must be an image. Must not be greater than 2048 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php279C.tmp

images   file[]  optional    

Must be a file. Must be an image. Must not be greater than 2048 kilobytes.

DELETE api/admin/insights/{insight_id}

Example request:
curl --request DELETE \
    "http://finweb-api.test/api/admin/insights/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/insights/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/admin/insights/{insight_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

insight_id   integer     

The ID of the insight. Example: 16

GET api/admin/join-us

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/join-us" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"enquiry_type\": \"n\",
    \"source\": \"g\",
    \"per_page\": 16,
    \"sort\": \"m\"
}"
const url = new URL(
    "http://finweb-api.test/api/admin/join-us"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "enquiry_type": "n",
    "source": "g",
    "per_page": 16,
    "sort": "m"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/join-us

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

Must not be greater than 255 characters. Example: b

enquiry_type   string  optional    

Must not be greater than 120 characters. Example: n

source   string  optional    

Must not be greater than 100 characters. Example: g

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 16

sort   string  optional    

Must not be greater than 50 characters. Example: m

GET api/admin/get-in-touch

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/get-in-touch" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"source\": \"n\",
    \"per_page\": 7,
    \"sort\": \"z\"
}"
const url = new URL(
    "http://finweb-api.test/api/admin/get-in-touch"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "source": "n",
    "per_page": 7,
    "sort": "z"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/get-in-touch

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

Must not be greater than 255 characters. Example: b

source   string  optional    

Must not be greater than 100 characters. Example: n

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 7

sort   string  optional    

Must not be greater than 50 characters. Example: z

GET api/admin/users

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/users" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search\": \"b\",
    \"role\": \"agent\",
    \"active\": false,
    \"approved\": false,
    \"per_page\": 22
}"
const url = new URL(
    "http://finweb-api.test/api/admin/users"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search": "b",
    "role": "agent",
    "active": false,
    "approved": false,
    "per_page": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/users

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

search   string  optional    

Must not be greater than 255 characters. Example: b

role   string  optional    

Example: agent

Must be one of:
  • admin
  • agent
  • client
active   boolean  optional    

Example: false

approved   boolean  optional    

Example: false

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

GET api/admin/users/{user_id}

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/users/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/users/1"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/admin/users/{user_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_id   integer     

The ID of the user. Example: 1

PUT api/admin/users/{user_id}

Example request:
curl --request PUT \
    "http://finweb-api.test/api/admin/users/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"role\": \"admin\",
    \"permissions\": [
        \"get-in-touch:edit\"
    ],
    \"active\": false,
    \"approved\": false
}"
const url = new URL(
    "http://finweb-api.test/api/admin/users/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "role": "admin",
    "permissions": [
        "get-in-touch:edit"
    ],
    "active": false,
    "approved": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/admin/users/{user_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_id   integer     

The ID of the user. Example: 1

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string  optional    

Must be at least 8 characters. Example: -0pBNvYgxw

role   string  optional    

Example: admin

Must be one of:
  • admin
  • agent
  • client
permissions   string[]  optional    
Must be one of:
  • dashboard:view
  • dashboard:edit
  • brokers:view
  • brokers:edit
  • insights:view
  • insights:edit
  • profile:view
  • profile:edit
  • users:view
  • users:edit
  • join-us:view
  • join-us:edit
  • get-in-touch:view
  • get-in-touch:edit
active   boolean  optional    

Example: false

approved   boolean  optional    

Example: false

PATCH api/admin/users/{user_id}

Example request:
curl --request PATCH \
    "http://finweb-api.test/api/admin/users/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"password\": \"-0pBNvYgxw\",
    \"role\": \"agent\",
    \"permissions\": [
        \"brokers:view\"
    ],
    \"active\": false,
    \"approved\": false
}"
const url = new URL(
    "http://finweb-api.test/api/admin/users/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "password": "-0pBNvYgxw",
    "role": "agent",
    "permissions": [
        "brokers:view"
    ],
    "active": false,
    "approved": false
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/admin/users/{user_id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

user_id   integer     

The ID of the user. Example: 1

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

password   string  optional    

Must be at least 8 characters. Example: -0pBNvYgxw

role   string  optional    

Example: agent

Must be one of:
  • admin
  • agent
  • client
permissions   string[]  optional    
Must be one of:
  • dashboard:view
  • dashboard:edit
  • brokers:view
  • brokers:edit
  • insights:view
  • insights:edit
  • profile:view
  • profile:edit
  • users:view
  • users:edit
  • join-us:view
  • join-us:edit
  • get-in-touch:view
  • get-in-touch:edit
active   boolean  optional    

Example: false

approved   boolean  optional    

Example: false

GET api/profile

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/profile"
);

const headers = {
    "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
vary: Origin
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/profile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

PUT api/profile

Example request:
curl --request PUT \
    "http://finweb-api.test/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"company_name\": \"i\",
    \"phone\": \"y\",
    \"license_no\": \"v\",
    \"profile_content\": {
        \"intro\": {
            \"headline\": \"d\",
            \"paragraphs\": [
                \"architecto\"
            ],
            \"ctaLabel\": \"n\"
        },
        \"homeLoans\": {
            \"title\": \"g\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"commercialLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"auto\"
                    }
                }
            ]
        },
        \"otherLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"auto\"
                    }
                }
            ]
        },
        \"contact\": {
            \"mapEmbedUrl\": \"http:\\/\\/www.dach.com\\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html\"
        },
        \"sections\": [
            {
                \"title\": \"m\",
                \"description\": \"Eius et animi quos velit et.\",
                \"highlights\": [
                    \"v\"
                ],
                \"accordion\": [
                    {
                        \"title\": \"d\",
                        \"body\": \"architecto\",
                        \"embed\": {
                            \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                            \"height\": 17,
                            \"allow\": \"i\",
                            \"scrolling\": \"auto\"
                        }
                    }
                ]
            }
        ]
    }
}"
const url = new URL(
    "http://finweb-api.test/api/profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "company_name": "i",
    "phone": "y",
    "license_no": "v",
    "profile_content": {
        "intro": {
            "headline": "d",
            "paragraphs": [
                "architecto"
            ],
            "ctaLabel": "n"
        },
        "homeLoans": {
            "title": "g",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "commercialLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "auto"
                    }
                }
            ]
        },
        "otherLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "auto"
                    }
                }
            ]
        },
        "contact": {
            "mapEmbedUrl": "http:\/\/www.dach.com\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html"
        },
        "sections": [
            {
                "title": "m",
                "description": "Eius et animi quos velit et.",
                "highlights": [
                    "v"
                ],
                "accordion": [
                    {
                        "title": "d",
                        "body": "architecto",
                        "embed": {
                            "iframeUrl": "http:\/\/bailey.com\/",
                            "height": 17,
                            "allow": "i",
                            "scrolling": "auto"
                        }
                    }
                ]
            }
        ]
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/profile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

company_name   string  optional    

Must not be greater than 255 characters. Example: i

phone   string  optional    

Must not be greater than 50 characters. Example: y

license_no   string  optional    

Must not be greater than 255 characters. Example: v

profile_content   object  optional    
intro   object  optional    
headline   string  optional    

Must not be greater than 255 characters. Example: d

paragraphs   string[]  optional    
ctaLabel   string  optional    

Must not be greater than 255 characters. Example: n

sections   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: m

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.sections..accordion..embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
homeLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: g

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.homeLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
commercialLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.commercialLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
otherLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.otherLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
contact   object  optional    
mapEmbedUrl   string  optional    

Must not be greater than 2048 characters. Example: http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html

PATCH api/profile

Example request:
curl --request PATCH \
    "http://finweb-api.test/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"email\": \"zbailey@example.net\",
    \"company_name\": \"i\",
    \"phone\": \"y\",
    \"license_no\": \"v\",
    \"profile_content\": {
        \"intro\": {
            \"headline\": \"d\",
            \"paragraphs\": [
                \"architecto\"
            ],
            \"ctaLabel\": \"n\"
        },
        \"homeLoans\": {
            \"title\": \"g\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"no\"
                    }
                }
            ]
        },
        \"commercialLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"auto\"
                    }
                }
            ]
        },
        \"otherLoans\": {
            \"title\": \"d\",
            \"description\": \"Eius et animi quos velit et.\",
            \"highlights\": [
                \"v\"
            ],
            \"accordion\": [
                {
                    \"title\": \"y\",
                    \"body\": \"architecto\",
                    \"embed\": {
                        \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                        \"height\": 17,
                        \"allow\": \"i\",
                        \"scrolling\": \"yes\"
                    }
                }
            ]
        },
        \"contact\": {
            \"mapEmbedUrl\": \"http:\\/\\/www.dach.com\\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html\"
        },
        \"sections\": [
            {
                \"title\": \"m\",
                \"description\": \"Eius et animi quos velit et.\",
                \"highlights\": [
                    \"v\"
                ],
                \"accordion\": [
                    {
                        \"title\": \"d\",
                        \"body\": \"architecto\",
                        \"embed\": {
                            \"iframeUrl\": \"http:\\/\\/bailey.com\\/\",
                            \"height\": 17,
                            \"allow\": \"i\",
                            \"scrolling\": \"yes\"
                        }
                    }
                ]
            }
        ]
    }
}"
const url = new URL(
    "http://finweb-api.test/api/profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "email": "zbailey@example.net",
    "company_name": "i",
    "phone": "y",
    "license_no": "v",
    "profile_content": {
        "intro": {
            "headline": "d",
            "paragraphs": [
                "architecto"
            ],
            "ctaLabel": "n"
        },
        "homeLoans": {
            "title": "g",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "no"
                    }
                }
            ]
        },
        "commercialLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "auto"
                    }
                }
            ]
        },
        "otherLoans": {
            "title": "d",
            "description": "Eius et animi quos velit et.",
            "highlights": [
                "v"
            ],
            "accordion": [
                {
                    "title": "y",
                    "body": "architecto",
                    "embed": {
                        "iframeUrl": "http:\/\/bailey.com\/",
                        "height": 17,
                        "allow": "i",
                        "scrolling": "yes"
                    }
                }
            ]
        },
        "contact": {
            "mapEmbedUrl": "http:\/\/www.dach.com\/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html"
        },
        "sections": [
            {
                "title": "m",
                "description": "Eius et animi quos velit et.",
                "highlights": [
                    "v"
                ],
                "accordion": [
                    {
                        "title": "d",
                        "body": "architecto",
                        "embed": {
                            "iframeUrl": "http:\/\/bailey.com\/",
                            "height": 17,
                            "allow": "i",
                            "scrolling": "yes"
                        }
                    }
                ]
            }
        ]
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/profile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: zbailey@example.net

company_name   string  optional    

Must not be greater than 255 characters. Example: i

phone   string  optional    

Must not be greater than 50 characters. Example: y

license_no   string  optional    

Must not be greater than 255 characters. Example: v

profile_content   object  optional    
intro   object  optional    
headline   string  optional    

Must not be greater than 255 characters. Example: d

paragraphs   string[]  optional    
ctaLabel   string  optional    

Must not be greater than 255 characters. Example: n

sections   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: m

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.sections..accordion..embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
homeLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: g

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.homeLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: no

Must be one of:
  • yes
  • no
  • auto
commercialLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.commercialLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: auto

Must be one of:
  • yes
  • no
  • auto
otherLoans   object  optional    
title   string  optional    

Must not be greater than 255 characters. Example: d

description   string  optional    

Example: Eius et animi quos velit et.

highlights   string[]  optional    

Must not be greater than 255 characters.

accordion   object[]  optional    
title   string  optional    

Must not be greater than 255 characters. Example: y

body   string  optional    

Example: architecto

embed   object  optional    
iframeUrl   string  optional    

This field is required when profile_content.otherLoans.accordion.*.embed is present. Must be a valid URL. Must not be greater than 2048 characters. Example: http://bailey.com/

height   integer  optional    

Must be at least 100. Must not be greater than 2000. Example: 17

allow   string  optional    

Must not be greater than 255 characters. Example: i

scrolling   string  optional    

Example: yes

Must be one of:
  • yes
  • no
  • auto
contact   object  optional    
mapEmbedUrl   string  optional    

Must not be greater than 2048 characters. Example: http://www.dach.com/mollitia-modi-deserunt-aut-ab-provident-perspiciatis-quo.html

POST api/profile/images

Example request:
curl --request POST \
    "http://finweb-api.test/api/profile/images" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "featured_image=@C:\Users\paolo\AppData\Local\Temp\php281B.tmp" \
    --form "featured_images[]=@C:\Users\paolo\AppData\Local\Temp\php281C.tmp" \
    --form "avatar=@C:\Users\paolo\AppData\Local\Temp\php282D.tmp" \
    --form "avatars[]=@C:\Users\paolo\AppData\Local\Temp\php282E.tmp" 
const url = new URL(
    "http://finweb-api.test/api/profile/images"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('featured_image', document.querySelector('input[name="featured_image"]').files[0]);
body.append('featured_images[]', document.querySelector('input[name="featured_images[]"]').files[0]);
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);
body.append('avatars[]', document.querySelector('input[name="avatars[]"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/profile/images

Headers

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

featured_image   file  optional    

Must be a file. Must be an image. Must not be greater than 2048 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php281B.tmp

featured_images   file[]  optional    

Must be a file. Must be an image. Must not be greater than 2048 kilobytes.

avatar   file  optional    

Must be a file. Must be an image. Must not be greater than 4096 kilobytes. Example: C:\Users\paolo\AppData\Local\Temp\php282D.tmp

avatars   file[]  optional    

Must be a file. Must be an image. Must not be greater than 4096 kilobytes.

Zoho CRM

Get Zoho connection status.

requires authentication

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/zoho/status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/zoho/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "connected": true,
        "expires_at": "2026-04-09T10:12:30Z",
        "api_domain": "https://www.zohoapis.com",
        "scope": "ZohoCRM.modules.ALL"
    }
}
 

Request      

GET api/admin/zoho/status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get Zoho OAuth authorization URL.

requires authentication

Example request:
curl --request GET \
    --get "http://finweb-api.test/api/admin/zoho/oauth/url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/zoho/oauth/url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "url": "https://accounts.zoho.com/oauth/v2/auth?..."
    }
}
 

Request      

GET api/admin/zoho/oauth/url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Exchange Zoho OAuth code for tokens.

requires authentication

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/zoho/oauth/callback" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"architecto\",
    \"accounts_server\": \"architecto\",
    \"location\": \"architecto\"
}"
const url = new URL(
    "http://finweb-api.test/api/admin/zoho/oauth/callback"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "architecto",
    "accounts_server": "architecto",
    "location": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "data": {
        "connected": true,
        "expires_at": "2026-04-09T10:12:30Z",
        "api_domain": "https://www.zohoapis.com",
        "scope": "ZohoCRM.modules.ALL"
    }
}
 

Request      

POST api/admin/zoho/oauth/callback

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Example: architecto

accounts_server   string  optional    

Example: architecto

location   string  optional    

Example: architecto

Revoke Zoho OAuth tokens.

requires authentication

Example request:
curl --request POST \
    "http://finweb-api.test/api/admin/zoho/oauth/revoke" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://finweb-api.test/api/admin/zoho/oauth/revoke"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "message": "Zoho CRM connection revoked."
    }
}
 

Request      

POST api/admin/zoho/oauth/revoke

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json