Skip to content

Calendar

POST
/api/managing-entity/{managingEntityIdentifier}/social/post/calendar
curl --request POST \
--url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/social/post/calendar \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '{ "endDate": "2026-03-15T18:30:00Z", "startDate": "2026-03-15T18:30:00Z" }'

Returns the account’s posts falling within the requested date range for calendar display.

managingEntityIdentifier
required
string

Load calendar for this managing entity

Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

Date range for calendar view

Media typeapplication/json

Request to retrieve managed social posts within a specified date range for calendar display.

object
endDate
required

End date to filter calendar entries up to (ISO 8601 format)

string format: date-time
Example
2026-03-15T18:30:00Z
startDate
required

Start date to filter calendar entries from (ISO 8601 format)

string format: date-time
Example
2026-03-15T18:30:00Z
Example
{
"endDate": "2026-03-15T18:30:00Z",
"startDate": "2026-03-15T18:30:00Z"
}

List of managed social posts scheduled within the requested date range

Media typeapplication/json
Array<object>

Lightweight projection of a scheduled social media post, used by consumers outside the managed-social module.

object
createdDate

Datetime this record was first created

string | null format: date-time
customizationIdentifier
required

The post customization/template identifier used to create this post

string format: uuid
descriptions
required

A single entry array under most circumstances in the language the post was created for.

Array<object>

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
md5ContentHash

The md5 hash of the name, description and language.

string
name
required

Use as title or short text description

string
hashTags
Array<string>
id

Unique identifier for this record.

string format: uuid
lastUpdate

Datetime this record was last updated

string | null format: date-time
link

A link to go with the text

object
caption

Short caption typically showing the domain of the URL

string
description

Human-readable description of the link destination shown alongside the URL

string
url
required

The fully-qualified URL to link from the post

string format: uri
>= 1 characters
location

Optional geo-location

object
coordinates
Array<number>
type
string
x
number format: double
y
number format: double
metadata

Platform-specific metadata for this post

object
key
additional properties
multimedias
Array<object>

CDN image/media assets (most platforms support up to 10 images per post)

object
angle

Media angle

string
attribution

Whether image has attribution properties

Array<object>
object
name
required

Name of contributor

string
>= 1 characters
url

URL to contributor

string format: uri
category

Supported OTA specification PIC code. See OTA geoname data

string
descriptions

Localized media captions to give user some context about where this media was taken.

Array<object>

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
md5ContentHash

The md5 hash of the name, description and language.

string
name
required

Use as title or short text description

string
height
required

Media height in pixels.

integer format: int32
>= 1
identifier
required

Use this identifier to communicate with Cloudinary.

string
>= 1 characters
isLandscape

True if media width is greater or equal to height

boolean
lifestyleType

Associate this media with a specific lifestyle type. A user searching and filtering inventory based on lifestyles can be shown relevant media first.

string
Allowed values: LIFESTYLE_HEALTH_FITNESS LIFESTYLE_RELAX LIFESTYLE_ADULT_ONLY LIFESTYLE_ADVENTURE LIFESTYLE_BUSINESS LIFESTYLE_LGBT LIFESTYLE_SINGLE_PARENT LIFESTYLE_SOLO_FEMALE LIFESTYLE_BEAUTY LIFESTYLE_FOODIE LIFESTYLE_FAMILY LIFESTYLE_ROMANCE LIFESTYLE_COUPLE LIFESTYLE_SOLO LIFESTYLE_BACKPACKER LIFESTYLE_SHOPPING LIFESTYLE_SPORTS LIFESTYLE_MOUNTAIN LIFESTYLE_BEACH LIFESTYLE_CITY LIFESTYLE_COUNTRY LIFESTYLE_CULTURE LIFESTYLE_ECO
multimediaIdentifier
required

Document identifier

string format: uuid
>= 1 characters
published

Instead of deleting the media, choose to un-publish it instead for later re-use. Could be you keep seasonal images of the property.

boolean
sort
required

Sort allows you to control how you want to sort this record in a list of media records.

integer format: int32
default: 999
source
required

Currently ONLY using Cloudinary to store all image / video assets.

string
default: CLOUDINARY
Allowed values: YOUTUBE CLOUDINARY
type
required

Whether Cloudinary media is a VIDEO or IMAGE.

string
Allowed values: IMAGE VIDEO AUDIO RAW
width
required

Media width in pixels.

integer format: int32
>= 1
ownerIdentifier
required

The managing entity this post belongs to

string format: uuid
platform
required

Which platform to post to.

string
Allowed values: WINK_LINKS FACEBOOK INSTAGRAM
postType
required

The structural intent of this post.

string
Allowed values: TRANSACTIONAL AWARENESS SENTIMENT
scheduledDate
required

Exact date and time when the post will be published (ISO 8601 format)

string format: date-time
status
required

Status of post.

string
Allowed values: DRAFT PENDING_APPROVAL APPROVED REJECTED PAUSED PUBLISHED FAILED
statusText

Human-readable status explanation (typically used for error messages)

string
timezone
required

IANA timezone identifier (e.g. Asia/Bangkok, America/New_York)

string
toneOfVoice
required

The language style used for this post.

string
Allowed values: NEUTRAL FRIENDLY LUXURY FOODIE ADVENTUROUS FAMILY ROMANTIC HUMOROUS ECO LOCAL_INSIDER INCLUSIVE BUDGET
type
required

Type of post.

string
Allowed values: MANUAL TRANSACTIONAL AWARENESS SENTIMENT
userIdentifier
required

The user ID that owns the account

string format: uuid
userTags
Array<string>
version

Optimistic-locking version. Echo this value back as an If-Match request header on a conditional update; the server responds 409 if the record changed in the meantime. Null when this projection has no backing versioned document, in which case no conditional update is possible.

integer | null format: int64
Example
[
{
"customizationIdentifier": "d7e1b4f6-2c8a-4d2b-8f3e-6d9c7b2a0e5f",
"descriptions": [
{
"description": "Experience luxury living in the heart of Bangkok.",
"language": "en",
"name": "Discover The Siam Residences"
}
],
"hashTags": [
"#ThailandTravel"
],
"id": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51",
"ownerIdentifier": "d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69",
"platform": "FACEBOOK",
"postType": "TRANSACTIONAL",
"scheduledDate": "2026-03-15T18:30:00Z",
"status": "APPROVED",
"timezone": "Asia/Bangkok",
"toneOfVoice": "NEUTRAL",
"type": "MANUAL",
"userIdentifier": "d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69",
"userTags": [
"@luxurytravel"
]
}
]

Bad Request — missing or invalid request parameter or body

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unauthorized — authentication is required or the session has expired

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Forbidden — authenticated but lacking the required permission or scope

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Not Found — the requested resource does not exist

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Method Not Allowed — the HTTP verb is not supported on this endpoint

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unsupported Media Type — use application/json

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Internal Server Error — an unexpected failure occurred on the server

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Service Unavailable — a downstream dependency is unreachable

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}