pub struct PostCreate {Show 28 fields
pub title: String,
pub lexical: Option<String>,
pub html: Option<String>,
pub custom_excerpt: Option<String>,
pub slug: Option<String>,
pub status: Option<PostStatus>,
pub visibility: Option<String>,
pub email_only: Option<bool>,
pub featured: Option<bool>,
pub published_at: Option<String>,
pub feature_image: Option<String>,
pub feature_image_alt: Option<String>,
pub feature_image_caption: Option<String>,
pub tags: Option<Vec<TagRef>>,
pub authors: Option<Vec<AuthorRef>>,
pub newsletter: Option<String>,
pub meta_title: Option<String>,
pub meta_description: Option<String>,
pub canonical_url: Option<String>,
pub og_image: Option<String>,
pub og_title: Option<String>,
pub og_description: Option<String>,
pub twitter_image: Option<String>,
pub twitter_title: Option<String>,
pub twitter_description: Option<String>,
pub codeinjection_head: Option<String>,
pub codeinjection_foot: Option<String>,
pub custom_template: Option<String>,
}Expand description
Input model for creating a new Ghost post via POST /ghost/api/admin/posts/.
Only title is required by Ghost; every other field is optional and omitted
from the JSON payload when not set (via #[serde(skip_serializing_if)]).
Wrap this in a PostCreateEnvelope before sending to the API.
§Example
use ghost_io_api::models::post::{PostCreate, PostStatus, TagRef};
let post = PostCreate {
title: "Hello, Ghost!".to_string(),
status: Some(PostStatus::Published),
tags: Some(vec![TagRef::by_slug("rust")]),
..Default::default()
};
assert_eq!(post.title, "Hello, Ghost!");
assert_eq!(post.status, Some(PostStatus::Published));Fields§
§title: StringPost title (required).
lexical: Option<String>Rich text content in Lexical JSON format (Ghost 6+).
html: Option<String>HTML content (alternative to lexical for simpler content).
custom_excerpt: Option<String>Custom excerpt shown in post listings (overrides auto-generated).
slug: Option<String>URL slug (auto-generated from title if not set).
status: Option<PostStatus>Publication status. Defaults to Draft when omitted.
visibility: Option<String>Visibility of the post: "public", "members", "paid", or "tiers".
email_only: Option<bool>If true, the post is delivered as email only (no web post).
featured: Option<bool>If true, the post is highlighted in the portal.
published_at: Option<String>ISO 8601 publication timestamp. Required when status is "scheduled".
feature_image: Option<String>URL to the feature image.
feature_image_alt: Option<String>Alt text for the feature image (accessibility).
feature_image_caption: Option<String>Caption displayed beneath the feature image.
Tags to associate with the post. Ghost resolves by slug or creates by name.
Authors to attribute the post to. Resolves by id or email.
Slug of the newsletter to associate this post with.
meta_title: Option<String>Custom <title> tag content for SEO.
meta_description: Option<String>Custom <meta name="description"> content for SEO.
canonical_url: Option<String>Canonical URL override for SEO (prevents duplicate-content penalties).
og_image: Option<String>Custom Open Graph image URL.
og_title: Option<String>Custom Open Graph title.
og_description: Option<String>Custom Open Graph description.
twitter_image: Option<String>Custom Twitter Card image URL.
twitter_title: Option<String>Custom Twitter Card title.
twitter_description: Option<String>Custom Twitter Card description.
codeinjection_head: Option<String>Custom HTML injected into <head> for this post.
codeinjection_foot: Option<String>Custom HTML injected before </body> for this post.
custom_template: Option<String>Custom theme template name to use when rendering this post.
Implementations§
Source§impl PostCreate
impl PostCreate
Sourcepub fn new(title: impl Into<String>) -> Self
pub fn new(title: impl Into<String>) -> Self
Creates a minimal PostCreate with only the required title.
All other fields default to None and will be omitted from the
serialised JSON, letting Ghost apply its own defaults.
§Example
use ghost_io_api::models::post::PostCreate;
let post = PostCreate::new("Hello, World!");
assert_eq!(post.title, "Hello, World!");
assert!(post.status.is_none());
assert!(post.tags.is_none());Trait Implementations§
Source§impl Clone for PostCreate
impl Clone for PostCreate
Source§fn clone(&self) -> PostCreate
fn clone(&self) -> PostCreate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PostCreate
impl Debug for PostCreate
Source§impl Default for PostCreate
impl Default for PostCreate
Source§fn default() -> PostCreate
fn default() -> PostCreate
Source§impl<'de> Deserialize<'de> for PostCreate
impl<'de> Deserialize<'de> for PostCreate
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for PostCreate
Source§impl PartialEq for PostCreate
impl PartialEq for PostCreate
Source§fn eq(&self, other: &PostCreate) -> bool
fn eq(&self, other: &PostCreate) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for PostCreate
impl Serialize for PostCreate
impl StructuralPartialEq for PostCreate
Auto Trait Implementations§
impl Freeze for PostCreate
impl RefUnwindSafe for PostCreate
impl Send for PostCreate
impl Sync for PostCreate
impl Unpin for PostCreate
impl UnsafeUnpin for PostCreate
impl UnwindSafe for PostCreate
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.