Introduction

Maya Wealth Marketing API

Overview

Private Worker for Maya Wealth marketing sites. Reached through site service bindings, not the public gateway.

Queues SEO blog articles per organisation (caller or X-Maya-Organization-Id) using the org brand profile plus blog catalog (or legacy bundled category slugs).

Error body: { error: { code, message, details?, request_id? } }.

Integration guide: Maya Wealth Marketing service docs

OpenAPI v0.1.0 · source openapi/marketing.json

OpenAPI 3.0.0 · v0.1.0 · 14 operations

Operations

System

Liveness and generated documentation.

get/health

Health check

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/health"

Operation ID: getHealth

Responses

  • 200

    Service is running

    application/json

get/v1/health

Health check (versioned)

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/health"

Operation ID: getHealthV1

Responses

  • 200

    Service is running

    application/json

Brand

Per-organisation voice and constraints for AI generation.

get/v1/brand

Get organisation generation brand profile

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/brand"

Voice, audience, constraints, and image style used with the blog catalog when generating articles and hero images. Created with sensible defaults on first read.

Operation ID: getOrgBrand

Responses

  • 200

    Brand profile

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

patch/v1/brand

Update organisation generation brand profile

Example request

curl -sS \
  -X PATCH \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  "https://api.mayawealth.co.uk/marketing/v1/brand"

Operation ID: updateOrgBrand

Request body

  • application/jsonOrgBrandPatch

Responses

  • 200

    Updated brand profile

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

Catalog

Per-organisation blog category definitions used to build SEO generation context.

get/v1/blog-catalog-types

List blog catalog types

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blog-catalog-types"

Organisation-defined blog categories used to build generation context for `POST /v1/blogs`. Each site maintains its own catalog so articles match that brand's topics and SEO rules.

Operation ID: listBlogCatalogTypes

Parameters

NameInTypeDescription
pagequeryinteger—
page_sizequeryinteger—

Responses

  • 200

    Blog catalog types

    application/json

post/v1/blog-catalog-types

Create blog catalog type

Example request

curl -sS \
  -X POST \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  "https://api.mayawealth.co.uk/marketing/v1/blog-catalog-types"

Defines a blog category (server-assigned UUID `id`). Queue generation with `catalog_id` set to that id.

Operation ID: createBlogCatalogType

Request body(required)

  • application/jsonBlogCatalogTypeCreate

Responses

  • 201

    Blog catalog type created

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

get/v1/blog-catalog-types/{id}

Get blog catalog type

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blog-catalog-types/example-id"

Operation ID: getBlogCatalogType

Parameters

NameInTypeDescription
id*pathstring (uuid)—

Responses

  • 200

    Blog catalog type

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

patch/v1/blog-catalog-types/{id}

Update blog catalog type

Example request

curl -sS \
  -X PATCH \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  "https://api.mayawealth.co.uk/marketing/v1/blog-catalog-types/example-id"

Operation ID: updateBlogCatalogType

Parameters

NameInTypeDescription
id*pathstring (uuid)—

Request body(required)

  • application/jsonBlogCatalogTypePatch

Responses

  • 200

    Blog catalog type updated

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

delete/v1/blog-catalog-types/{id}

Delete blog catalog type

Example request

curl -sS \
  -X DELETE \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blog-catalog-types/example-id"

Operation ID: deleteBlogCatalogType

Parameters

NameInTypeDescription
id*pathstring (uuid)—

Responses

  • 200

    Deleted

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

Audit

Marketing generation activity log.

get/v1/audit

Marketing audit trail

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/audit"

Operation ID: listMarketingAudit

Responses

  • 200

    Audit events

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

Blogs

Blog generation and published articles.

get/v1/blogs

List published blogs

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blogs"

Operation ID: listBlogs

Parameters

NameInTypeDescription
catalog_idquerystring—
category_idquerystringUse `catalog_id`.
limitqueryinteger—

Responses

  • 200

    Published blogs

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

post/v1/blogs

Queue an SEO blog article

Example request

curl -sS \
  -X POST \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  "https://api.mayawealth.co.uk/marketing/v1/blogs"

Queues SEO article generation from the org brand profile plus `catalog_id` (catalog UUID) or explicit category `context`. Non-UUID slugs resolve legacy bundled blog-types when no catalog row exists. Tenancy: `X-Maya-Caller` / `CF-Worker`, or `X-Maya-Organization-Id`.

Operation ID: createBlog

Request body

  • application/jsonCreateBlogRequest

Responses

  • 202

    Blog queued

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 409

    Conflict with the current resource state.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

get/v1/blogs/{slug}

Get a published blog

Example request

curl -sS \
  -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blogs/example-id"

Operation ID: getBlog

Parameters

NameInTypeDescription
slug*pathstring—

Responses

  • 200

    Blog

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json

post/v1/blogs/{slug}/image

Queue a hero image for a published blog

Example request

curl -sS \
  -X POST \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <jwt>" \
  "https://api.mayawealth.co.uk/marketing/v1/blogs/example-id/image"

Operation ID: createBlogImage

Parameters

NameInTypeDescription
slug*pathstring—

Responses

  • 200

    Image ready

    application/json

  • 202

    Image queued

    application/json

  • 403

    Caller is not a Maya marketing site service binding.

    application/json

  • 404

    The requested resource was not found.

    application/json

  • 422

    Validation failed.

    application/json

  • 429

    Rate limit exceeded.

    application/json

  • 500

    Unexpected server error.

    application/json