Endpoint reference
Every public endpoint with parameters.
Base URL: https://cms.af/api/public/v1. All responses are JSON with CORS enabled for any origin.
| Method | Path | What it returns |
|---|---|---|
GET |
/{domain}/{lang}/settings |
Site name, logo, contact details, social links and SEO for one language. |
GET |
/{domain}/{lang}/posts |
Published blog posts, newest first. |
GET |
/{domain}/{lang}/posts/{slug} |
One published post with full body, category, tags and SEO. |
GET |
/{domain}/{lang}/taxonomies |
All blog categories and tags. |
GET |
/{domain}/{lang}/about |
The About page content. |
GET |
/{domain}/{lang}/contacts |
Public contact information (phones, emails, addresses). |
GET |
/{domain}/{lang}/projects |
Published projects. |
GET |
/{domain}/{lang}/projects/{slug} |
One published project. |
GET |
/{domain}/{lang}/reports |
Published reports with file info. |
GET |
/{domain}/{lang}/reports/{slug} |
One published report. |
GET |
/{domain}/{lang}/reports/{slug}/download |
Redirects to a short-lived download link for the report file. |
GET |
/{domain}/{lang}/services |
Published services with price info. |
GET |
/{domain}/{lang}/services/{slug} |
One service with full description and related projects. |
GET |
/{domain}/{lang}/team |
Published team members (name, role, department, photo, social links). |
GET |
/{domain}/{lang}/pages |
Published custom pages (FAQ, Privacy, Terms…). |
GET |
/{domain}/{lang}/pages/{slug} |
One page with content, template and FAQ items. |
GET |
/{domain}/{lang}/menus |
Header and footer menus with translated labels, plus footer settings. |
GET |
/{domain}/{lang}/footer |
Footer columns, description, copyright, contact and social links. |
GET |
/{domain}/{lang}/jobs |
Open vacancies (closed jobs are hidden automatically). |
GET |
/{domain}/{lang}/jobs/{slug} |
One open vacancy. |
POST |
/{domain}/jobs/{slug}/apply |
Apply for a job (multipart form: name, email, phone, cover_letter, cv file PDF/Word ≤5 MB). |
GET |
/{domain}/{lang}/events |
Published events. |
GET |
/{domain}/{lang}/events/{slug} |
One event. |
GET |
/{domain}/{lang}/events/{slug}/ics |
Calendar file (.ics) for one event. |
GET |
/{domain}/{lang}/gallery |
Published photo/video albums. |
GET |
/{domain}/{lang}/gallery/{slug} |
One album with all photos and videos. |
GET |
/{domain}/{lang}/testimonials |
Published client testimonials with ratings. |
GET |
/{domain}/{lang}/partners |
Partner and client logos. |
GET |
/{domain}/{lang}/tenders |
Open tenders and RFQs (closed ones hidden after the deadline). |
GET |
/{domain}/{lang}/tenders/{slug} |
One tender with full details and document link. |
GET |
/{domain}/{lang}/faqs |
Published FAQ items plus ready-made schema.org FAQPage markup. |
GET |
/{domain}/{lang}/announcements |
Currently active announcements; filter=banner returns site banners only. |
GET |
/{domain}/{lang}/announcements/{slug} |
One announcement with full text. |
GET |
/{domain}/{lang}/locations |
Branch offices with address, hours, phone and coordinates. |
GET |
/{domain}/{lang}/pricing |
Pricing packages; featured = highlighted package. |
POST |
/{domain}/subscribe |
Add a newsletter subscriber (JSON body: email, name?, locale?). |
POST |
/{domain}/contact |
Submit a contact-form message (JSON body). |
GET |
/{domain}/verify |
Check a secret API key (server-side only). |
GET |
/media/{path} |
Uploaded images (logos, covers). Cached forever. |
Details
GET /{domain}/{lang}/settings
Site name, logo, contact details, social links and SEO for one language.
GET /{domain}/{lang}/posts
Published blog posts, newest first.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–50, default 10 |
category |
Category slug |
tag |
Tag slug |
q |
Search text (max 100 chars) |
GET /{domain}/{lang}/posts/{slug}
One published post with full body, category, tags and SEO.
GET /{domain}/{lang}/taxonomies
All blog categories and tags.
GET /{domain}/{lang}/about
The About page content.
GET /{domain}/{lang}/contacts
Public contact information (phones, emails, addresses).
GET /{domain}/{lang}/projects
Published projects.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–50, default 12 |
status |
planned |
q |
Search text (max 200 chars) |
GET /{domain}/{lang}/projects/{slug}
One published project.
GET /{domain}/{lang}/reports
Published reports with file info.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–50, default 12 |
q |
Search text (max 200 chars) |
GET /{domain}/{lang}/reports/{slug}
One published report.
GET /{domain}/{lang}/reports/{slug}/download
Redirects to a short-lived download link for the report file.
GET /{domain}/{lang}/services
Published services with price info.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/services/{slug}
One service with full description and related projects.
GET /{domain}/{lang}/team
Published team members (name, role, department, photo, social links).
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/pages
Published custom pages (FAQ, Privacy, Terms…).
GET /{domain}/{lang}/pages/{slug}
One page with content, template and FAQ items.
GET /{domain}/{lang}/menus
Header and footer menus with translated labels, plus footer settings.
GET /{domain}/{lang}/footer
Footer columns, description, copyright, contact and social links.
GET /{domain}/{lang}/jobs
Open vacancies (closed jobs are hidden automatically).
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/jobs/{slug}
One open vacancy.
POST /{domain}/jobs/{slug}/apply
Apply for a job (multipart form: name, email, phone, cover_letter, cv file PDF/Word ≤5 MB).
GET /{domain}/{lang}/events
Published events.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
upcoming |
GET /{domain}/{lang}/events/{slug}
One event.
GET /{domain}/{lang}/events/{slug}/ics
Calendar file (.ics) for one event.
GET /{domain}/{lang}/gallery
Published photo/video albums.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/gallery/{slug}
One album with all photos and videos.
GET /{domain}/{lang}/testimonials
Published client testimonials with ratings.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/partners
Partner and client logos.
GET /{domain}/{lang}/tenders
Open tenders and RFQs (closed ones hidden after the deadline).
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/tenders/{slug}
One tender with full details and document link.
GET /{domain}/{lang}/faqs
Published FAQ items plus ready-made schema.org FAQPage markup.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/announcements
Currently active announcements; filter=banner returns site banners only.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/announcements/{slug}
One announcement with full text.
GET /{domain}/{lang}/locations
Branch offices with address, hours, phone and coordinates.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
GET /{domain}/{lang}/pricing
Pricing packages; featured = highlighted package.
| Query | Description |
|---|---|
page |
Page number, default 1 |
per_page |
1–100, default 20 |
filter |
featured |
POST /{domain}/subscribe
Add a newsletter subscriber (JSON body: email, name?, locale?).
POST /{domain}/contact
Submit a contact-form message (JSON body).
GET /{domain}/verify
Check a secret API key (server-side only).
| Header | Description |
|---|---|
x-api-key |
Your secret key |
GET /media/{path}
Uploaded images (logos, covers). Cached forever.
Response shape
Open API → Playground in your dashboard to see the exact JSON each endpoint returns for your website.