Skip to content
Browse documentation

API reference

Storefront Writes

POST/api/v1/storefront/projects/{project_slug}/authors

Create Author

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · AuthorCreate
FieldTypeDescription
account_idstring (nullable)optional—
display_namestringrequired—
slugstringrequired—
biostring (nullable)optional—
titlestring (nullable)optional—
avatar_file_idinteger (nullable)optional—
social_linksobjectoptional—
Response 201 · AuthorRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
account_idstring (nullable)optional—
display_namestringrequired—
slugstringrequired—
biostring (nullable)optional—
titlestring (nullable)optional—
avatar_fileFileOut (nullable)optional—
social_linksobjectrequired—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/authors" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "display_name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/authors/{author_slug}

Update Author

Parameters
NameTypeInDescription
project_slugstringpathRequired.
author_slugstringpathRequired.
Request body · AuthorUpdate
FieldTypeDescription
account_idstring (nullable)optional—
display_namestring (nullable)optional—
slugstring (nullable)optional—
biostring (nullable)optional—
titlestring (nullable)optional—
avatar_file_idinteger (nullable)optional—
social_linksobject (nullable)optional—
Response 200 · AuthorRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
account_idstring (nullable)optional—
display_namestringrequired—
slugstringrequired—
biostring (nullable)optional—
titlestring (nullable)optional—
avatar_fileFileOut (nullable)optional—
social_linksobjectrequired—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/authors/{author_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "account_id": "…", "display_name": "…", "slug": "…", "bio": "…", "title": "…", "avatar_file_id": 0 }'
POST/api/v1/storefront/projects/{project_slug}/blog-categories

Create Blog Category

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · BlogCategoryCreate
FieldTypeDescription
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
Response 201 · BlogCategoryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/blog-categories" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/blog-categories/{category_slug}

Update Blog Category

