Get or Partially Update Publication by URL (Single POST Hybrid)

View as Markdown
Hybrid endpoint using POST due to mixin requirements. Behavior: If the request body ONLY contains 'url', the publication is retrieved (GET semantics). If additional writable fields are present alongside 'url', a partial update (PATCH semantics) is performed. Update permissions mirror `PublicationDetailView` (publication/workspace ACL). Only allowed for authorized roles/owners. Fields ignored for update: 'url' (used solely for lookup).

Request

This endpoint expects an object.
urlstringRequired

Publication custom URL (lookup key).

namestringOptional

(Optional) New name for publication.

descriptionstringOptional

(Optional) Description update.

visibilitystringOptional

(Optional) Visibility.

allow_bookingsbooleanOptional

(Optional) Toggle bookings.

custom_urlstringOptional

(Optional) Update custom URL (suffix rules apply).

Response

Publication retrieved or updated successfully.
idintegerRead-only
ownerstringRead-only

Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.

owner_namestringRead-only
owner_detailsobject
Minimal user serializer for use in PublicationSerializers owner details field
custom_urlstring<=255 characters
custom_url_last_updateddatetimeRead-only
next_custom_url_updatestringRead-only
highlighted_blogmap from strings to any or nullRead-only
creator_cal_usernamestring or nullRead-only

Get the Cal.com username of the publication owner if they have Cal.com integration enabled, otherwise return None. Now prioritizes the cal_username field populated by sync command.

experiences_countintegerRead-only

Get the total count of published experiences for this publication.

Uses centralized ExperienceCountingService for consistency. Only counts experiences with is_draft=False and primary_deployed_resource_id set.

experiences_by_typemap from strings to integersRead-only

Get the count of published experiences by type for this publication.

Uses centralized ExperienceCountingService for consistency. Returns a dictionary with experience type as key and count as value. Only counts experiences with is_draft=False and primary_deployed_resource_id set.

Output Sample: { “AI_EXPERT”: 5, “AI_NOTE”: 10, “QUEST”: 3, “PODCAST”: 2 }

workspace_idintegerRead-only
subscribedbooleanRead-only
logged_in_user_is_cocreatorbooleanRead-only
themestringRead-only
subscribers_countintegerRead-only
uidstringRead-onlyformat: "uuid"
created_atdatetimeRead-only
updated_atdatetimeRead-only
deleted_atdatetime or nullRead-only
namestring<=255 characters
workspaceinteger or nullRead-only

Workspace (DGM Group) this publication belongs to. Null for legacy publications.

is_activeboolean
created_bystring or null<=255 characters
updated_bystring or null<=255 characters
deleted_bystring or null<=255 characters
descriptionstring
cover_imagestring or nullformat: "uri"
allow_bookingsboolean
visibilityenum
* `public` - Public * `private` - Private * `team` - Team * `org` - Organization
Allowed values:
is_defaultboolean
Whether this is the user's default publication
is_premiumboolean
Whether this is a premium publication
is_verifiedboolean
Whether this publication has been verified
tagslist of integers

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error