Skip to content

Generate

POST
/api/managing-entity/{managingEntityIdentifier}/extranet/report/csv
curl --request POST \
--url https://api.wink.travel/api/managing-entity/e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18/extranet/report/csv \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '{ "fieldNames": [ { "title": "Property Name", "valuePath": "hotel.name" } ], "reportDataType": "BOOKING", "reportName": "booking-summary", "state": { "filter": { "filters": [ { "field": "hotel.name", "ignoreCase": true, "operator": "startsWith", "value": "Happy Res" } ], "logic": "and" }, "group": [ { "aggregates": [ { "aggregate": "count", "field": "hotel.bookings" } ], "dir": "asc", "field": "createdDate" } ], "skip": 0, "sort": [ { "dir": "asc", "field": "hotel.name" } ], "take": 10 } }'

Generates a CSV report filtered to show only bookings associated with the specified property. The report excludes failed bookings and shows inventory-specific metrics.

managingEntityIdentifier
required
string format: uuid

Unique identifier for the property (hotel) managing entity

Example

e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

Report query specifying the data sources, filters, date range, and output columns for the property bookings CSV report

Media typeapplication/json

Request payload that defines what data to export and how to format it as a CSV report

object
fieldNames
required

List of field definitions specifying which data fields to include and their display titles

Array<object>
>= 1 items

Defines a single column in a generated report, mapping a display title to a JSON field path in the data object

object
title
required

Display name for the report column

string
>= 1 characters

Example

Property Name
valuePath
required

JSON path to the field in the data object (dot-notation)

string
>= 1 characters

Example

hotel.name

Example

{
"title": "Property Name",
"valuePath": "hotel.name"
}
reportDataType
required

Type of data source to query from: PROPERTY (hotel inventory), USER (guest profiles), BOOKING (reservations), ACCOUNT (managing entity data)

string
Allowed values: PROPERTY USER BOOKING ACCOUNT

Example

BOOKING
reportName
required

Name of the report for the generated CSV file

string
>= 1 characters

Example

booking-summary
state
required

Query state with sorting, filtering, and pagination criteria to retrieve the report data

object
filter

Descriptors used for filtering result set

object
filters

Descriptors used for filtering the result set

Array<object>

A single field-level filter criterion that specifies what to match and how to compare it.

object
field
required

Field name to filter on

string
>= 1 characters

Example

hotel.name
ignoreCase

Make filter comparison case insensitive. Default: Case sensitive

boolean

Example

true
operator
required

Filter operator to use on field

string
Allowed values: neq eq contains doesnotcontain isnull isnotnull isempty isnotempty startswith endswith gte lte gt lt in nin

Example

startsWith
value

Value to filter dataset against

Example

Happy Res

Example

{
"field": "hotel.name",
"ignoreCase": true,
"operator": "startsWith",
"value": "Happy Res"
}
logic

Whether to filter inclusively or exclusively

string
Allowed values: and or

Example

and

Example

{
"filters": [
{
"field": "hotel.name",
"ignoreCase": true,
"operator": "startsWith",
"value": "Happy Res"
}
],
"logic": "and"
}
group

Descriptors to group result sets by.

Array<object>

Descriptor that defines how a result set should be grouped, including sort direction and optional aggregate calculations.

object
aggregates

Primitive aggregate data points

Array<object>

Descriptor that defines an aggregate function to apply to a specific field in a grouped result set.

object
aggregate

Aggregate function

string
Allowed values: count sum average min max

Example

count
field

Field to run aggregate function on

string

Example

hotel.bookings

Example

{
"aggregate": "count",
"field": "hotel.bookings"
}
dir

Group sort direction

string
Allowed values: asc desc

Example

asc
field

Field to group data set on

string

Example

createdDate

Example

{
"aggregates": [
{
"aggregate": "count",
"field": "hotel.bookings"
}
],
"dir": "asc",
"field": "createdDate"
}
skip

Number of records to be skipped by the pager.

integer format: int32
0

Example

0
sort

Descriptors used for sorting result set.

Array<object>

Descriptor that defines the sort direction and field for ordering a result set.

object
dir

Descriptors used for sorting result set

string
Allowed values: asc desc

Example

asc
field

Data set field to sort on

string

Example

hotel.name

Example

{
"dir": "asc",
"field": "hotel.name"
}
take

Number of records to take.

integer format: int32
default: 30 >= 1 <= 180

Example

10

Example

{
"filter": {
"filters": [
{
"field": "hotel.name",
"ignoreCase": true,
"operator": "startsWith",
"value": "Happy Res"
}
],
"logic": "and"
},
"group": [
{
"aggregates": [
{
"aggregate": "count",
"field": "hotel.bookings"
}
],
"dir": "asc",
"field": "createdDate"
}
],
"skip": 0,
"sort": [
{
"dir": "asc",
"field": "hotel.name"
}
],
"take": 10
}

Example

{
"fieldNames": [
{
"title": "Property Name",
"valuePath": "hotel.name"
}
],
"reportDataType": "BOOKING",
"reportName": "booking-summary",
"state": {
"filter": {
"filters": [
{
"field": "hotel.name",
"ignoreCase": true,
"operator": "startsWith",
"value": "Happy Res"
}
],
"logic": "and"
},
"group": [
{
"aggregates": [
{
"aggregate": "count",
"field": "hotel.bookings"
}
],
"dir": "asc",
"field": "createdDate"
}
],
"skip": 0,
"sort": [
{
"dir": "asc",
"field": "hotel.name"
}
],
"take": 10
}
}

CSV report generated successfully and returned as a file download

Media typetext/csv
string format: binary

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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}