Parameters
NameTypeInDescription
project_slugstringpathRequired.
category_slugstringpathRequired.
Request body · BlogCategoryUpdate
FieldTypeDescription
namestring (nullable)optional—
slugstring (nullable)optional—
descriptionstring (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
Response 200 · BlogCategoryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/blog-categories/{category_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "description": "…", "seo_title": "…", "seo_description": "…", "canonical_url": "…" }'
POST/api/v1/storefront/projects/{project_slug}/crm/companies

Create Crm Company

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · CrmCompanyCreate
FieldTypeDescription
namestringrequired—
websitestring (nullable)optional—
industrystring (nullable)optional—
phone_numberstring (nullable)optional—
emailstring<email> (nullable)optional—
addressstring (nullable)optional—
notesstring (nullable)optional—
Response 201 · CrmCompanyRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
websitestring (nullable)optional—
industrystring (nullable)optional—
phone_numberstring (nullable)optional—
emailstring (nullable)optional—
addressstring (nullable)optional—
notesstring (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/companies" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/crm/companies/{company_id}

Update Crm Company

Parameters
NameTypeInDescription
project_slugstringpathRequired.
company_idstringpathRequired.
Request body · CrmCompanyUpdate
FieldTypeDescription
namestring (nullable)optional—
websitestring (nullable)optional—
industrystring (nullable)optional—
phone_numberstring (nullable)optional—
emailstring<email> (nullable)optional—
addressstring (nullable)optional—
notesstring (nullable)optional—
Response 200 · CrmCompanyRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
websitestring (nullable)optional—
industrystring (nullable)optional—
phone_numberstring (nullable)optional—
emailstring (nullable)optional—
addressstring (nullable)optional—
notesstring (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/companies/{company_id}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "website": "…", "industry": "…", "phone_number": "…", "email": "…", "address": "…" }'
POST/api/v1/storefront/projects/{project_slug}/crm/contacts

Create Crm Contact

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · CrmContactCreate
FieldTypeDescription
first_namestringrequired—
last_namestring (nullable)optional—
emailstring<email> (nullable)optional—
phone_numberstring (nullable)optional—
job_titlestring (nullable)optional—
company_idstring (nullable)optional—
sourceCrmContactSourceoptional—
statusCrmContactStatusoptional—
assigned_to_account_idstring (nullable)optional—
customer_idstring (nullable)optional—
subscriber_idstring (nullable)optional—
source_query_idstring (nullable)optional—
notesstring (nullable)optional—
Response 201 · CrmContactRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
first_namestringrequired—
last_namestring (nullable)optional—
emailstring (nullable)optional—
phone_numberstring (nullable)optional—
job_titlestring (nullable)optional—
company_idstring (nullable)optional—
company_namestring (nullable)optional—
sourceCrmContactSourcerequired—
statusCrmContactStatusrequired—
assigned_to_account_idstring (nullable)optional—
customer_idstring (nullable)optional—
subscriber_idstring (nullable)optional—
source_query_idstring (nullable)optional—
notesstring (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/contacts" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "first_name": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/crm/contacts/{contact_id}

Update Crm Contact

Parameters
NameTypeInDescription
project_slugstringpathRequired.
contact_idstringpathRequired.
Request body · CrmContactUpdate
FieldTypeDescription
first_namestring (nullable)optional—
last_namestring (nullable)optional—
emailstring<email> (nullable)optional—
phone_numberstring (nullable)optional—
job_titlestring (nullable)optional—
company_idstring (nullable)optional—
sourceCrmContactSource (nullable)optional—
statusCrmContactStatus (nullable)optional—
assigned_to_account_idstring (nullable)optional—
customer_idstring (nullable)optional—
subscriber_idstring (nullable)optional—
source_query_idstring (nullable)optional—
notesstring (nullable)optional—
Response 200 · CrmContactRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
first_namestringrequired—
last_namestring (nullable)optional—
emailstring (nullable)optional—
phone_numberstring (nullable)optional—
job_titlestring (nullable)optional—
company_idstring (nullable)optional—
company_namestring (nullable)optional—
sourceCrmContactSourcerequired—
statusCrmContactStatusrequired—
assigned_to_account_idstring (nullable)optional—
customer_idstring (nullable)optional—
subscriber_idstring (nullable)optional—
source_query_idstring (nullable)optional—
notesstring (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/contacts/{contact_id}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "first_name": "…", "last_name": "…", "email": "…", "phone_number": "…", "job_title": "…", "company_id": "…" }'
POST/api/v1/storefront/projects/{project_slug}/crm/opportunities

Create Crm Opportunity

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · CrmOpportunityCreate
FieldTypeDescription
titlestringrequired—
contact_idstring (nullable)optional—
company_idstring (nullable)optional—
service_idstring (nullable)optional—
pipeline_idstring (nullable)optional—
stage_idstring (nullable)optional—
value_minorintegeroptional—
currencystring (nullable)optional—
sourceCrmOpportunitySourceoptional—
assigned_to_account_idstring (nullable)optional—
source_query_idstring (nullable)optional—
expected_close_datestring<date> (nullable)optional—
Response 201 · CrmOpportunityRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
contact_idstring (nullable)optional—
contact_namestring (nullable)optional—
company_idstring (nullable)optional—
company_namestring (nullable)optional—
service_idstring (nullable)optional—
service_namestring (nullable)optional—
pipeline_idstringrequired—
stage_idstringrequired—
stage_namestring (nullable)optional—
stage_typeCrmStageType (nullable)optional—
value_minorintegerrequired—
currencystringrequired—
sourceCrmOpportunitySourcerequired—
assigned_to_account_idstring (nullable)optional—
source_query_idstring (nullable)optional—
expected_close_datestring<date> (nullable)optional—
won_atstring<date-time> (nullable)optional—
lost_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/opportunities" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/crm/opportunities/{opportunity_id}

Update Crm Opportunity

Parameters
NameTypeInDescription
project_slugstringpathRequired.
opportunity_idstringpathRequired.
Request body · CrmOpportunityUpdate
FieldTypeDescription
titlestring (nullable)optional—
contact_idstring (nullable)optional—
company_idstring (nullable)optional—
service_idstring (nullable)optional—
pipeline_idstring (nullable)optional—
stage_idstring (nullable)optional—
value_minorinteger (nullable)optional—
currencystring (nullable)optional—
sourceCrmOpportunitySource (nullable)optional—
assigned_to_account_idstring (nullable)optional—
source_query_idstring (nullable)optional—
expected_close_datestring<date> (nullable)optional—
Response 200 · CrmOpportunityRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
contact_idstring (nullable)optional—
contact_namestring (nullable)optional—
company_idstring (nullable)optional—
company_namestring (nullable)optional—
service_idstring (nullable)optional—
service_namestring (nullable)optional—
pipeline_idstringrequired—
stage_idstringrequired—
stage_namestring (nullable)optional—
stage_typeCrmStageType (nullable)optional—
value_minorintegerrequired—
currencystringrequired—
sourceCrmOpportunitySourcerequired—
assigned_to_account_idstring (nullable)optional—
source_query_idstring (nullable)optional—
expected_close_datestring<date> (nullable)optional—
won_atstring<date-time> (nullable)optional—
lost_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/crm/opportunities/{opportunity_id}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…", "contact_id": "…", "company_id": "…", "service_id": "…", "pipeline_id": "…", "stage_id": "…" }'
POST/api/v1/storefront/projects/{project_slug}/landing-pages

Create Landing Page

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · LandingPageCreate
FieldTypeDescription
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
display_orderintegeroptional—
statusLandingPageStatusoptional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
themeobject (nullable)optional—
blocksLandingPageBlockWrite[]optional—
Response 201 · LandingPageRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
themeobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksLandingPageBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/landing-pages/{page_slug}

Update Landing Page

Parameters
NameTypeInDescription
project_slugstringpathRequired.
page_slugstringpathRequired.
Request body · LandingPageUpdate
FieldTypeDescription
namestring (nullable)optional—
slugstring (nullable)optional—
descriptionstring (nullable)optional—
display_orderinteger (nullable)optional—
statusLandingPageStatus (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
themeobject (nullable)optional—
blocksLandingPageBlockWrite[] (nullable)optional—
Response 200 · LandingPageRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
themeobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksLandingPageBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages/{page_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "description": "…", "display_order": 0, "status": "…", "seo_title": "…" }'
POST/api/v1/storefront/projects/{project_slug}/landing-pages/{page_slug}/duplicate

Duplicate Landing Page

Parameters
NameTypeInDescription
project_slugstringpathRequired.
page_slugstringpathRequired.
Response 201 · LandingPageRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
themeobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksLandingPageBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages/{page_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"
POST/api/v1/storefront/projects/{project_slug}/landing-pages/{page_slug}/entries

Create Landing Page Entry

Parameters
NameTypeInDescription
project_slugstringpathRequired.
page_slugstringpathRequired.
Request body · LandingPageEntryCreate
FieldTypeDescription
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
display_orderintegeroptional—
statusLandingPageStatusoptional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
themeobject (nullable)optional—
blocksobjectoptional—
Response 201 · LandingPageEntryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
landing_page_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
theme_overridesobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
themeobjectoptional—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksEntryBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages/{page_slug}/entries" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/landing-pages/{page_slug}/entries/{entry_slug}

Update Landing Page Entry

Parameters
NameTypeInDescription
project_slugstringpathRequired.
page_slugstringpathRequired.
entry_slugstringpathRequired.
Request body · LandingPageEntryUpdate
FieldTypeDescription
namestring (nullable)optional—
slugstring (nullable)optional—
excerptstring (nullable)optional—
display_orderinteger (nullable)optional—
statusLandingPageStatus (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
themeobject (nullable)optional—
blocksobject (nullable)optional—
Response 200 · LandingPageEntryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
landing_page_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
theme_overridesobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
themeobjectoptional—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksEntryBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages/{page_slug}/entries/{entry_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "excerpt": "…", "display_order": 0, "status": "…", "seo_title": "…" }'
POST/api/v1/storefront/projects/{project_slug}/landing-pages/{page_slug}/entries/{entry_slug}/duplicate

Duplicate Landing Page Entry

Parameters
NameTypeInDescription
project_slugstringpathRequired.
page_slugstringpathRequired.
entry_slugstringpathRequired.
Response 201 · LandingPageEntryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
landing_page_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusLandingPageStatusrequired—
display_orderintegerrequired—
theme_overridesobjectoptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
themeobjectoptional—
seoSeoReadrequiredNested SEO metadata for API read responses.
blocksEntryBlockRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/landing-pages/{page_slug}/entries/{entry_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"
POST/api/v1/storefront/projects/{project_slug}/media

Upload Media

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · Body_upload_media_api_v1_storefront_projects__project_slug__media_post
FieldTypeDescription
filestring<binary> (nullable)optional—
file_asset_idinteger (nullable)optional—
alt_textstring (nullable)optional—
captionstring (nullable)optional—
descriptionstring (nullable)optional—
aspect_ratiostring (nullable)optional—
Response 201 · MediaAssetRead
FieldTypeDescription
idstringrequired—
file_asset_idintegerrequired—
project_idstringrequired—
alt_textstring (nullable)optional—
captionstring (nullable)optional—
descriptionstring (nullable)optional—
urlstring (nullable)optional—
keystringrequired—
content_typestring (nullable)optional—
file_sizeinteger (nullable)optional—
aspect_ratiostring (nullable)optional—
uploaded_by_idstring (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/media" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "file": "…", "file_asset_id": 0, "alt_text": "…", "caption": "…", "description": "…", "aspect_ratio": "…" }'
POST/api/v1/storefront/projects/{project_slug}/past-works

Create Past Work

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · PastWorkCreate
FieldTypeDescription
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
description_htmlstringrequired—
client_namestring (nullable)optional—
industrystring (nullable)optional—
project_urlstring (nullable)optional—
locationstring (nullable)optional—
started_atstring<date-time> (nullable)optional—
completed_atstring<date-time> (nullable)optional—
statusPastWorkStatusoptional—
is_featuredbooleanoptional—
display_orderintegeroptional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
featured_media_idstring (nullable)optional—
Response 201 · PastWorkRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
client_namestring (nullable)optional—
industrystring (nullable)optional—
locationstring (nullable)optional—
statusPastWorkStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaPastWorkMediaRead (nullable)optional—
viewsintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
project_urlstring (nullable)optional—
started_atstring<date-time> (nullable)optional—
completed_atstring<date-time> (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPastWorkMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/past-works" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…", "slug": "…", "description_html": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/past-works/{past_work_slug}

Update Past Work

Parameters
NameTypeInDescription
project_slugstringpathRequired.
past_work_slugstringpathRequired.
Request body · PastWorkUpdate
FieldTypeDescription
titlestring (nullable)optional—
slugstring (nullable)optional—
excerptstring (nullable)optional—
description_htmlstring (nullable)optional—
client_namestring (nullable)optional—
industrystring (nullable)optional—
project_urlstring (nullable)optional—
locationstring (nullable)optional—
started_atstring<date-time> (nullable)optional—
completed_atstring<date-time> (nullable)optional—
statusPastWorkStatus (nullable)optional—
is_featuredboolean (nullable)optional—
display_orderinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
featured_media_idstring (nullable)optional—
Response 200 · PastWorkRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
client_namestring (nullable)optional—
industrystring (nullable)optional—
locationstring (nullable)optional—
statusPastWorkStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaPastWorkMediaRead (nullable)optional—
viewsintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
project_urlstring (nullable)optional—
started_atstring<date-time> (nullable)optional—
completed_atstring<date-time> (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPastWorkMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/past-works/{past_work_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…", "slug": "…", "excerpt": "…", "description_html": "…", "client_name": "…", "industry": "…" }'
POST/api/v1/storefront/projects/{project_slug}/past-works/{past_work_slug}/duplicate

Duplicate Past Work

Parameters
NameTypeInDescription
project_slugstringpathRequired.
past_work_slugstringpathRequired.
Response 201 · PastWorkRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
client_namestring (nullable)optional—
industrystring (nullable)optional—
locationstring (nullable)optional—
statusPastWorkStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaPastWorkMediaRead (nullable)optional—
viewsintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
project_urlstring (nullable)optional—
started_atstring<date-time> (nullable)optional—
completed_atstring<date-time> (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPastWorkMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/past-works/{past_work_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"
POST/api/v1/storefront/projects/{project_slug}/posts

Create Post

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · PostCreate
FieldTypeDescription
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
content_htmlstringrequired—
statusPostStatusoptionalEditorial status for CMS posts.
category_idstring (nullable)optional—
featured_image_file_idinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
is_featuredbooleanoptional—
author_idsstring[]optional—
tag_idsstring[]optional—
Response 201 · PostRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusPostStatusrequiredEditorial status for CMS posts.
categoryPostCategoryRead (nullable)optional—
featured_image_fileFileOut (nullable)optional—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
scheduled_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
authorsPostAuthorRead[]optional—
tagsPostTagRead[]optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
content_htmlstringrequired—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPostGalleryImageRead[]optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/posts" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…", "slug": "…", "content_html": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/posts/{post_slug}

Update Post

Parameters
NameTypeInDescription
project_slugstringpathRequired.
post_slugstringpathRequired.
Request body · PostUpdate
FieldTypeDescription
titlestring (nullable)optional—
slugstring (nullable)optional—
excerptstring (nullable)optional—
content_htmlstring (nullable)optional—
statusPostStatus (nullable)optional—
category_idstring (nullable)optional—
featured_image_file_idinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
is_featuredboolean (nullable)optional—
author_idsstring[] (nullable)optional—
tag_idsstring[] (nullable)optional—
Response 200 · PostRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusPostStatusrequiredEditorial status for CMS posts.
categoryPostCategoryRead (nullable)optional—
featured_image_fileFileOut (nullable)optional—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
scheduled_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
authorsPostAuthorRead[]optional—
tagsPostTagRead[]optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
content_htmlstringrequired—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPostGalleryImageRead[]optional—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/posts/{post_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "…", "slug": "…", "excerpt": "…", "content_html": "…", "status": "…", "category_id": "…" }'
POST/api/v1/storefront/projects/{project_slug}/posts/{post_slug}/duplicate

Duplicate Post

Parameters
NameTypeInDescription
project_slugstringpathRequired.
post_slugstringpathRequired.
Response 201 · PostRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
titlestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
statusPostStatusrequiredEditorial status for CMS posts.
categoryPostCategoryRead (nullable)optional—
featured_image_fileFileOut (nullable)optional—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
scheduled_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
authorsPostAuthorRead[]optional—
tagsPostTagRead[]optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
content_htmlstringrequired—
seoSeoReadrequiredNested SEO metadata for API read responses.
galleryPostGalleryImageRead[]optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/posts/{post_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"
POST/api/v1/storefront/projects/{project_slug}/product-categories

Create Product Category

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · ProductCategoryCreate
FieldTypeDescription
parent_idstring (nullable)optional—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
image_file_idinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
positionintegeroptional—
statusCollectionStatusoptional—
Response 201 · ProductCategoryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
parent_idstring (nullable)optional—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
image_fileFileOut (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
positionintegerrequired—
statusCollectionStatusrequired—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/product-categories" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/product-categories/{category_slug}

Update Product Category

Parameters
NameTypeInDescription
project_slugstringpathRequired.
category_slugstringpathRequired.
Request body · ProductCategoryUpdate
FieldTypeDescription
parent_idstring (nullable)optional—
namestring (nullable)optional—
slugstring (nullable)optional—
descriptionstring (nullable)optional—
image_file_idinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
positioninteger (nullable)optional—
statusCollectionStatus (nullable)optional—
Response 200 · ProductCategoryRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
parent_idstring (nullable)optional—
namestringrequired—
slugstringrequired—
descriptionstring (nullable)optional—
image_fileFileOut (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
positionintegerrequired—
statusCollectionStatusrequired—
created_atstring<date-time>required—
updated_atstring<date-time>required—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/product-categories/{category_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "parent_id": "…", "name": "…", "slug": "…", "description": "…", "image_file_id": 0, "seo_title": "…" }'
POST/api/v1/storefront/projects/{project_slug}/products

Create Product

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · ProductCreate
FieldTypeDescription
namestringrequired—
slugstringrequired—
statusProductStatusoptional—
product_typeProductTypeoptional—
short_descriptionstring (nullable)optional—
description_htmlstring (nullable)optional—
brandstring (nullable)optional—
specificationsobjectoptional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
is_featuredbooleanoptional—
category_idsstring[]optional—
default_variantProductVariantCreateoptional—
Response 201 · ProductRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
statusProductStatusrequired—
product_typeProductTyperequired—
short_descriptionstring (nullable)optional—
brandstring (nullable)optional—
specificationsobjectrequired—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
variantsProductVariantRead[]required—
categoriesProductCategoryAssignmentRead[]required—
mediaProductMediaRead[]required—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/products" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/products/{product_slug}

Update Product

Parameters
NameTypeInDescription
project_slugstringpathRequired.
product_slugstringpathRequired.
Request body · ProductUpdate
FieldTypeDescription
namestring (nullable)optional—
slugstring (nullable)optional—
product_typeProductType (nullable)optional—
short_descriptionstring (nullable)optional—
description_htmlstring (nullable)optional—
brandstring (nullable)optional—
specificationsobject (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
canonical_urlstring (nullable)optional—
og_image_file_idinteger (nullable)optional—
is_featuredboolean (nullable)optional—
category_idsstring[] (nullable)optional—
Response 200 · ProductRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
statusProductStatusrequired—
product_typeProductTyperequired—
short_descriptionstring (nullable)optional—
brandstring (nullable)optional—
specificationsobjectrequired—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
variantsProductVariantRead[]required—
categoriesProductCategoryAssignmentRead[]required—
mediaProductMediaRead[]required—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/products/{product_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "product_type": "…", "short_description": "…", "description_html": "…", "brand": "…" }'
POST/api/v1/storefront/projects/{project_slug}/products/{product_slug}/duplicate

Duplicate Product

Parameters
NameTypeInDescription
project_slugstringpathRequired.
product_slugstringpathRequired.
Response 201 · ProductRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
statusProductStatusrequired—
product_typeProductTyperequired—
short_descriptionstring (nullable)optional—
brandstring (nullable)optional—
specificationsobjectrequired—
is_featuredbooleanrequired—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
variantsProductVariantRead[]required—
categoriesProductCategoryAssignmentRead[]required—
mediaProductMediaRead[]required—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/products/{product_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"
POST/api/v1/storefront/projects/{project_slug}/services

Create Service

Parameters
NameTypeInDescription
project_slugstringpathRequired.
Request body · ServiceCreate
FieldTypeDescription
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
description_htmlstringrequired—
categorystring (nullable)optional—
pricing_typeServicePricingTypeoptional—
price_minorinteger (nullable)optional—
currencystring (nullable)optional—
duration_textstring (nullable)optional—
featured_media_idstring (nullable)optional—
cta_typeServiceCtaTypeoptional—
cta_labelstring (nullable)optional—
cta_urlstring (nullable)optional—
is_featuredbooleanoptional—
display_orderintegeroptional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
deliverablesServiceDeliverableWrite[]optional—
Response 201 · ServiceRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
categorystring (nullable)optional—
pricing_typeServicePricingTyperequired—
price_minorinteger (nullable)optional—
currencystring (nullable)optional—
statusServiceStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaServiceMediaRead (nullable)optional—
viewsintegeroptional—
enquiriesintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
duration_textstring (nullable)optional—
cta_typeServiceCtaTyperequired—
cta_labelstring (nullable)optional—
cta_urlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
deliverablesServiceDeliverableRead[]optional—
galleryServiceMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/services" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "description_html": "…" }'
PATCH/api/v1/storefront/projects/{project_slug}/services/{service_slug}

Update Service

Parameters
NameTypeInDescription
project_slugstringpathRequired.
service_slugstringpathRequired.
Request body · ServiceUpdate
FieldTypeDescription
namestring (nullable)optional—
slugstring (nullable)optional—
excerptstring (nullable)optional—
description_htmlstring (nullable)optional—
categorystring (nullable)optional—
pricing_typeServicePricingType (nullable)optional—
price_minorinteger (nullable)optional—
currencystring (nullable)optional—
duration_textstring (nullable)optional—
featured_media_idstring (nullable)optional—
cta_typeServiceCtaType (nullable)optional—
cta_labelstring (nullable)optional—
cta_urlstring (nullable)optional—
is_featuredboolean (nullable)optional—
display_orderinteger (nullable)optional—
seo_titlestring (nullable)optional—
seo_descriptionstring (nullable)optional—
deliverablesServiceDeliverableWrite[] (nullable)optional—
Response 200 · ServiceRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
categorystring (nullable)optional—
pricing_typeServicePricingTyperequired—
price_minorinteger (nullable)optional—
currencystring (nullable)optional—
statusServiceStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaServiceMediaRead (nullable)optional—
viewsintegeroptional—
enquiriesintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
duration_textstring (nullable)optional—
cta_typeServiceCtaTyperequired—
cta_labelstring (nullable)optional—
cta_urlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
deliverablesServiceDeliverableRead[]optional—
galleryServiceMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X PATCH "https://api.webtools.ng/api/v1/storefront/projects/your-project/services/{service_slug}" \
  -H "X-Project-Key: wt_pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "…", "slug": "…", "excerpt": "…", "description_html": "…", "category": "…", "pricing_type": "…" }'
POST/api/v1/storefront/projects/{project_slug}/services/{service_slug}/duplicate

Duplicate Service

Parameters
NameTypeInDescription
project_slugstringpathRequired.
service_slugstringpathRequired.
Response 201 · ServiceRead
FieldTypeDescription
idstringrequired—
project_idstringrequired—
namestringrequired—
slugstringrequired—
excerptstring (nullable)optional—
categorystring (nullable)optional—
pricing_typeServicePricingTyperequired—
price_minorinteger (nullable)optional—
currencystring (nullable)optional—
statusServiceStatusrequired—
is_featuredbooleanrequired—
display_orderintegerrequired—
featured_media_idstring (nullable)optional—
featured_mediaServiceMediaRead (nullable)optional—
viewsintegeroptional—
enquiriesintegeroptional—
published_atstring<date-time> (nullable)optional—
archived_atstring<date-time> (nullable)optional—
created_atstring<date-time>required—
updated_atstring<date-time>required—
description_htmlstringrequired—
duration_textstring (nullable)optional—
cta_typeServiceCtaTyperequired—
cta_labelstring (nullable)optional—
cta_urlstring (nullable)optional—
seoSeoReadrequiredNested SEO metadata for API read responses.
deliverablesServiceDeliverableRead[]optional—
galleryServiceMediaRead[]optional—
created_by_idstring (nullable)optional—
updated_by_idstring (nullable)optional—
Example request
curl -X POST "https://api.webtools.ng/api/v1/storefront/projects/your-project/services/{service_slug}/duplicate" \
  -H "X-Project-Key: wt_pk_your_key"

← All resource groups