Ghost · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Ghost Content and Admin Admin - Posts API

7 actions 7 updates phrasing extends openapi/ghost-org-admin-posts-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Ghost's API. It is a proposal applied on top of the contract, not a document Ghost publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 7

$.info
$.paths['/admin/posts/'].get
$.paths['/admin/posts/'].post
$.paths['/admin/posts/{id}/'].get
$.paths['/admin/posts/{id}/'].put
$.paths['/admin/posts/{id}/'].delete
$.paths['/admin/posts/slug/{slug}/'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Ghost Content and Admin Admin - Posts API
  version: 1.0.0
extends: openapi/ghost-org-admin-posts-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 6
- target: $.paths['/admin/posts/'].get
  update:
    x-apievangelist-phrasing:
      intent: List posts including drafts
      effect: read
      questions:
      - How do I list all my posts, including drafts and scheduled ones?
      - Can I sort posts by publish date and only return certain fields?
      - Which filters can narrow down my post list, like by tag or status?
      instructions:
      - text: List posts matching {filter}.
        slots:
          filter: query.filter
      - text: Show me {limit} posts ordered by {order}.
        slots:
          limit: query.limit
          order: query.order
      - text: List posts with {include} and only the {fields} fields.
        slots:
          include: query.include
          fields: query.fields
      method: generated
      generated: '2026-09-26'
- target: $.paths['/admin/posts/'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a post
      effect: write
      questions:
      - How do I create a new blog post through the Admin API?
      - Can I write the post content in HTML rather than Lexical?
      instructions:
      - text: Create a new post from {posts}.
        slots:
          posts: requestBody.posts
      - text: Create a draft post with {source} content.
        slots:
          source: query.source
      method: generated
      generated: '2026-09-26'
- target: $.paths['/admin/posts/{id}/'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a post by ID
      effect: read
      questions:
      - How do I get one post by its ID, even if it's unpublished?
      - Can I get a post's content back in HTML format?
      instructions:
      - text: Get post {id}.
        slots:
          id: path.id
      - text: Fetch post {id} with its content in {formats}.
        slots:
          id: path.id
          formats: query.formats
      method: generated
      generated: '2026-09-26'
- target: $.paths['/admin/posts/{id}/'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a post
      effect: write
      questions:
      - How do I edit a post that's already been created?
      - Why does updating a post need the current updated_at value?
      instructions:
      - text: Update post {id} with {posts}.
        slots:
          id: path.id
          posts: requestBody.posts
      - text: Edit post {id} and send the new body as {source}.
        slots:
          id: path.id
          source: query.source
      method: generated
      generated: '2026-09-26'
- target: $.paths['/admin/posts/{id}/'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a post
      effect: destructive
      questions:
      - How do I permanently remove a blog post?
      - Can I delete a post if I only know its ID?
      instructions:
      - text: Delete post {id}.
        slots:
          id: path.id
      - text: Remove post {id} from the blog.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/admin/posts/slug/{slug}/'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a post by its URL slug
      effect: read
      questions:
      - How do I find a post when I only know its URL slug?
      - Can I look up a post from the last part of its link?
      instructions:
      - text: Get the post with slug {slug}.
        slots:
          slug: path.slug
      - text: Look up post {slug} by its slug.
        slots:
          slug: path.slug
      method: generated
      generated: '2026-09-26'