Download OpenAPI specification:
This is the 2.0 version of the Cobot API. You can find version 1.0 as well as various tutorials under /api-docs.
This API follows the JSON API standard. This means:
Accept: application/vnd.api+json headerContent-Type: application/vnd.api+json headerContent-Type: application/vnd.api+json headerAll endpoints send CORS headers so that the API can be used from within browsers.
In general, the rate limit for an endpoint is 60 requests per minute per user. If applicable, alternative limits are given in the documentation for particular endpoints.
If you've exceeded the limit, Cobot will return a 429 status code and a JSON error message. The response will also contain a Retry-After header, this denotes the number of seconds to wait before your client may retry.
Times and Dates must be in ISO 8601 formats. e.g. date: 2021-01-07, datetime: 2021-01-07T16:25:51Z, time: 16:25:51.
Millisecond are ommited, so 16:25:51.811 will become 16:25:51.
Time zone offsets must be provided by the client, e.g. 16:25:51+02:00 or '16:25:51Z' for UTC.
Times are always returned in UTC.
This API supports sparse fieldsets, so clients can request which attributes they are interested in.
Example:
GET https://api.cobot.me/user?fields[users]=email
This will only return the user's email.
When passing query params, arrays of data are expected to be sent as a string of comma separated values.
All collections are paginated. Pagination follows JSON-API standards.
Example:
{
"meta": {
"totalPages": 2,
"currentPage": 1
},
"data": [{
"id": "1",
"type": "users",
}],
"links": {
"self": "/users?page[size]=100&page[number]=1",
"first": "/users?page[size]=100&page[number]=1",
"prev": null,
"next": "/users?page[size]=100&page[number]=2",
"last": "/users?page[size]=100&page[number]=1"
}
}
Default page size is 72 and can be changed by passing a page[size] parameter. Maximum page size is 200.
When a client sends invalid data in a request, Cobot returns a 422 status code and a JSON-API error response.
Example:
{
"errors": [
{
"source": {
"pointer": "/data/attributes/name"
},
"detail": "can't be blank"
},
{
"source": {
"pointer": "/data/attributes/password"
},
"detail": "is too short"
}
]
}
List the terms that have not yet been approved by the current user's membership in the given space.
| spaceId required | string The id of a space the current user is a member of. |
{- "data": {
- "id": "null",
- "type": "approvals",
- "attributes": {
- "types": [
- "custom_type",
- "space_privacy"
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}Approve terms for membership in a space.
Approval to be created for a membership in a space.
required | object |
{- "data": {
- "type": "approvals",
- "attributes": {
- "types": [
- "space_terms",
- "custom_type",
- "space_privacy"
], - "ipAddress": "123.123.123.123"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "d9a99a71ac8df98d29de357180d273d3",
- "type": "approvals",
- "attributes": {
- "types": [
- "custom_type",
- "space_privacy"
], - "ipAddress": "123.123.123.123"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}Access: The current user must be an admin or member of the space the article belongs to. If the space is part of a network, the user must be an admin or member of any space in the network.
| id required | string The id of the article. |
{- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "articles",
- "attributes": {
- "title": "How to print",
- "content": "<p>First, grab a cup of coffee...</p>"
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Access: The current user must be an admin or member of the space the article belongs to. If the space is part of a network, the user must be an admin or member of any space in the network.
| spaceId required | string The id of the space the bookings belong to. |
{- "data": [
- {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "articles",
- "attributes": {
- "title": "How to print",
- "content": "<p>First, grab a cup of coffee...</p>"
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}Show a single resource allocation.
Access: The current user must be an admin of the space the allocation belongs to.
| id required | string The id of the allocation. |
{- "data": {
- "id": "a8f21a71ac8df98d29de357180d27358",
- "type": "allocations",
- "attributes": {
- "startsAt": "2018-01-01",
- "canceledTo": "2018-12-31",
- "cycleDuration": 1,
- "minimumCommitment": 0,
- "recurringMinimumCommitment": false,
- "cancellationPeriod": 30,
- "pricePerCycle": {
- "$ref": "../examples/price.yml"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "allocatee": {
- "data": {
- "id": "f11h2a71ac8df98d29de357180d273a3",
- "type": "memberships"
}
}
}
}
}List resource allocations for a space that overlap the given date range (inclusive).
An allocation is included if its period intersects filter[from] through filter[to]
as calendar dates.
Access: The current user must be an admin of the space (or of another space in the same network). Members cannot use this endpoint.
| spaceId required | string The id of the space the allocations belong to. |
| filter[from] required | string <date> Example: filter[from]=2018-01-01 Start of the date range (inclusive). |
| filter[to] required | string <date> Example: filter[to]=2018-12-31 End of the date range (inclusive). |
| include | Array of strings Items Value: "allocatee" Related resources to include. |
{- "data": [
- {
- "id": "a8f21a71ac8df98d29de357180d27358",
- "type": "allocations",
- "attributes": {
- "startsAt": "2018-01-01",
- "canceledTo": "2018-12-31",
- "cycleDuration": 1,
- "minimumCommitment": 0,
- "recurringMinimumCommitment": false,
- "cancellationPeriod": 30,
- "pricePerCycle": {
- "$ref": "../examples/price.yml"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "allocatee": {
- "data": {
- "id": "f11h2a71ac8df98d29de357180d273a3",
- "type": "memberships"
}
}
}
}
]
}Create booking as an admin. Optionally a booking can be assigned to a membership.
Access: The current user must be an admin of the space. If the space is part of a network, the user must be an admin of any space in the network.
Booking to be created
required | object |
{- "data": {
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "units": 1,
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop",
- "attendees": [
- {
- "email": "attendee@example.com"
}
], - "customPrice": {
- "net": "12.00"
}
}, - "relationships": {
- "resource": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "units": 1,
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop",
- "attendees": [
- {
- "email": "attendee@example.com"
}
], - "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "canUpdate": true,
- "cancellationPeriod": 0
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
}List all the recurring bookings belonging to a booking with recurrence.
The data returned by this endpoint is only eventually consistent.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| recurringId required | string The id of the recurrence. |
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "meeting",
- "comments": "nil",
- "attendees": [ ],
- "price": {
- "$ref": "../examples/price.yml"
}, - "canUpdate": true,
- "units": 1,
- "cancellationPeriod": 0,
- "recurrence": {
- "rule": {
- "frequency": "weekly",
- "interval": 1,
- "from": "2018-01-01",
- "until": "2018-01-22",
- "weekdays": null,
- "count": null
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "f11h2a71ac8df98d29de357180d273a3",
- "type": "memberships"
}
}, - "recurringBookings": {
- "links": {
- "related": "/recurring_bookings/a3281b61ac8df98d29de357180d212e4"
}
}, - "followingRecurringBookings": {
- "links": {
- "related": "/bookings/b8f21a71ac8df98d29de357180d27358/following"
}
}, - "externalBooking": {
- "data": null
}
}
}
], - "meta": {
- "consistent": true,
- "totalPages": 1,
- "currentPage": 1
}
}Delete a recurring booking and all the following instances.
Access: The current user must be an admin of the space or the member who made the booking.
| bookingId required | string The id of the booking to delete. |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "meeting",
- "comments": "nil",
- "attendees": [ ],
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "units": 1,
- "recurrence": {
- "rule": {
- "frequency": "weekly",
- "interval": 1,
- "from": "2018-01-01",
- "until": "2018-01-22",
- "count": null,
- "weekdays": null
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "f11h2a71ac8df98d29de357180d273a3",
- "type": "memberships"
}
}, - "recurringBookings": {
- "links": {
- "related": "/recurring_bookings/a3281b61ac8df98d29de357180d212e4"
}
}, - "followingRecurringBookings": {
- "links": {
- "related": "/bookings/b8f21a71ac8df98d29de357180d27358/following"
}
}, - "externalBooking": {
- "data": null
}
}
}
}Return all booking previews for given resources for a membership in the given time range.
Access: The current user must be the owner of the membership the booking belongs to or an admin of the space or network.
The time range and resource ids list.
required | object |
{- "data": {
- "type": "bookingPreviews",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}, - "relationships": {
- "booking": {
- "data": {
- "id": "42ac6cb66b5ebb30007290854fd46ae0",
- "type": "bookings"
}
}, - "resources": {
- "data": [
- {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "resources"
}
]
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookingPreviews",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "appliedDiscounts": [
- {
- "pricePerHour": {
- "net": "6.0",
- "gross": "6.6",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.6",
- "name": "VAT"
}
]
}, - "minimumDuration": {
- "hours": 1,
- "minutes": 0
}
}
], - "appliedFixedRates": [
- {
- "maximumDuration": {
- "hours": 2,
- "minutes": 0
}, - "price": "10.0",
- "count": 2
}
], - "appliedPriceCap": {
- "maximumDuration": {
- "hours": 2,
- "minutes": 0
}
}, - "attendees": [ ],
- "title": "meeting",
- "comments": null,
- "price": {
- "$ref": "../examples/price.yml"
}, - "estimatedPayablePrice": {
- "$ref": "../examples/price.yml"
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "bookingExtras": [ ],
- "bookingCredits": {
- "estimatedMinutesUsed": 30,
- "estimatedAmountUsed": {
- "$ref": "../examples/price.yml"
}
}, - "bookingPasses": {
- "estimatedMinutesUsed": 60
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "b5a99a71ac8df98d2gn8380d273d3",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
]
}Access: The current user must either be an admin or a member of a space or the space's network. A member can only delete their own bookings and additionally only those that are not in the past.
| id required | string The id of the booking to be deleted. |
Access: The current user must be an admin or member of the space the booking belongs to. If the space is part of a network, the user must be an admin or member of any space in the network.
| id required | string The id of the booking. |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "units": 1,
- "title": "meeting",
- "name": "joe",
- "comments": "nil",
- "attendeesMessage": null,
- "attendees": [
- {
- "email": "attendee@example.com"
}
], - "hasCustomPrice": false,
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "bookingCredits": {
- "estimatedMinutesUsed": 30
}, - "bookingPasses": {
- "estimatedMinutesUsed": 60
}, - "estimatedPayablePrice": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "externalBooking": {
- "data": null
}
}
}
}Access: The current user must either be an admin or a member of a space or the space's network. A member can only update their own bookings and additionally only those that are not in the past.
| id required | string The id of the booking to be updated. |
Booking to be updated
required | object |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "units": 1,
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop",
- "attendees": [
- {
- "email": "attendee@example.com"
}
], - "updateFollowing": true
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "units": 1,
- "name": "joe",
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop",
- "attendees": [
- {
- "email": "attendee@example.com"
}
], - "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "estimatedPayablePrice": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "bookingExtras": [ ]
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
}List all bookings of the membership in the given time range. If the membership's space belongs to a network, this includes bookings from all spaces in the network.
Access: The current user must be the owner of the membership or an admin in the space the membership belongs to.
| membershipId required | string The id of the membership the bookings belong to. |
| filter[from] required | string <date-time> Example: filter[from]=2012-04-12T10:00:00Z Start of the time range. |
| filter[to] required | string <date-time> Example: filter[to]=2012-04-12T18:00:00Z End of the time range. |
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "meeting",
- "comments": null,
- "attendeesMessage": null,
- "attendees": [ ],
- "price": {
- "$ref": "../examples/price.yml"
}, - "estimatedPayablePrice": {
- "$ref": "../examples/price.yml"
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "units": 1
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "b5a99a71ac8df98d2gn8380d273d3",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
]
}Create booking for the membership. Access: The current user must be a member of the space. If the space is part of a network, the user must be a member of any space in the network.
| membershipId required | string The id of the membership the bookings belong to. |
Booking to be created
required | object |
{- "data": {
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop"
}, - "relationships": {
- "resource": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "team meeting",
- "comments": "there is going to be coffe and cake",
- "attendeesMessage": "Please bring your laptop",
- "attendees": [ ],
- "price": {
- "net": "0.0",
- "gross": "0.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "0.0",
- "name": "Tax"
}
]
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "units": 1
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
}List all the bookings for a space in the given time.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| spaceId required | string The id of the space the bookings belong to. |
| filter[from] required | string <date-time> Example: filter[from]=2012-04-12T10:00:00Z Start of the time range. |
| filter[to] required | string <date-time> Example: filter[to]=2012-04-12T18:00:00Z End of the time range. |
| include | Array of strings Items Enum: "membership" "event" "externalBooking" List of related resources to include in response. Provide a comma separated list of relationship names. When requesting events, the access token needs the read_events scope. When requesting external bookings, the access token needs the read_external_bookings scope. |
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "meeting",
- "comments": null,
- "attendees": [ ],
- "price": {
- "$ref": "../examples/price.yml"
}, - "estimatedPayablePrice": {
- "$ref": "../examples/price.yml"
}, - "canUpdate": true,
- "cancellationPeriod": 0,
- "units": 1
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "membership": {
- "data": {
- "id": "f11h2a71ac8df98d29de357180d273a3",
- "type": "memberships"
}
}, - "externalBooking": {
- "data": null
}
}
}
]
}Booking credits are added to plans and give memberships free booking time or a fixed amount of free bookings. The hourly rate of a resource can also be customized.
List the total and remaing booking credits for a membership and each resource.
Access: The current user must be the owner of the membership or an admin in the space the membership belongs to.
| membershipId required | string The id of the membership the booking credits belong to. |
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "bookingCredits",
- "attributes": {
- "totalHours": "10.0",
- "totalAmount": {
- "net": "50.0",
- "gross": "55.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "5.0"
}
]
}, - "hoursRemaining": "8.5",
- "amountRemaining": {
- "net": "50.0",
- "gross": "55.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "5.0"
}
]
}, - "pricePerHour": {
- "net": "15.0",
- "gross": "16.5",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "1.5"
}
]
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}, - "membership": {
- "data": {
- "id": "b5a99a71ac8df98d2gn8380d273d3",
- "type": "memberships"
}
}
}
}
]
}List all email customizations for built-in emails for a space, including used placeholders.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space to get the email customizations for. |
{- "data": [
- {
- "id": "email-customization-space-demo-membership_confirmation_email",
- "type": "builtInEmailCustomizations",
- "attributes": {
- "name": "Membership confirmation",
- "key": "membership_confirmation_email",
- "description": "This email gets sent after confirming a new member.",
- "subject": "Membership Confirmation for {{space}}",
- "subjectPlaceholders": {
- "space": "Demo Space"
}, - "body": "<p>Hi {{first_name}},<br>your membership at {{space}} has been confirmed.</p>",
- "bodyPlaceholders": {
- "first_name": "Petra",
- "space": "Demo Space"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}
},
}
]
}Get a built-in email customization via its key.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space to get the email customization for. |
| key required | string The key by which the email customization is requested. |
{- "data": {
- "id": "email-customization-space-demo-membership_confirmation_email",
- "type": "builtInEmailCustomizations",
- "attributes": {
- "name": "Membership confirmation",
- "key": "membership_confirmation_email",
- "description": "This email gets sent after confirming a new member.",
- "subject": "Membership Confirmation for {{space}}",
- "subjectPlaceholders": {
- "space": "Demo Space"
}, - "body": "<p>Hi {{first_name}},<br>your membership at {{space}} has been confirmed.</p>",
- "bodyPlaceholders": {
- "first_name": "Petra",
- "space": "Demo Space"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}
},
}
}Show a single calendar blocker.
Access: Any user can read any space's calendar blockers.
| id required | string The id of the calendar blocker. |
{- "data": {
- "id": "698977f1-bd4b-5dd3-b225-dcad32a88b3a",
- "type": "calendarBlockers",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "blocked",
- "blockedFor": [
- "bookings",
- "externalBookings",
- "dropInPasses"
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}
}
}
}List all the calendar blockers for a space in the given time.
Access: Any user can read any space's calendar blockers.
| spaceId required | string The id of the space the calendar blockers belong to. |
| filter[from] required | string <date> Example: filter[from]=2012-04-12 Start of the date range. |
| filter[to] required | string <date> Example: filter[to]=2012-04-12 End of the date range. |
{- "data": [
- {
- "id": "698977f1-bd4b-5dd3-b225-dcad32a88b3a",
- "type": "calendarBlockers",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "blocked",
- "blockedFor": [
- "bookings",
- "externalBookings",
- "dropInPasses"
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}
}
}
]
}Checks a membership in at a space, after validating that checking in is possible (enough time passes, time restrictions). Potentially uses a time pass.
If the space is part of a network, the membership can be checked in to any space of the network.
Access: The current user must be an admin of the space the membership belongs to.
Data required to check in.
required | object |
{- "data": {
- "type": "checkIns",
- "attributes": {
- "checkInToken": "12345"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}
}
}
}{- "data": {
- "id": "12a8fa71ac8df98d29de357180d274d8",
- "type": "checkIns",
- "attributes": {
- "validFrom": "2018-01-01T12:45:00Z",
- "validUntil": "2018-01-01T18:00:00Z"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}Checks a membership (that is currently checked in at a space) out.
If the space is part of a network, the membership can be checked out of any space of the network.
Access: The current user must be an admin of the space the membership belongs to.
| id required | string The id of the check-in to update. |
{- "data": {
- "id": "12a8fa71ac8df98d29de357180d274d8",
- "type": "checkIns",
- "attributes": {
- "validFrom": "2018-01-01T12:45:00Z",
- "validUntil": "2018-01-01T17:00:00Z"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}List all check-ins of the membership starting in the given time range. If the membership's space belongs to a network, this includes check-ins from all spaces in the network.
Access: The current user must be the owner of the membership or an admin in the space the membership belongs to.
| membershipId required | string The id of the membership the bookings belong to. |
| filter[from] required | string <date-time> Example: filter[from]=2012-04-12T10:00:00Z Start of the time range. |
| filter[to] required | string <date-time> Example: filter[to]=2012-04-12T18:00:00Z End of the time range. |
{- "data": [
- {
- "id": "12a8fa71ac8df98d29de357180d274d8",
- "type": "checkIns",
- "attributes": {
- "validFrom": "2018-01-01T12:45:00Z",
- "validUntil": "2018-01-01T19:53:00Z"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
]
}List check-ins for a membership in a space that are still current, i.e.
their validUntil attribute is in the future.
The membership is determined by passing a checkInToken.
If the space is part of a network, check-ins can be fetched for any space
of the network.
Access: The current user must be an admin of the space the membership belongs to.
| spaceId required | string The id of the space the check-ins belong to. |
| filter[checkInToken] required | string A check-in token of the membership the check-ins belong to. Check-in tokens are created via the check-in token API and are typically MAC addresses or RFID tokens. |
{- "data": [
- {
- "id": "12a8fa71ac8df98d29de357180d274d8",
- "type": "checkIns",
- "attributes": {
- "validFrom": "2018-01-01T12:45:00Z",
- "validUntil": "2018-01-01T23:59:59Z"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
]
}Show a single contact.
Access: The current user must be an admin of the space
| id required | string The id of the contact. |
{- "data": {
- "id": "24c12f62ac8df98d29de357180d673e1",
- "type": "contacts",
- "attributes": {
- "email": "jane@example.com",
- "phone": "555-55-355",
- "address": {
- "name": "Jane Smitherson",
- "company": "ACME Inc.",
- "fullAddress": "3 Coworking Road"
}, - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "memberships"
}
}
}
}
}List contacts for a space.
Access: Only admins of the space can see the list of contacts.
| spaceId required | string The id of the space to get the contacts for. |
{- "data": [
- {
- "id": "24c12f62ac8df98d29de357180d673e1",
- "type": "contacts",
- "attributes": {
- "email": "jane@example.com",
- "phone": "555-55-355",
- "address": {
- "name": "Jane Smitherson",
- "company": "ACME Inc.",
- "fullAddress": "3 Coworking Road"
}, - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "memberships"
}
}
}
}
], - "meta": {
- "totalPages": 1,
- "currentPage": 1
}
}Search contacts in a space by name, email, company, or tags.
Access: Only admins of the space can search contacts.
| spaceId required | string The id of the space to search contacts in. |
| filter[query] required | string The search query. Contact names, emails, companies and tags are searched. |
| sort | string Example: sort=-name Sort results. Prefix with - for descending order. |
{- "data": [
- {
- "id": "24c12f62ac8df98d29de357180d673e1",
- "type": "contacts",
- "attributes": {
- "email": "jane@example.com",
- "phone": "555-55-355",
- "address": {
- "name": "Jane Smitherson",
- "company": "ACME Inc.",
- "fullAddress": "3 Coworking Road"
}, - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "memberships"
}
}
}
}
]
}Cost centers are used to categorize invoice items. Anything that can be invoiced can be assigned a cost center. When a service/charge is added to an invoice, its cost center will be assigned to the respective invoice item.
Lists all cost centers a space has set up.
Access: Only admins of the space can see the list of cost centers.
| spaceId required | string The id of the space to get the cost centers for. |
{- "data": [
- {
- "id": "3b6e2b72-8bac-5ca8-bd88-45c352737e57",
- "type": "costCenters",
- "attributes": {
- "name": "TC1",
- "number": "124"
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}Convert a trial space to a customer. The space must have valid billing details and payment method.
The space to convert.
required | object |
{- "data": {
- "type": "customers",
- "relationships": {
- "space": {
- "data": {
- "id": "83bc2926-c1fd-5235-bca1-417bc7a053e3",
- "type": "spaces"
}
}
}
}
}{- "data": {
- "id": "946f4742-9241-5b4e-9f98-9b64ad87f0a2",
- "type": "customers",
- "attributes": {
- "since": "2023-04-28"
}, - "relationships": {
- "space": {
- "data": {
- "id": "83bc2926-c1fd-5235-bca1-417bc7a053e3",
- "type": "spaces"
}
}
}
}
}Look up a discount code by its code string and discounted object id.
Returns the code details if the code exists and is valid (not expired, redemption limit not reached, and is valid for the object given via the discounted_id parameter).
Access: Any user can look up discount codes for any space.
| spaceId required | string The id of the space the discount code belongs to. |
| filter[code] required | string The discount code to look up. |
| filter[discounted_id] required | string The id of the discounted object (e.g. a plan id, external resource id, etc.) |
{- "data": {
- "id": "e6a53fb4a996cfa147e174e265edc5e0",
- "type": "discountCodes",
- "attributes": {
- "name": "Summer Sale",
- "unit": "percentage",
- "value": "10"
}
}
}Get a single drop-in pass. These represent a drop-in pass a person bought from a space.
Access: The current user must be an admin of the space.
| id required | string The id of the pass. |
{- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "dropInPasses",
- "attributes": {
- "name": "Day Pass",
- "validOn": "2019-01-01",
- "onboardingInstructions": "Come in and pick any free desk.",
- "email": "diwihru@cod.bh",
- "phone": "(219) 840-5295",
- "taxId": "12345678A",
- "price": {
- "net": "89.0",
- "gross": "98.35",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.5",
- "amount": "9.35"
}
]
}, - "timeAvailability": [
- {
- "from": "01:00",
- "to": "05:00",
- "weekdays": [
- 1,
- 2,
- 5
]
}
], - "comments": "Looking forward to my visit!",
- "status": "confirmed",
- "billingAddress": {
- "name": "Lucinda Moody",
- "company": "Moody Inc.",
- "fullAddress": "1690 Belwog Street"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "dropInPassTemplate": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "dropInPassTemplates"
}
}, - "contact": {
- "data": {
- "id": "23c37a61ac8df98d29de357180d273d3",
- "type": "contacts"
}
}, - "invoices": {
- "data": [
- {
- "id": "fjwn437783tj98d29de357180d27hjk",
- "type": "invoices"
}
]
}, - "dropInPassPurchase": {
- "data": {
- "id": "b4d2ab8822fced7625f14918d18be64a",
- "type": "dropInPassPurchases"
}
}
}
}
}Cancel a drop-in pass. The pass must not already be canceled.
Access: The current user must be an admin of the space.
| id required | string The id of the drop-in pass. |
{- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "dropInPasses",
- "attributes": {
- "name": "Day Pass",
- "validOn": "2019-01-01",
- "onboardingInstructions": "Come in and pick any free desk.",
- "email": "visitor@example.com",
- "phone": "(219) 840-5295",
- "taxId": "12345678A",
- "price": {
- "net": "89.0",
- "gross": "98.35",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.5",
- "amount": "9.35"
}
]
}, - "timeAvailability": [
- {
- "from": "01:00",
- "to": "05:00",
- "weekdays": [
- 1,
- 2,
- 5
]
}
], - "comments": "Looking forward to my visit!",
- "status": "canceled",
- "billingAddress": {
- "name": "Lucinda Moody",
- "company": "Moody Inc.",
- "fullAddress": "1690 Belwog Street"
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "dropInPassTemplate": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "dropInPassTemplates"
}
}, - "contact": {
- "data": {
- "id": "23c37a61ac8df98d29de357180d273d3",
- "type": "contacts"
}
}, - "invoices": {
- "data": [
- {
- "id": "fjwn437783tj98d29de357180d27hjk",
- "type": "invoices"
}
]
}, - "dropInPassPurchase": {
- "data": {
- "id": "b4d2ab8822fced7625f14918d18be64a",
- "type": "dropInPassPurchases"
}
}
}
}
}List/filter drop-in passes for a time range.
Access: Only admins of the space can see the list of passes.
| spaceId required | string The id of the space to get the drop-in passes for. |
| filter[valid_on_from] required | string <date> Example: filter[valid_on_from]=2012-04-12 The start of the time range. |
| filter[valid_on_to] required | string <date> Example: filter[valid_on_to]=2012-04-30 The end of the time range. |
| filter[sortOrder] | string Default: "asc" Enum: "asc" "desc" Whether to sort drop-in passes by ascending or descending date. |
{- "data": [
- {
- "id": "3fab7e63-3f6d-58e7-8a22-cf97569511b2",
- "type": "dropInPasses",
- "attributes": {
- "name": "Day Pass",
- "onboardingInstructions": "Come in and pick any free desk.",
- "validOn": "2023-04-30",
- "email": "pe@aj.hk",
- "phone": "(688) 621-8058",
- "taxId": "12345678A",
- "comments": "Looking forward to my visit!",
- "status": "confirmed",
- "price": {
- "net": "100.0",
- "gross": "110.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "10.0",
- "name": "VAT"
}
]
}, - "billingAddress": {
- "name": "Lucinda Moody",
- "company": "Bogisich LLC",
- "fullAddress": "1553 Luzim Mill"
}, - "timeAvailability": [
- {
- "from": "01:00",
- "to": "05:00",
- "weekdays": [
- 1,
- 2,
- 5
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "fjwn437783tj98d29de357180d27hjk",
- "type": "invoices"
}
]
}, - "dropInPassTemplate": {
- "data": {
- "id": "kljmf42375jmfd29de357186sa4d444d",
- "type": "dropInPassTemplates"
}
}, - "contact": {
- "data": {
- "id": "u2374d68h2j067d708qhj6whgn372872",
- "type": "contacts"
}
}, - "dropInPassPurchase": {
- "data": {
- "id": "b4d2ab8822fced7625f14918d18be64a",
- "type": "dropInPassPurchases"
}
}
}
}
]
}A purchase of drop-in-passes, currently only supports buying one pass at a time.
Create a drop-in pass purchase.
Access: Any user can create a drop-in pass purchase.
Data needed to create a drop-in pass purchase.
required | object |
{- "data": {
- "type": "dropInPassPurchases",
- "attributes": {
- "dropInPasses": [
- {
- "type": "dropInPasses",
- "attributes": {
- "validOn": "2018-01-01",
- "numberOfPasses": 1
}, - "relationships": {
- "dropInPassTemplate": {
- "data": {
- "id": "aeb19e5a78cc64be5056f6ef9a44f7d5",
- "type": "dropInPassTemplates"
}
}
}
}
], - "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc",
- "billingAddress": "1422 Nuede Extension",
- "phone": "(959) 645-9532",
- "taxId": "123456789A",
- "email": "fe@haos.eg",
- "comments": "we need catering"
}, - "relationships": {
- "payment": {
- "data": {
- "id": "jd73gf5a78cc64be5056f6ef9a44fuzt",
- "type": "payments"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "dropInPassPurchases",
- "attributes": {
- "acceptedTerms": true,
- "comments": "Looking forward to seeing your space!",
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "email": "hello@example.com",
- "phone": "(959) 645-9532",
- "taxId": "12345678A",
- "billingAddress": "1422 Nuede Extension",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "1422 Nuede Extension",
- "street": null,
- "postCode": null,
- "city": null,
- "state": null,
- "countryCode": null
}, - "price": {
- "net": "986.0",
- "gross": "1089.53",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Main Tax",
- "rate": "10.5",
- "amount": "103.53"
}
]
}
}, - "relationships": {
- "dropInPasses": {
- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "dropInPasses"
}
]
}, - "paymentMethod": {
- "data": {
- "id": "25fc37c06c4a183ea17ada5306725705",
- "type": "paymentMethods"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}
}
}
}Drop-in pass templates are templates for drop-in passes that can be bought by visitors.
Get a single drop-in pass template. These represent the drop-in passes a space offers to visitors.
Access: Any user can access any space's drop-in pass templates.
| id required | string The id of the template. |
{- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "dropInPassTemplates",
- "attributes": {
- "name": "Day pass",
- "description": "Valid for one day",
- "onboardingInstructions": "Come in and pick any free desk.",
- "price": {
- "net": "89.0",
- "gross": "98.35",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.5",
- "amount": "9.35"
}
]
}, - "timeAvailability": [
- {
- "from": "01:00",
- "to": "05:00",
- "weekdays": [
- 1,
- 2,
- 5
]
}
], - "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "color": "#ff0000"
}, - "relationships": {
- "availability": {
- "links": {
}
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Get the dates a drop-in pass template is available for purchase. Considers time availability of the template, max daily purchases, and calendar blockers.
Access: Any user can access any space's drop-in pass templates.
| id required | string The id of the template. |
| filter[from] required | string <date> The date from when on to return the availability. Must not be in the past and not be more than 2 months before the to date. |
| filter[to] required | string <date> The date until when to return the availability. Must not be more than 2 months after the from date. |
{- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "dropInPassTemplateAvailabilities",
- "attributes": {
- "availableDates": [
- {
- "from": "2025-01-01",
- "to": "2025-01-02",
- "numberOfPasses": 2
}, - {
- "from": "2025-01-05",
- "to": "2025-01-10",
- "numberOfPasses": 1
}
]
}, - "relationships": {
- "dropInPassTemplate": {
- "data": {
- "id": "bc302cc2-f3f6-563e-8c09-37fcae5088b8",
- "type": "dropInPassTemplates"
}
}
}
}
}Spaces can run events for their members or the public. Events are created and later published by admins, at which point members are able to see and attend them. Admins can also create messages for events, which are sent to attendees based on triggers such as someone having just attended an event.
Create events as an admin. To become visible to members, events have to be published after being created. Events can be associated with resources, in which cases the resources will be booked for the duration of the event. Access: The current user must be an admin of the space.
Event to be created for a space.
required | object |
{- "data": {
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "currency": "EUR"
}, - "accountingCode": "EVT",
- "costCenter": {
- "name": "Events",
- "number": "2018-1"
}, - "visitorCostCenter": {
- "name": "Visitor Events",
- "number": "2018-1"
}, - "revenueAccount": {
- "name": "Events",
- "number": "4000"
}, - "visitorRevenueAccount": {
- "name": "Visitor Events",
- "number": "4001"
}, - "audience": "membersOnly",
- "image": {
- "data": "data:image/png;base64,..."
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "resources": {
- "data": [
- {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "resources",
- "meta": {
- "units": 3
}
}
]
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "expectedRevenue": [
- {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}
], - "audience": "membersOnly",
- "color": "#FF0000",
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorCostCenter": null,
- "visitorRevenueAccount": null,
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "publishedState": "draft",
- "publicPage": false,
- "publicUrl": null,
- "canDepublish": false
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Show a single event.
Access: The current user must either be an admin or a member of a space or the space's network unless the event is public.
Including attendances or attendances.attendee requires the current user to be an admin or member of the space or the space's network.
| id required | string The id of the event. |
| include | Array of strings Items Enum: "attendances" "attendances.attendee" List of related resources to include in response as comma separated string. Including Including |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "expectedRevenue": [
- {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}
], - "audience": "membersOnly",
- "color": "#FF0000",
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorCostCenter": null,
- "visitorRevenueAccount": null,
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "publishedState": "draft",
- "publicPage": false,
- "publicUrl": null,
- "canDepublish": false
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Update the details of an event. Note that the publishedStatus attribute can only be
changed via the publish/depublish endpoints.
Access: The current user must be an admin of the space the event belongs to.
| id required | string The id of the event. |
Event to be updated.
required | object |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "currency": "EUR"
}, - "audience": "membersOnly",
- "accountingCode": "EVT",
- "costCenter": {
- "name": "Events",
- "number": "2018-1"
}, - "visitorCostCenter": {
- "name": "Visitor Events",
- "number": "2018-1"
}, - "revenueAccount": {
- "name": "Events",
- "number": "4000"
}, - "visitorRevenueAccount": {
- "name": "Visitor Events",
- "number": "4001"
}, - "image": {
- "data": "data:image/png;base64,..."
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85
}, - "relationships": {
- "resources": {
- "data": [
- {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "resources",
- "meta": {
- "units": "all"
}
}
]
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "expectedRevenue": [
- {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}
], - "audience": "membersOnly",
- "color": "#FF0000",
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorCostCenter": null,
- "visitorRevenueAccount": null,
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "publishedState": "draft",
- "publicPage": false,
- "publicUrl": null,
- "canDepublish": false
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Attend an event as member. Automatically creates a Charge
on the membership if the event has a price.
Access: The current user must be a member of the space.
The membership that wants to attend and the event to attend.
required | object |
{- "data": {
- "type": "eventAttendances",
- "attributes": {
- "visibility": "public"
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "attendee": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "3130b02817a5aab19255fb8f2c9d1ee3",
- "type": "eventAttendances",
- "attributes": {
- "createdAt": "2024-10-27T11:48:24+01:00",
- "numberOfAttendees": 1,
- "name": "Earl McBride",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "amount": "2.0",
- "name": "VAT",
- "rate": "20.0"
}
]
}, - "accountingCode": "EVT",
- "visibility": "public"
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "attendee": {
- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships"
}
}
}
}
}Get details of a single event attendance.
Access: The current user must be an admin of the space the event belongs to, or the event attendee, or a member of the space if the attendance visibility is 'members', or anyone if the attendance has 'public' visibility.
| id required | string The id of the event attendance to get. |
| include | Array of strings Items Value: "attendee" Include attendee. Requires |
{- "data": {
- "id": "3130b02817a5aab19255fb8f2c9d1ee3",
- "type": "eventAttendances",
- "attributes": {
- "accountingCode": "EVT",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "amount": "2.0",
- "name": "VAT",
- "rate": "20.0"
}
]
}, - "visibility": "public",
- "numberOfAttendees": 1,
- "name": "Earl McBride",
- "createdAt": "2024-10-27T11:48:24+01:00"
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "attendee": {
- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships"
}
}
}
}, - "included": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda",
- "email": "foksol@di.es",
- "phone": "(746) 760-3432",
- "company": null,
- "confirmedAt": "2020-02-01",
- "canceledAt": null,
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "team": {
- "data": {
- "id": "4db23e1a-62a6-5115-8034-fc18b13bffac",
- "type": "teams"
}
}
}
}
]
}Unattend an event as member. This refunds the ticket price if applicable.
Access: The current user must be connected to the membership the attendance belongs to.
| id required | string The id of the event attendance to delete. |
{- "errors": [
- {
- "detail": "You are not attending the event / Event has already started."
}
]
}List all the attendances for an event. Attendances connect an event with a membership or contact and can have an optional price.
Access: The current user must be an admin or member of the space the event belongs to.
| id required | string The id of the event. |
| include | Array of strings Items Value: "attendee" Include attendees. Requires |
{- "data": [
- {
- "id": "3130b02817a5aab19255fb8f2c9d1ee3",
- "type": "eventAttendances",
- "attributes": {
- "accountingCode": "EVT",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "amount": "2.0",
- "name": "VAT",
- "rate": "20.0"
}
]
}, - "visibility": "public",
- "numberOfAttendees": 1,
- "name": "Earl McBride",
- "createdAt": "2024-10-27T11:48:24+01:00"
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "attendee": {
- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships"
}
}
}
}, - {
- "id": "abcdb02817a5aab19255fb8f2c9d1ee3",
- "type": "eventAttendances",
- "attributes": {
- "accountingCode": "EVT",
- "price": {
- "net": "20.0",
- "gross": "24.0",
- "currency": "EUR",
- "taxes": [
- {
- "amount": "4.0",
- "name": "VAT",
- "rate": "20.0"
}
]
}, - "visibility": "public",
- "numberOfAttendees": 2,
- "name": "Earl McBride",
- "createdAt": "2024-10-27T11:48:24+01:00"
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}, - "attendee": {
- "data": {
- "id": "24c12f62ac8df98d29de357180d673e1",
- "type": "contacts"
}
}
}
}
], - "included": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda",
- "email": "foksol@di.es",
- "phone": "(746) 760-3432",
- "company": null,
- "confirmedAt": "2020-02-01",
- "canceledAt": null,
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "team": {
- "data": {
- "id": "4db23e1a-62a6-5115-8034-fc18b13bffac",
- "type": "teams"
}
}
}
}, - {
- "id": "24c12f62ac8df98d29de357180d673e1",
- "type": "contacts",
- "attributes": {
- "email": "jane@example.com",
- "phone": "555-55-355",
- "address": {
- "name": "Jane Smitherson",
- "company": "ACME Inc.",
- "fullAddress": "3 Coworking Road"
}, - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "membership": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "memberships"
}
}
}
}
]
}Create a message for an event. Messages are sent by email based on triggers such as someone attending an event.
Access: The current user must be an admin of the space.
Message to be created for an event.
required | object |
{- "data": {
- "type": "eventMessages",
- "attributes": {
- "trigger": "attended",
- "body": "This is what you need to know."
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}
}
}
}{- "data": {
- "id": "3910b02817a5aab19255fb8f2c9d1ea3",
- "type": "eventMessages",
- "attributes": {
- "trigger": "attended",
- "body": "This is what you need to know."
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}
}
}
}Returns a message for an event.
Access: The current user must be an admin of the space.
| id required | string The id of the message. |
{- "data": {
- "id": "3910b02817a5aab19255fb8f2c9d1ea3",
- "type": "eventMessages",
- "attributes": {
- "trigger": "attended",
- "body": "This is what you need to know."
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}
}
}
}Updates a message.
Access: The current user must be an admin of the space.
| id required | string The id of the message. |
The message content to update.
required | object |
{- "data": {
- "id": "3910b02817a5aab19255fb8f2c9d1ea3",
- "type": "eventMessages",
- "attributes": {
- "body": "This is what you also need to know."
}
}
}{- "data": {
- "id": "3910b02817a5aab19255fb8f2c9d1ea3",
- "type": "eventMessages",
- "attributes": {
- "trigger": "attended",
- "body": "This is what you also need to know."
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}
}
}
}Returns the messages for an event.
Access: The current user must be an admin of the space.
| id required | string The id of the event. |
{- "data": [
- {
- "id": "3910b02817a5aab19255fb8f2c9d1ea3",
- "type": "eventMessages",
- "attributes": {
- "trigger": "attended",
- "body": "This is what you need to know."
}, - "relationships": {
- "event": {
- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events"
}
}
}
}
]
}Publish an event as an admin. To become visible to members, events
have to be published. This changes the publishedState of the event
from draft to published.
Access: The current user must be an admin of the space.
| id required | string The id of the event to publish. |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "visitorCostCenter": null,
- "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorRevenueAccount": null,
- "audience": "membersOnly",
- "color": "#FF0000",
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "canDepublish": true,
- "publishedState": "published",
- "publicPage": true,
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}Depublish an event as an admin. This changes the publishedState of the event
from published to draft and members cannot see the event anymore.
Access: The current user must be an admin of the space.
| id required | string The id of the event to depublish. |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "expectedRevenue": [
- {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}
], - "audience": "membersOnly",
- "color": "#FF0000",
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorCostCenter": null,
- "visitorRevenueAccount": null,
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "publishedState": "draft",
- "publicPage": false,
- "publicUrl": null,
- "canDepublish": false
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}A purchase of event tickets, currently only supports buying one ticket at a time. This is for visitors / non-members attending events.
Access: Any user can create an event ticket purchase.
Data needed to create an event ticket purchase.
required | object |
{- "data": {
- "type": "eventTicketPurchases",
- "attributes": {
- "eventTickets": [
- {
- "type": "eventTickets",
- "attributes": {
- "numberOfTickets": 1
}, - "relationships": {
- "event": {
- "data": {
- "id": "aeb19e5a78cc64be5056f6ef9a44f7d5",
- "type": "events"
}
}
}
}
], - "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc",
- "billingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "street": "123 Main St",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "phone": "(959) 645-9532",
- "taxId": "123456789A",
- "email": "fe@haos.eg",
- "comments": "we need catering"
}, - "relationships": {
- "payment": {
- "data": {
- "id": "jd73gf5a78cc64be5056f6ef9a44fuzt",
- "type": "payments"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "eventTicketPurchases",
- "attributes": {
- "acceptedTerms": true,
- "comments": "Looking forward to seeing your space!",
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "email": "hello@example.com",
- "phone": "(959) 645-9532",
- "taxId": "12345678A",
- "billingAddress": "123 Main St\\nSpringfield, IL, 12345",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "123 Main St\\nSpringfield, IL, 12345",
- "street": "123 Main St",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "price": {
- "net": "986.0",
- "gross": "1089.53",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Main Tax",
- "rate": "10.5",
- "amount": "103.53"
}
]
}
}, - "relationships": {
- "attendances": {
- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "attendances"
}
]
}, - "paymentMethod": {
- "data": {
- "id": "25fc37c06c4a183ea17ada5306725705",
- "type": "paymentMethods"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}
}
}
}List/filter events for a time range. Access: Any user can see the list of events. Only admins of the space can see draft events.
| spaceId required | string The id of the space to get the events for. |
| include | Array of strings Items Enum: "attendances" "attendances.attendee" List of related resources to include in response as comma separated string. Including Including |
| filter[from] required | string <date-time> Example: filter[from]=2012-04-12T10:00:00Z The start of the time range. |
| filter[to] required | string <date-time> Example: filter[to]=2012-04-30T23:59:59Z The end of the time range. |
| filter[publishedState] required | Array of strings Items Enum: "draft" "published" Example: filter[publishedState]=draft,published Return draft/published events. Pass a comma separated list of states. Only admins can request draft events. |
| filter[tags] | Array of strings Example: filter[tags]=party,free Comma separated list of tags to filter events by.
To include events with no tags pass an empty
tag (alone: |
| filter[resourceIds] | Array of strings Example: filter[resourceIds]=a4a99a71ac8df98d29de357180d273d3,13b73f71ac8df98129de357180d219a6 Filter events by the resources they use (list of resource ids separated by commas).
To include events with no resources pass an empty resource id
(alone: |
| filter[attendeeIds] | Array of strings Example: filter[attendeeIds]=c2a99a71ac8df98d29de357180d273d2,9a673f71ac8df98129de357180d219a8 Filter events by who is attending. Pass a comma separated list of ids (for now only membership ids). |
| filter[sortOrder] | string Default: "asc" Enum: "asc" "desc" Whether to sort events by date ascending or descending. |
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "events",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "launch party",
- "price": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "visitorPrice": null,
- "expectedRevenue": [
- {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}
], - "audience": "membersOnly",
- "color": "#FF0000",
- "accountingCode": "EVT",
- "visitorAccountingCode": null,
- "costCenter": {
- "name": "Events Revenue",
- "number": "E17"
}, - "revenueAccount": {
- "name": "Events Revenue",
- "number": "4000"
}, - "visitorCostCenter": null,
- "visitorRevenueAccount": null,
- "image": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "description": "We are relaunching our coworking space!",
- "location": "Lobby",
- "tags": [
- "party"
], - "videoUrl": null,
- "capacity": 85,
- "publishedState": "draft",
- "publicPage": false,
- "publicUrl": null,
- "canDepublish": false
}, - "relationships": {
- "attendances": {
}, - "bookings": {
- "data": [
- {
- "id": "419cabc7547473ea91762671f4641701",
- "type": "bookings"
}
]
}, - "messages": {
}, - "publication": {
}, - "resources": {
- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
]
}, - "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}After a resource has been enabled for external booking (see External Resource) it can be booked by visitors (non-members) using external booking endpoints. Making an external booking also results in a Booking to be created.
Create an external booking.
Pass timeUnit (hour by default, or day) to use hourly or daily pricing respectively. When timeUnit is day, from and to are ISO 8601 dates.
Access: Any user can create external bookings.
Booking data needed to make the booking.
required | object |
{- "data": {
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "title": "Company Retreat",
- "numberOfVisitors": 1,
- "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "street": "123 Main St",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "taxId": "123456789A",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "adminComments": "make sure to air the room before",
- "bookingExtras": [
- {
- "productId": "5d2bd10cdab1647e6e49dafa319ad365",
- "quantity": "2.0"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "discount": {
- "data": {
- "id": "e6a53fb4a996cfa147e174e265edc5e0",
- "type": "discountCodes"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "title": "Company Retreat",
- "price": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "totalPrice": {
- "net": "11.0",
- "gross": "12.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.1",
- "name": "VAT"
}
]
}, - "numberOfVisitors": 1,
- "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "street": "1422 Nuede Extension",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "taxId": "123456789A",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "adminComments": "make sure to air the room before",
- "status": "approved",
- "accountingCode": "EB1",
- "canUpdate": true,
- "discount": {
- "code": "SUMMER2024",
- "name": "Summer Sale",
- "value": "10.0",
- "unit": "percentage",
- "amounts": [
- {
- "net": "1.1",
- "gross": "1.21",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.11",
- "name": "VAT"
}
]
}
]
}, - "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "paymentMethod": {
- "data": null
}, - "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "contact": {
- "data": {
- "id": "u2374d68h2j067d708qhj6whgn372872",
- "type": "contacts"
}
}
}
}
}Show an external booking.
Access: Any user can see external bookings.
| id required | string The id of the booking. |
| include | Array of strings Items Value: "invoices" List of related resources to include in response as comma separated string. Including |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "title": "Company Retreat",
- "price": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "totalPrice": {
- "net": "11.0",
- "gross": "12.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.1",
- "name": "VAT"
}
]
}, - "numberOfVisitors": 1,
- "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "street": "1422 Nuede Extension",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "taxId": "123456789A",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "adminComments": "make sure to air the room before",
- "status": "approved",
- "accountingCode": "EB1",
- "canUpdate": true,
- "discount": {
- "code": "SUMMER2024",
- "name": "Summer Sale",
- "value": "10.0",
- "unit": "percentage",
- "amounts": [
- {
- "net": "1.1",
- "gross": "1.21",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.11",
- "name": "VAT"
}
]
}
]
}, - "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "paymentMethod": {
- "data": null
}, - "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "contact": {
- "data": {
- "id": "u2374d68h2j067d708qhj6whgn372872",
- "type": "contacts"
}
}
}
}
}Cancel an external booking as an admin of a space.
The external booking is marked as canceled
and removed from the booking calendar (i.e. from any /bookings endpoints).
Past bookings can only be canceled while they are still pending.
Access: The current user must be an admin of the space.
| id required | string The id of the booking. |
{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "price": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "numberOfVisitors": 1,
- "acceptedTerms": true,
- "accountingCode": "EB1",
- "totalPrice": {
- "net": "11.0",
- "gross": "12.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.1",
- "name": "VAT"
}
]
}, - "title": "Company Retreat",
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": "1422 Nuede Extension",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "canUpdate": false,
- "status": "canceled",
- "canceledBy": "space",
- "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "paymentMethod": {
- "data": null
}, - "resource": {
- "data": {
- "id": "4a7dd89e-ff9c-5efd-897a-f40fb7138594",
- "type": "resources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}
}
}
}Update an external booking.
Access: The current user must be an admin of the space the booking belongs to.
| id required | string The id of the booking. |
Booking data to update.
required | object |
{- "data": {
- "id": "8524f660-b2e6-583e-87ee-7c4ed4cdbfd9",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "title": "Company Retreat",
- "adminComments": "make sure to air the room before",
- "bookerType": "company",
- "customPrice": {
- "net": "25.5"
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "title": "Company Retreat",
- "price": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "totalPrice": {
- "net": "11.0",
- "gross": "12.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.1",
- "name": "VAT"
}
]
}, - "numberOfVisitors": 1,
- "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "street": "1422 Nuede Extension",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "taxId": "123456789A",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "adminComments": "make sure to air the room before",
- "status": "approved",
- "accountingCode": "EB1",
- "canUpdate": true,
- "discount": {
- "code": "SUMMER2024",
- "name": "Summer Sale",
- "value": "10.0",
- "unit": "percentage",
- "amounts": [
- {
- "net": "1.1",
- "gross": "1.21",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.11",
- "name": "VAT"
}
]
}
]
}, - "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "paymentMethod": {
- "data": null
}, - "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "contact": {
- "data": {
- "id": "u2374d68h2j067d708qhj6whgn372872",
- "type": "contacts"
}
}
}
}
}Request to cancel an external booking as a visitor. This will not cancel the booking but send an email with a cancellation link to the email address used to make the booking.
Access: Any user can request to cancel a booking.
| id required | string The id of the booking. |
{- "errors": [
- {
- "title": "Payment required",
- "detail": "This API requires the space to have the external bookings subscription.\n"
}
]
}Preview creating an external booking.
Depending on the resource pricing, returned attributes will contain either appliedFixedRates array, or appliedDiscounts and appliedPriceCap. appliedPriceCaps is deprecated and always empty.
Optionally pass bookerType and billingAddress so the preview totals reflect EU reverse-charge tax treatment (same fields as creating a payment for an external booking).
Access: Any user can preview external bookings.
Booking data needed to generate a preview.
required | object |
{- "data": {
- "type": "externalBookingPreviews",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "bookingExtras": [
- {
- "productId": "fc099ce2ec4df93ba0fd0db7352e5421",
- "quantity": "2.0"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "discount": {
- "data": {
- "id": "e6a53fb4a996cfa147e174e265edc5e0",
- "type": "discountCodes"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookingPreviews",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "finalPrice": {
- "net": "16.0",
- "gross": "17.6",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.6",
- "name": "VAT"
}
]
}, - "fullPrice": {
- "net": "30.0",
- "gross": "33.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "3.0",
- "name": "VAT"
}
]
}, - "totalPrice": {
- "net": "30.0",
- "gross": "33.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "3.0",
- "name": "VAT"
}
]
}, - "appliedDiscounts": [
- {
- "pricePerHour": {
- "net": "6.0",
- "gross": "6.6",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.6",
- "name": "VAT"
}
]
}, - "minimumDuration": {
- "hours": 1,
- "minutes": 0
}
}
], - "appliedPriceCaps": [ ],
- "appliedPriceCap": {
- "maximumDuration": {
- "hours": 2,
- "minutes": 0
}
}, - "appliedFixedRates": [
- {
- "maximumDuration": {
- "hours": 2,
- "minutes": 0
}, - "price": "10.0",
- "count": 2
}
], - "bookingExtras": [
- {
- "name": "Catering",
- "description": "Tacos",
- "accountingCode": "COFF",
- "id": "extra-uuid-5678",
- "productId": "fc099ce2ec4df93ba0fd0db7352e5421",
- "pricing": {
- "unit": "person",
- "quantity": "2.0",
- "amount": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "2.0",
- "name": "VAT"
}
]
}
}
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}
}
}
}List a space's external bookings for a given timespan.
The bookings are filtered by their from attribute, not by testing for overlap.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space to get the bookings for. |
| filter[from] required | string <date-time> Example: filter[from]=2012-04-12T10:00:00Z The start of the time range to return external bookings for. |
| filter[to] required | string <date-time> Example: filter[to]=2012-04-14T20:00:00Z The end of the time range to return external bookings for. |
| filter[sortOrder] | string Default: "asc" Enum: "asc" "desc" Whether to sort external bookings by date ascending or descending date. |
| include | Array of strings Items Value: "invoices" List of related resources to include in response. Provide a comma separated list of relationship names.
|
{- "data": [
- {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "externalBookings",
- "attributes": {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z",
- "timeUnit": "hour",
- "bookingTimes": [
- {
- "from": "2018-01-01T12:00:00Z",
- "to": "2018-01-01T14:00:00Z"
}
], - "title": "Company Retreat",
- "price": {
- "net": "10.0",
- "gross": "11.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.0",
- "name": "VAT"
}
]
}, - "totalPrice": {
- "net": "11.0",
- "gross": "12.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "1.1",
- "name": "VAT"
}
]
}, - "numberOfVisitors": 1,
- "acceptedTerms": true,
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "bookerType": "company",
- "billingAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "structuredBillingAddress": {
- "name": "Earl McBride",
- "company": "ACME Inc.",
- "fullAddress": "1422 Nuede Extension\\nSpringfield, IL, 12345",
- "street": "1422 Nuede Extension",
- "postCode": "12345",
- "city": "Springfield",
- "state": "IL",
- "countryCode": "US"
}, - "taxId": "123456789A",
- "phone": "(959) 645-9532",
- "email": "fe@haos.eg",
- "comments": "we need catering",
- "adminComments": "make sure to air the room before",
- "status": "approved",
- "accountingCode": "EB1",
- "canUpdate": true,
- "discount": {
- "code": "SUMMER2024",
- "name": "Summer Sale",
- "value": "10.0",
- "unit": "percentage",
- "amounts": [
- {
- "net": "1.1",
- "gross": "1.21",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.11",
- "name": "VAT"
}
]
}
]
}, - "bookingExtras": [
- {
- "name": "Cup of coffee",
- "accountingCode": "coffee1",
- "description": "Hot",
- "id": "extra-uuid-1234",
- "productId": "a1b2c3d4e5f6",
- "pricing": {
- "amount": {
- "net": "1.0",
- "gross": "1.1",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.1",
- "name": "VAT"
}
]
}, - "totalAmount": {
- "net": "2.0",
- "gross": "2.2",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "10.0",
- "amount": "0.2",
- "name": "VAT"
}
]
}, - "quantity": "2.0",
- "unit": "item"
}
}
]
}, - "relationships": {
- "paymentMethod": {
- "data": null
}, - "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "externalResources"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}, - "invoices": {
- "data": [
- {
- "id": "a07fed27-b35b-5c67-8367-3e52c397c528",
- "type": "invoices"
}
]
}, - "contact": {
- "data": {
- "id": "u2374d68h2j067d708qhj6whgn372872",
- "type": "contacts"
}
}
}
}
]
}A space's resources can be enabled for external booking, which means they can be booked by guests without a Cobot account or space membership. All resources enabled for external booking appear under external resources.
Create an external resource for a resource. Attributes set on the external resource override the attributes of the related resource. Attributes left null on the external resource will fall back to the related resource.
Access: The current user must be an admin of the space the resource belongs to.
External resource data needed to create the external resource. At the very least a relationship to a resource is required.
required | object |
{- "data": {
- "type": "externalResources",
- "attributes": {
- "description": "Meeting Room",
- "pricing": {
- "pricePerHour": {
- "net": "10.0"
}, - "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "discounts": [
- {
- "pricePerHour": {
- "net": "5"
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}, - "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "Room 1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "maxBookingDuration": 480,
- "minBookingDuration": 60,
- "bookingTimesString": "mo - tu 15:00 - 16:00",
- "cancellationPeriod": 120,
- "bookingsRequireApproval": true,
- "payLater": false
}, - "relationships": {
- "resource": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "resources"
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "MR1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "rates": [
- {
- "unit": "hour",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "pricePerUnit": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}
], - "description": "Meeting Room",
- "instructions": "Ring the bell and wait for the door to be opened.",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "effectiveBookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "capacity": 1,
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "color": "#ff0000",
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
], - "bookingsRequireApproval": true,
- "payLater": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "34e3ccee-4eb1-5b1d-b625-5bb34cefe28e",
- "type": "resources"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}Show a single resource enabled for external booking.
Access: Any user can access any space's external resources.
| id required | string The id of the resource. |
| fields[externalResources] | string Sparse fieldset for external resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "MR1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "rates": [
- {
- "unit": "hour",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "pricePerUnit": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}
], - "description": "Meeting Room",
- "instructions": "Ring the bell and wait for the door to be opened.",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "effectiveBookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "capacity": 1,
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "color": "#ff0000",
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
], - "bookingsRequireApproval": true,
- "payLater": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "34e3ccee-4eb1-5b1d-b625-5bb34cefe28e",
- "type": "resources"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}Update a resource enabled for external booking.
Access: The current user must be an admin of the space the resource belongs to.
| id required | string The id of the external resource. |
The external resource attributes to update.
required | object |
{- "data": {
- "type": "externalResources",
- "id": "2c2a8092-3273-50da-ba45-23badf1cdc5d",
- "attributes": {
- "pricing": {
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0"
}
}, - "description": "Meeting Room",
- "cancellationPeriod": 120,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingsRequireApproval": true,
- "payLater": false
}
}
}{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "MR1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "rates": [
- {
- "unit": "hour",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "pricePerUnit": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}
], - "description": "Meeting Room",
- "instructions": "Ring the bell and wait for the door to be opened.",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "effectiveBookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "capacity": 1,
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "color": "#ff0000",
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
], - "bookingsRequireApproval": true,
- "payLater": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "34e3ccee-4eb1-5b1d-b625-5bb34cefe28e",
- "type": "resources"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}Delete an external resource. The original resource the external resource is connected to is not deleted.
Access: The current user must be an admin of the space.
| id required | string The id of the resource. |
{- "errors": [
- {
- "title": "Payment required",
- "detail": "This API requires the space to have the external bookings subscription.\n"
}
]
}See the times an external resource is still available to book. Considers existing bookings, the resource's booking times and calendar blockers.
Use filter[timeUnit] to check availability for hourly or daily bookings.
Hour mode (default) requires an hour rate on the resource.
Day mode requires a day rate. If the resource is not bookable for the
requested time unit, availableTimes is an empty array.
Access: Any user can access any space's external resources.
| id required | string The id of the external resource. |
| filter[timeUnit] | string Default: "hour" Enum: "hour" "day" Whether to check availability for hourly or daily booking.
Defaults to |
| filter[from] required | string The start of the timespan to return availability for.
ISO 8601 date-time when |
| filter[to] required | string The end of the timespan to return availability for.
ISO 8601 date-time when |
{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T10:00:00Z",
- "to": "2018-01-01T12:00:00Z"
}, - {
- "from": "2018-01-01T14:30:00Z",
- "to": "2018-01-01T19:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources"
}
}
}
}
}List the resources enabled for external booking for a space.
These resources can be booked and paid for by non-members of a space.
Access: Any user can access any space's external resources.
| spaceId required | string The id of the space to get the resources for. |
| fields[externalResources] | string Sparse fieldset for external resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "MR1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "priceCaps": [ ],
- "discounts": [
- {
- "pricePerHour": {
- "$ref": "../examples/price.yml"
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}, - "rates": [
- {
- "unit": "hour",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "pricePerUnit": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "$ref": "../examples/price.yml"
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}
], - "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "effectiveBookingCutoff": 1,
- "description": "Large room, fits 12.",
- "instructions": "Ring the bell and wait for the door to be opened.",
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "capacity": 1,
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "color": "#ff0000",
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
], - "bookingsRequireApproval": false,
- "payLater": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "34e3ccee-4eb1-5b1d-b625-5bb34cefe28e",
- "type": "resources"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
]
}List the external resources that are available to book at a given time.
This means there are fewer existing bookings than the resources' units.
booking_times, min/max duration and calendar blockers are also taken into account.
Use filter[timeUnit] to list resources for hourly or daily bookings.
Hour mode (default) returns resources with an hour rate.
Day mode returns only resources that have a day rate.
Access: Any user can access any space's external resources.
| spaceId required | string The id of the space to get the resources for. |
| filter[timeUnit] | string Default: "hour" Enum: "hour" "day" Whether to check availability for hourly or daily booking.
Defaults to |
| filter[from] required | string The start of the timespan to check for availability.
ISO 8601 date-time when |
| filter[to] required | string The end of the timespan to check for availability.
ISO 8601 date-time when |
| filter[ignoreBookingTimes] | boolean If set to true, returns resources as available even when the requested time is outside of the resource's booking times setting or blocked by calendar blockers. Option available only for admins of a space. |
| filter[ignoreExternalBookingId] | string Id of an external booking to not consider when determining availability. Useful for determining availbility before moving an external booking to a different time. |
| filter[minimumCapacity] | integer If set, returns only resources where capacity is greater than or equal to requested value. |
| fields[externalResources] | string Sparse fieldset for external resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "externalResources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "accountingCode": "EXTR",
- "costCenter": {
- "name": "External Bookings",
- "number": "MR1"
}, - "revenueAccount": {
- "name": "External Bookings",
- "number": "4000"
}, - "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "rates": [
- {
- "unit": "hour",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "pricePerUnit": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "2.0"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 12,
- "minutes": 30
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
]
}
], - "description": "Meeting Room",
- "instructions": "Ring the bell and wait for the door to be opened.",
- "cancellationPeriod": 120,
- "bookingCutoff": 1,
- "effectiveBookingCutoff": 1,
- "minBookingDuration": 60,
- "maxBookingDuration": 480,
- "capacity": 1,
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "color": "#ff0000",
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
], - "bookingsRequireApproval": true,
- "payLater": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resource": {
- "data": {
- "id": "34e3ccee-4eb1-5b1d-b625-5bb34cefe28e",
- "type": "resources"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
]
}Invoices are automatically generated once a month, based on members' activity. In addition, manual invoices can be generated at any time.
Bulk-charge invoices. The invoices will be charged in the background.
Access: The current user must be an admin of the space of each invoice.
Invoices to be charged.
required | object |
{- "data": {
- "type": "invoiceCharges",
- "relationships": {
- "invoices": {
- "data": [
- {
- "id": "411f2702c500049ef4dc94229517631b",
- "type": "invoices"
}, - {
- "id": "511f2702c500049ef4dc94229517631c",
- "type": "invoices"
}
]
}
}
}
}{- "data": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "type": "invoiceCharges",
- "relationships": {
- "invoices": {
- "data": [
- {
- "id": "411f2702c500049ef4dc94229517631b",
- "type": "invoices"
}, - {
- "id": "511f2702c500049ef4dc94229517631c",
- "type": "invoices"
}
]
}
}
}
}Create a custom invoice in a space.
Pass a membership relationship to assign the invoice to a membership. Pass a correctedInvoice relationship and optional writeOffCorrectedInvoice flag to create a correction invoice.
Access: The current user must be an admin of the space where the invoice is created.
Data required to create an invoice.
required | object |
{- "data": {
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "notes": "Thanks for your business!",
- "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "amount": {
- "net": "20.0",
- "taxes": [
- {
- "name": "VAT",
- "rate": "19.0"
}
]
}
}
]
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "32c76cb66b5e6b39007690854fd668a1",
- "type": "memberships"
}
}, - "correctedInvoice": {
- "data": {
- "id": "12376af66b5e6b39007690854fd668f4",
- "type": "invoices"
}
}, - "space": {
- "data": {
- "id": "12376af66b5e6b39007690854fd668f4",
- "type": "spaces"
}
}
}
}
}{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Show a single invoice.
Access: The current user must be an admin of the space where the invoice was created, and admin of any space in the network, or the user of the membership the invoice belongs to.
| id required | string The id of the invoice. |
{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Show a single invoice PDF.
Access: The current user must be an admin of the space where the invoice was created, and admin of any space in the network, or the user of the membership the invoice belongs to.
Alternatively, a token parameter can be provided to acces the PDF.
| id required | string The id of the invoice. |
| token | string Optional token to access the PDF without API authentication. |
| e_invoice | boolean If set to true, returns the PDF without any payment related information. |
Locks an invoice so it can not be edited anymore.
Access: The current user must be an admin of the space where the invoice was created.
| id required | string The id of the invoice. |
{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": false,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Removes the invoice lock so the invoice can be edited again (for example after external e-invoice generation failed). This is not allowed if the invoice already has a final PDF or e-invoicing data attached; in that case the request fails with HTTP 409.
Access: The current user must be an admin of the space where the invoice was created.
| id required | string The id of the invoice. |
{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Create an e-invoice for the passed invoice and attach it to the PDF.
This will lock the invoice, preventing it from being changed manually afterwards.
If generation fails before a PDF is attached, call DELETE /invoices/{id}/lock so the invoice can be edited again.
After an e-invoice or final PDF is attached, DELETE /invoices/{id}/lock returns HTTP 409 and does not unlock.
Supports e-invoicing in Germany (ZUGFeRD) and Poland (KSeF).
For Polish KSeF e-invoices, pass e_invoice_standard: "KSeF" along with
ksef_reference_number and ksef_acceptance_timestamp in the request body.
These will be stored on the invoice and the reference number will be displayed
on the PDF.
Access: The current user must be an admin of the space where the invoice was created.
| id required | string The id of the invoice. |
Optional e-invoicing metadata (required for Polish KSeF).
object |
{- "data": {
- "type": "invoices",
- "attributes": {
- "e_invoice_standard": "KSeF",
- "ksef_reference_number": "1234567890-20260126-ABC123DEF456-00",
- "ksef_acceptance_timestamp": "2026-01-26T10:30:00Z"
}
}
}{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Attaches a PDF to an invoice. This can be used to create an e-invoice externally to replace the regular invoice pdf.
The invoice has to be locked. An invoice that has been requested to be sent will be sent after the PDF is attached.
Access: The current user must be an admin of the space where the invoice was created.
| invoice_id required | string The id of the invoice. |
The file to attach.
| eInvoice | boolean Set to true if the PDF fulfills the e-invoicing criteria for the space. |
| eInvoiceStandard | string The e-invoicing standard of the uploaded PDF, e.g. 'Zugferd' in Germany. |
| pdf required | file |
{ "eInvoice": true, "eInvoiceStandard": "Zugferd", "pdf": "new_invoice.pdf" }
{- "data": {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoice": true,
- "eInvoiceStandard": "Zugferd",
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
}Lists the payment methods used to pay an invoice.
Access: The current user must be an admin of the space where the invoice was created.
| id required | string The id of the invoice. |
{- "data": [
- {
- "id": "2465b308-df41-5857-a474-22361acdc7b3",
- "type": "paymentMethods",
- "attributes": {
- "name": "Credit Card",
- "paymentProvider": "stripe",
- "providerAttributes": {
- "publishableKey": "pk_4ef3a2a7-950f-5c97-bdf3-e6606455540f"
}, - "supportsPayLater": true,
- "enabledFor": [
- "externalBookings",
- "dropInPasses",
- "members",
- "publicEventTickets"
]
}
}
]
}List the previews of the invoices that will be generated in a space for a timespan.
Access: The current user must be an admin of the space where the invoice is created.
| spaceId required | string The id of the space the invoices belong to. |
| filter[from] required | string <date> The start of the timespan to list previews for. Must be today or in the future. |
| filter[to] required | string <date> The end of the timespan to list previews for. |
| filter[dateFilterField] | string Enum: "dueDate" "invoiceDate" What field to use for filtering the invoice previews by date.
|
{- "data": [
- {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
]
}List the invoices issued by a space:
filter[to/from])filter[debitorId])filter[paidStatus])Access: The current user must be an admin of the space where the invoice was created. If the space is part of a network, the user must be an admin of any space in the network.
| spaceId required | string The id of the space the invoices belong to. |
| filter[debitorId] | string To list invoices that belong to a single debitor (membership or team), pass the id of that membership or team. |
| filter[membershipId] | string Same as |
| filter[from] | string <date> List invoices for all debitors whose invoice date is within the given timespan. |
| filter[to] | string <date> List invoices for all debitors whose invoice date is within the given timespan. |
| filter[dateFilterField] | string Enum: "dueDate" "invoiceDate" "remindAt" What field to use for filtering the invoices by date.
|
| filter[paidStatus] | Array of strings Items Enum: "unpaid" "paid" "writtenOff" "pending" Filter the invoices by their paid status. Can not be combined with any of the other filters. |
{- "data": [
- {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
]
}Text query searches through invoice number, invoice items and recipient name or company. Returns paginated list of invoices and number of pages in total.
Access: The current user must be an admin of the space. If the space is part of a network, the user must be an admin of any space in the network.
| spaceId required | string The id of the space the invoices belong to. |
| filter[query] required | string The text query to search for. |
| filter[paidStatus] | Array of strings Items Enum: "paid" "unpaid" "pending" "writtenOff" "late" Provide a comma separated list. Default: all. paidStatus=late returns unpaid invoices with remind_at date in the past. |
| filter[sentStatus] | Array of strings Items Enum: "sent" "unsent" Provide a comma separated list. Default: all. |
| filter[sortBy] | string Enum: "invoiceDate" "number" "paidStatus" "sentStatus" "company" "name" "totalAmount" One from the list, default: invoiceDate. |
| filter[sortOrder] | string Enum: "asc" "desc" Default: desc. |
{- "data": [
- {
- "id": "14c12f62ac8df98d29de357180d673e1",
- "type": "invoices",
- "attributes": {
- "invoiceText": "Thanks for your business!",
- "invoiceDate": "2019-01-10",
- "paidDate": null,
- "dueDate": "2019-01-10",
- "eInvoicingReady": false,
- "remindAt": "2019-01-17",
- "number": "CW-2019-100",
- "senderTaxId": "DE753207",
- "taxId": "DE12345",
- "taxIdName": "UID",
- "customerNumber": "100",
- "pdf": {
- "archived": false,
- "eInvoiceStandard": null,
- "eInvoice": false,
}, - "recipientAddress": {
- "name": "Jane Smith",
- "company": "Acme Inc.",
- "fullAddress": "2 Coworking Road, Big City 88888, Coworking State",
- "street": "2 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "senderAddress": {
- "name": null,
- "company": "Coworking Ltd.",
- "fullAddress": "1 Coworking Road, Big City 88888, Coworking State",
- "street": "1 Coworking Road",
- "postCode": "88888",
- "city": "Big City",
- "state": "Coworking State",
- "countryCode": "US"
}, - "notes": "Customer will pay later.",
- "billingEmails": [
- "mupi@lubbuw.bh"
], - "items": [
- {
- "description": "2h meeting room",
- "quantity": "2.0",
- "accountingCode": "MTR-200",
- "costCenter": {
- "name": "Bookings",
- "number": "MTR-200"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}, - "paid": false,
- "amount": {
- "net": "20.0",
- "gross": "22.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "2.0"
}
]
}, - "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}
], - "payableAmount": "44.0",
- "paidAmount": "0.0",
- "paidStatus": "unpaid",
- "reminderStatus": "sent",
- "sentRemindersCount": 1,
- "lastReminderSentAt": "2019-01-17T00:00:00Z",
- "chargeAt": "2019-01-02T11:00:00Z",
- "canCharge": true,
- "canUpdate": true,
- "sentStatus": "unsent",
- "totalAmount": {
- "net": "40.0",
- "gross": "44.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "10.0",
- "amount": "4.0"
}
]
}
}, - "relationships": {
- "debitor": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}, - "space": {
- "data": {
- "id": "e0c19a71ac8df98d29de357180d27339",
- "type": "spaces"
}
}, - "paymentMethods": {
- "links": {
}
}
}
}
]
}Sends an invoice reminder for an overdue invoice.
Access: The current user must be an admin of the space.
Invoice reminder to be sent.
required | object |
{- "data": {
- "type": "invoiceReminders",
- "attributes": {
- "to": "peter@example.com",
- "bcc": "fatih@example.com",
- "subject": "Overdue invoice!",
- "body": "Please pay your \\\"invoice\\\".\\nOtherwise we might be forced to call the police."
}, - "relationships": {
- "invoice": {
- "data": {
- "id": "411f2702c500049ef4dc94229517631b",
- "type": "invoices"
}
}
}
}
}Create a help desk issue in a space.
Access: The current user must be an admin or a member of the space.
Members cannot pass an issuer. The issue is created with their membership.
Admins may pass a membership as issuer. If they omit it, the issue is
created as the admin (issuer is null), even if they are also a member.
Issue to create.
required | object |
{- "data": {
- "type": "issues",
- "attributes": {
- "subject": "Broken chair",
- "message": "Please fix the broken chair in the lounge.",
- "private": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "issuer": {
- "data": {
- "id": "32c76cb66b5e6b39007690854fd668a1",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "5fdf75523b35335eab45adc72038cf51",
- "type": "issues",
- "attributes": {
- "subject": "Broken chair",
- "message": "Please fix the broken chair in the lounge.",
- "private": false
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "issuer": {
- "data": {
- "id": "32c76cb66b5e6b39007690854fd668a1",
- "type": "memberships"
}
}
}
}
}Get a single membership.
Access: The current user must be an admin of the space the membership belongs to or the owner of the membership.
| id required | string Id of the membership. |
{- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda",
- "email": "foksol@di.es",
- "phone": "(746) 760-3432",
- "company": null,
- "confirmedAt": "2020-02-01",
- "canceledAt": null,
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "team": {
- "data": {
- "id": "4db23e1a-62a6-5115-8034-fc18b13bffac",
- "type": "teams"
}
}
}
}
}Get a list of memberships for a network.
Access: The current user must be an admin of the space or any space in the network.
| networkId required | string Id of the network. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda"
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}Search the list of memberships in the network.
Access: The current user must be an admin of the space or any space in the network.
| networkId required | string Id of the network. |
| filter[query] required | string The search query. Membership names, company and emails are searched. |
| sort | string Example: sort=-name Sort results. Prefix with - for descending order. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda"
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}Get a list of memberships for a space.
Access: The current user must be an admin of the space.
| spaceId required | string Id of the space. |
| filter[from] required | string <date> Example: filter[from]=2020-04-20 Only return memberships that have not been canceled or been canceled on or after the given date. |
| filter[to] required | string <date> Example: filter[to]=2020-04-20 Only return memberships that have been confirmed before or on the given date. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda",
- "email": "foksol@di.es",
- "phone": "(746) 760-3432",
- "company": null,
- "confirmedAt": "2020-02-01",
- "canceledAt": null,
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "team": {
- "data": {
- "id": "4db23e1a-62a6-5115-8034-fc18b13bffac",
- "type": "teams"
}
}
}
}
]
}Search memberships in a space. Membership names, company and emails are searched. Returns a paginated list of current (confirmed, not canceled) memberships.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space the memberships belong to. |
| filter[query] required | string The text query to search for. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships",
- "attributes": {
- "name": "Jane Fonda",
- "email": "foksol@di.es",
- "phone": "(746) 760-3432",
- "company": null,
- "confirmedAt": "2020-02-01",
- "canceledAt": null,
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}, - "team": {
- "data": {
- "id": "4db23e1a-62a6-5115-8034-fc18b13bffac",
- "type": "teams"
}
}
}
}
]
}The plans belonging to a membership. When a membership is signed up one of the space's plans is selected and a copy is created for the membership. A membership's plan can be customized or changed over time, creating a new membership plan object every time.
Get the plan history for the given time and for each membership that was active during the given time.
Data is returned as a flat list of membership plans. Each plan has a relationship pointing to the membership it belongs to and startsAt/canceledAt attributes to determine the time it was active.
Access: The current user must be an admin of the space or any space in the network.
| spaceId required | string Id of the space. |
| filter[from] required | string <date> Example: filter[from]=2020-04-20 Only return membership plans that have been active from the given date on. |
| filter[to] required | string <date> Example: filter[to]=2020-04-20 Only return membership plans that have been active until the given date. |
{- "data": [
- {
- "id": "12a99a71ac8da98d29de357189d273c6",
- "type": "membershipPlans",
- "attributes": {
- "accountingCode": "P1",
- "canceledAt": null,
- "cycleDuration": 1,
- "description": "Our most popular plan!",
- "extras": [
- {
- "accountingCode": "PE1",
- "cycleDuration": 6,
- "name": "Keys",
- "pricePerCycle": {
- "net": "50.0",
- "gross": "58.5",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "19.0",
- "name": "VAT"
}
]
}
}
], - "name": "Basic Plan",
- "pricePerCycle": {
- "net": "100.0",
- "gross": "119.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "19.0",
- "name": "VAT"
}
]
}, - "startsAt": "2020-04-20"
}, - "relationships": {
- "membership": {
- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "memberships"
}
}
}
}
]
}Get a single membership profile by its id.
Access: The current user must be an admin or member of the space the membership profile belongs to. If the space is part of a network, the user must be an admin or member of any space in the network.
| id required | string Id of the membership profile. |
{- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
}Lets members update their profile.
Access: The current user must be the owner of the membership that the profile belongs to.
| id required | string Id of the membership profile. |
The attributes to be updated.
required | object |
{- "data": {
- "id": "84b3d762-ffe2-5bd2-a11a-a66251fc26e4",
- "type": "membershipProfiles",
- "attributes": {
- "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
- "phone": "555-123 456",
- "email": "info@cobot.me",
- "company": "Cobot",
- "published": true
}
}
}{- "data": {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
- "published": true
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
}Get a list of membership profiles for a network.
Access: The current user must be an admin of the space or any space in the network.
| networkId required | string Id of the network. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
]
}Search the list of membership profiles for a network.
Access: The current user must be an admin of the space or any space in the network.
| networkId required | string Id of the network. |
| filter[query] required | string The search query. All profile fields are searched. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
]
}Get a list of membership profiles for a space.
Access: The current user must be an admin of the space.
| spaceId required | string Id of the space. |
| filter[membershipIds] | Array of strings Example: filter[membershipIds]=c2a99a71ac8df98d29de357180d273d2,9a673f71ac8df98129de357180d219a8 Only return profiles for the given memberships ids. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
- "published": true
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
]
}Get a list of published membership profiles for a space.
Access: The current user must be an admin or member of the space.
| spaceId required | string Id of the space. |
| filter[membershipIds] | Array of strings Example: filter[membershipIds]=c2a99a71ac8df98d29de357180d273d2,9a673f71ac8df98129de357180d219a8 Only return profiles for the given memberships ids. |
{- "data": [
- {
- "id": "a8c12f62ac8df98d29de357180d673e1",
- "type": "membershipProfiles",
- "attributes": {
- "name": "Co Bot",
- "email": "info@cobot.me",
- "phone": "555-123 456",
- "company": "Cobot",
- "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "location": "Berlin, Germany",
- "birthday": "2009-11-05",
- "aboutMe": "I am a coworking robot.",
- "published": true
}, - "relationships": {
- "membership": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "memberships"
}
}
}
}
]
}Multiple spaces can form a network. This allows their members to access multiple spaces, for example to book resources.
Get a network by its id. Spaces that are in a network expose a link to it. Access: The current user must be an admin or member of any space in the network.
| id required | string The id of the network. |
| include | Array of strings Items Value: "memberSpaces" List of related resources to include in response.
Provide a comma separated list of relationship names.
Including |
{- "data": {
- "id": "d9a99a71ac8df98d29de357180d273d3",
- "type": "networks",
- "relationships": {
- "memberSpaces": {
- "data": [
- {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
]
}, - "memberships": {
}, - "membershipProfiles": {
- "links": {
}
}
}
}
}List the availability of multiple resources across all spaces in a network for a given time range. Considers existing bookings, each resource's booking times, cutoff, and calendar blockers.
Only resources that belong to spaces within the specified network will be included in the results. Resource IDs from outside the network will be filtered out.
Access: The current user must be an admin or member of any space in the network.
| networkId required | string The id of the network. |
| filter[from] required | string <date-time> The time from when on to return the availability. |
| filter[to] required | string <date-time> The time until when to return the availability. |
| filter[resourceIds] | Array of strings Comma-separated list of resource ids to return availabilities for. Only resources belonging to spaces in this network will be included. |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T10:00:00Z",
- "to": "2018-01-01T12:00:00Z"
}, - {
- "from": "2018-01-01T14:30:00Z",
- "to": "2018-01-01T19:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}
}
}, - {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T09:00:00Z",
- "to": "2018-01-01T11:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resources"
}
}
}
}
]
}The payment API is in development. Endpoints may be missing or not working yet.
Payments allow any user (i.e. non-members) to pay for items on Cobot via the payment methods a space has set up. For now this only covers external bookings, but more could be added in the future.
Initiates a new payment for a purchase, but does not complete it. Supported purchases are:
timeUnit (hour by default, or day) to use hourly or daily pricing respectively. When timeUnit is day, from and to are ISO 8601 dates.After creating a payment, payment details such as credit card numbers need to be added via the user's browser. This can happen via JavaScript calls or a browser redirect.
Supported payment providers:
Stripe uses payment intents and Stripe.js to process payments. Calling this endpoint will return a payment intent client secret which you need in order to collect payment data and complete the payment in the browser. See https://stripe.com/docs/payments/accept-a-payment?ui=elements.
Calling this endpoint will return an orderId which you need in order to collect payment data and complete the payment in the browser.
Note: currently in development, created orders can be paid but are not yet linked, automatically.
Access: Any user can initiate payments.
Data needed to initiate a payment. Varies with each payment provider.
required | object |
{- "data": {
- "type": "payments",
- "attributes": {
- "payable": {
- "type": "externalBookings",
- "attributes": {
- "from": "2021-11-28T12:00:00Z",
- "to": "2021-11-28T14:30:00Z",
- "timeUnit": "hour",
- "bookingExtras": [
- {
- "productId": "17456ef0aac79b82742d76f2ed7ce582",
- "quantity": "1.0"
}
]
}, - "relationships": {
- "externalResource": {
- "id": "8056fb60-f239-5330-af26-7365d55c032c"
}, - "discount": {
- "data": {
- "id": "8056fb60-f239-5330-af26-7365d55c032c",
- "type": "discountCodes"
}
}
}
}
}, - "relationships": {
- "paymentMethod": {
- "data": {
- "id": "0eead1dc-f1cb-51ae-92a6-7031299f2cec",
- "type": "paymentMethods"
}
}, - "space": {
- "data": {
- "id": "620b9c47-8413-519b-8979-8cc08958c298",
- "type": "spaces"
}
}
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d27358",
- "type": "payments",
- "attributes": {
- "amount": {
- "value": "100.0",
- "currency": "EUR"
}, - "paymentProvider": "stripe",
- "providerAttributes": {
- "paymentIntentClientSecret": "a1d952f1ac8cf98d29de357180d27734",
- "paymentIntentId": "pi_ANipwO3zNfjeWODtRPIg"
}
}, - "relationships": {
- "paymentMethod": {
- "data": {
- "id": "0eead1dc-f1cb-51ae-92a6-7031299f2cec",
- "type": "paymentMethods"
}
}, - "space": {
- "data": {
- "id": "99a12ca68b5e6bc9007890854kd368f2",
- "type": "spaces"
}
}
}
}
}Spaces can set up payment methods that members can use to make payments to the space. Payment methods can be automated via a payment provider such as Stripe or manual (e.g. cash, bank transfer).
List the payment methods of a space that can be used to pay for an external booking. Payment methods can have a payment provider.
In this case, custom attributes needed for payment processing are returned via the
providerAttributes.
Access: Any user can list a space's payment methods.
| spaceId required | string The id of the space to get the payment methods for. |
{- "data": [
- {
- "id": "2465b308-df41-5857-a474-22361acdc7b3",
- "type": "paymentMethods",
- "attributes": {
- "name": "Credit Card",
- "paymentProvider": "stripe",
- "providerAttributes": {
- "publishableKey": "pk_4ef3a2a7-950f-5c97-bdf3-e6606455540f"
}, - "supportsPayLater": true,
- "enabledFor": [
- "externalBookings",
- "dropInPasses",
- "publicEventTickets"
]
}
}
]
}List the payment methods of a space. Payment methods can have a payment provider.
In this case, custom attributes needed for payment processing are returned via the
providerAttributes.
Access: Any user can list a space's payment methods.
| spaceId required | string The id of the space to get the payment methods for. |
{- "data": [
- {
- "id": "2465b308-df41-5857-a474-22361acdc7b3",
- "type": "paymentMethods",
- "attributes": {
- "name": "Credit Card",
- "paymentProvider": "stripe",
- "providerAttributes": {
- "publishableKey": "pk_4ef3a2a7-950f-5c97-bdf3-e6606455540f"
}, - "supportsPayLater": true,
- "enabledFor": [
- "externalBookings",
- "dropInPasses",
- "members",
- "publicEventTickets"
]
}
}
]
}Products can be set up by a space and then used as booking extras or to create charges from. Examples are coffee, projectors, additional cleaning services etc.
A single product.
Access: Any user can view products.
| id required | string The id of the product. |
{- "data": {
- "id": "55c12f62ac8df98d29de357180d673e1",
- "type": "products",
- "attributes": {
- "name": "Cup of coffee",
- "description": "Hot",
- "accountingCode": "COFF",
- "costCenter": {
- "name": "Food",
- "number": "100"
}, - "revenueAccount": {
- "name": "Revenue Food",
- "number": "4000"
}, - "enabledForScopes": [
- "bookings",
- "externalBookings"
], - "pricing": {
- "unit": "person",
- "quantity": "1.0",
- "price": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "6f43c08b-4392-59d2-b6b5-03c4777f67b5",
- "type": "spaces"
}
}
}
}
}List the products for a space. The products are returned in the order set up by admins, so should not be sorted again by the client.
Access: Any user can view products.
| spaceId required | string The id of the space to get the products for. |
| filter[scope] | Array of strings Items Enum: "externalBookings" "bookings" Only return products enabled for the given scopes. Returns products matching any of the provided scopes. Returns all products if no scope is provided. |
| include | string Value: "category" Include product categories. The categories are returned in the order set up by admins, so should not be sorted again by the client. |
{- "data": [
- {
- "id": "55c12f62ac8df98d29de357180d673e1",
- "type": "products",
- "attributes": {
- "name": "Cup of coffee",
- "description": "Hot",
- "accountingCode": "COFF",
- "costCenter": {
- "name": "Food",
- "number": "100"
}, - "revenueAccount": {
- "name": "Revenue Food",
- "number": "4000"
}, - "enabledForScopes": [
- "bookings",
- "externalBookings"
], - "pricing": {
- "unit": "person",
- "quantity": "1.0",
- "price": {
- "net": "5.0",
- "gross": "6.0",
- "currency": "EUR",
- "taxes": [
- {
- "name": "Tax",
- "rate": "20.0",
- "amount": "1.0"
}
]
}
}
}, - "relationships": {
- "space": {
- "data": {
- "id": "6f43c08b-4392-59d2-b6b5-03c4777f67b5",
- "type": "spaces"
}
}
}
}
]
}Create a new refund for an invoice.
Access: The current user must be an admin of the space the invoice was created in.
Data to create a refund.
required | object |
{- "data": {
- "type": "refunds",
- "attributes": {
- "amount": "100.0"
}, - "relationships": {
- "invoice": {
- "data": {
- "type": "invoices",
- "id": "c4d25d6e-9409-5055-ba83-b75b9c253e75"
}
}, - "paymentMethod": {
- "data": {
- "type": "paymentMethods",
- "id": "c4d25d6e-9409-5055-ba83-b75b9c253e75"
}
}
}
}
}{- "data": {
- "id": "re_3RTMx5EByf5Mzg1L1mOSUhV0",
- "type": "refunds",
- "attributes": {
- "amount": "100.0",
- "status": "success"
}, - "relationships": {
- "invoice": {
- "data": {
- "type": "invoices",
- "id": "c4d25d6e-9409-5055-ba83-b75b9c253e75"
}
}, - "paymentMethod": {
- "data": {
- "type": "paymentMethods",
- "id": "pm_3RTMx5EByf5Mzg1L1mOSUhV0"
}
}
}
}
}A resource can be booked on an hourly basis using the booking calendar. Examples are conference rooms, presentation equipment, bikes etc.
List the availability of multiple resources across all spaces in a network for a given time range. Considers existing bookings, each resource's booking times, cutoff, and calendar blockers.
Only resources that belong to spaces within the specified network will be included in the results. Resource IDs from outside the network will be filtered out.
Access: The current user must be an admin or member of any space in the network.
| networkId required | string The id of the network. |
| filter[from] required | string <date-time> The time from when on to return the availability. |
| filter[to] required | string <date-time> The time until when to return the availability. |
| filter[resourceIds] | Array of strings Comma-separated list of resource ids to return availabilities for. Only resources belonging to spaces in this network will be included. |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T10:00:00Z",
- "to": "2018-01-01T12:00:00Z"
}, - {
- "from": "2018-01-01T14:30:00Z",
- "to": "2018-01-01T19:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}
}
}, - {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T09:00:00Z",
- "to": "2018-01-01T11:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resources"
}
}
}
}
]
}Get a list of resources for all spaces in a network.
Access: The current user must be an admin or member of any space in the network.
| networkId required | string Id of the network. |
| filter[usage] | string Default: "bookable" Enum: "bookable" "allocatable" "all" Filter resources by their usage. Defaults to |
| filter[spaceIds] | string Example: filter[spaceIds]=space1,space2,space3 Comma-separated list of space IDs to filter resources by. If omitted, returns resources for all spaces in the network. |
| fields[resources] | string Sparse fieldset for resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
]
}List the bookable resources that are available to book at a given time across all spaces in a network.
This means there are fewer existing bookings than the resources' units.
For members, the resources' booking_times, cutoff, min/max duration and calendar blockers are also taken into account.
Only resources with usage: bookable are returned. Allocatable resources are not included.
Access: The current user must be an admin or member of any space in the network.
| networkId required | string Id of the network. |
| filter[from] required | string <date-time> The start of the timespan to check for availability. |
| filter[to] required | string <date-time> The end of the timespan to check for availability. |
| filter[spaceIds] | string Example: filter[spaceIds]=space1,space2,space3 Comma-separated list of space IDs to filter resources by. If omitted, returns resources for all spaces in the network. |
| filter[ignoreBookingId] | string Id of a booking to not consider when determining availability. Useful for determining availbility before moving a booking to a different time. |
| filter[ignoreBookingTimes] | string Enum: true false If set to true, returns resources as available even when the requested time is outside of the resource's booking times setting or blocked by calendar blockers. Option available only for admins of a space. |
| filter[resourceIds] | Array of strings Limit returned resources to the given resource ids (comma separated). |
| fields[resources] | string Sparse fieldset for resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
]
}Create a new resource in a space.
Access: The current user must be an admin of the space the resource if created in.
Data to create a resource.
required | object |
{- "data": {
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0"
}, - "discounts": [
- {
- "minimumDuration": {
- "hours": 2,
- "minutes": 30
}, - "pricePerHour": {
- "net": "11.25"
}
}
]
}, - "description": "Large room, fits 12.",
- "units": 2,
- "capacity": 12,
- "bookingCutoff": 1,
- "cancellationPeriod": 3,
- "minBookingDuration": 30,
- "maxBookingDuration": 480,
- "color": "#ff0000",
- "photo": {
- "data": "data:image/png;base64,cGhvdG8="
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "costCenter": {
- "name": "Bookings",
- "number": "Room 1"
}, - "revenueAccount": {
- "name": "Bookings",
- "number": "4000"
}
}, - "relationships": {
- "space": {
- "data": {
- "type": "spaces",
- "id": "c4d25d6e-9409-5055-ba83-b75b9c253e75"
}
}
}
}
}{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}See details of the resource.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| id required | string The id of the resource. |
| fields[resources] | string Sparse fieldset for resources. Include |
| include | Array of strings Items Value: "media" List of related resources to sideload in the |
{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}Update the details of a resource.
Access: The current user must be an admin of the space the resource belongs to.
| id required | string The id of the resource. |
The resource attributes to update.
required | object |
{- "data": {
- "type": "resources",
- "id": "2c2a8092-3273-50da-ba45-23badf1cdc5d",
- "attributes": {
- "name": "Meeting Room",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0"
}
}, - "description": "Large room, fits 12.",
- "units": 2,
- "capacity": 12,
- "bookingCutoff": 1,
- "cancellationPeriod": 3,
- "minBookingDuration": 30,
- "maxBookingDuration": 480,
- "color": "#ff0000",
- "photo": {
- "data": "data:image/png;base64,cGhvdG8="
}, - "bookingTimesString": "mo - tu 15:00 - 16:00"
}, - "relationships": {
- "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
}See the times a resource is still available to book. Considers existing bookings, the resource's booking times, cutoff and calendar blockers.
Only resources with usage: bookable are supported. Returns an error for allocatable resources.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| id required | string The id of the resource. |
| filter[from] required | string <date-time> The time from when on to return the availability. |
| filter[to] required | string <date-time> The time until when to return the availability. |
{- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T10:00:00Z",
- "to": "2018-01-01T12:00:00Z"
}, - {
- "from": "2018-01-01T14:30:00Z",
- "to": "2018-01-01T19:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}
}
}
}List the resources (and their categories) for a space.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| spaceId required | string The id of the space to get the resources for. |
| filter[usage] | string Default: "bookable" Enum: "bookable" "allocatable" "all" Filter resources by their usage. Defaults to |
| fields[resources] | string Sparse fieldset for resources. Include |
| include | Array of strings Items Enum: "categories" "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
], - "included": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories",
- "attributes": {
- "name": "Small Meeting Rooms"
}
}
]
}List the bookable resources that are available to book at a given time.
This means there are fewer existing bookings than the resources' units.
For members, the resources' booking_times, cutoff, min/max duration and calendar blockers are also taken into account.
Only resources with usage: bookable are returned. Allocatable resources are not included.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| spaceId required | string The id of the space to get the resources for. |
| filter[from] required | string <date-time> The start of the timespan to check for availability. |
| filter[to] required | string <date-time> The end of the timespan to check for availability. |
| filter[ignoreBookingId] | string Id of a booking to not consider when determining availability. Useful for determining availbility before moving a booking to a different time. |
| filter[ignoreBookingTimes] | string Enum: true false If set to true, returns resources as available even when the requested time is outside of the resource's booking times setting or blocked by calendar blockers. Option available only for admins of a space. |
| filter[resourceIds] | Array of strings Limit returned resources to the given resource ids (comma separated). |
| fields[resources] | string Sparse fieldset for resources. Include |
| include | Array of strings Items Enum: "categories" "media" List of related resources to sideload in the |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources",
- "attributes": {
- "name": "Meeting Room",
- "resourceType": "room",
- "usage": "bookable",
- "pricing": {
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
], - "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "priceCap": {
- "maximumDuration": {
- "hours": 8,
- "minutes": 0
}
}, - "discounts": [
- {
- "pricePerHour": {
- "net": "10.0",
- "gross": "12.0",
- "currency": "EUR",
- "taxes": [
- {
- "rate": "20.0",
- "name": "Tax"
}
]
}, - "minimumDuration": {
- "hours": 2,
- "minutes": 0
}
}
], - "priceCaps": [ ]
}, - "accountingCode": "ROOM",
- "area": [
- {
- "unit": "sqm",
- "number": 40
}, - {
- "unit": "sqft",
- "number": 431
}
], - "areaPreferredUnit": "sqm",
- "costCenter": {
- "name": "Room Bookings",
- "number": "ROOM3"
}, - "revenueAccount": {
- "name": "Room Bookings",
- "number": "4000"
}, - "description": "Large room, fits 12.",
- "hidden": false,
- "units": 2,
- "capacity": 12,
- "minBookingDuration": 10,
- "maxBookingDuration": 20,
- "color": "#ff0000",
- "bookingCutoff": 1,
- "cancellationPeriod": 0,
- "onlyAdminsCanBook": false,
- "canBook": true,
- "photo": {
- "icon": {
- "width": 120,
- "height": 120
}, - "default": {
- "width": 800,
- "height": 600
}
}, - "bookingTimesString": "mo - tu 15:00 - 16:00",
- "bookingTimes": [
- {
- "from": "15:00",
- "to": "16:00",
- "weekdays": [
- 1,
- 2
]
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "a927aa71ac8df98d29de357180d275a2",
- "type": "spaces"
}
}, - "resourceAvailability": {
- "links": {
}
}, - "categories": {
- "data": [
- {
- "id": "f227aa71ac8df98d29de357180d275a2",
- "type": "resourceCategories"
}
]
}, - "media": {
- "data": [
- {
- "id": "b6288a71ac8df98d29de357180d21c99",
- "type": "resourcePhotos"
}
]
}, - "products": {
- "data": [
- {
- "id": "69efec34ba8df98d29de35cc80d27565",
- "type": "products"
}
]
}
}
}
]
}List the availability of multiple resources in a space for a given time range. Considers existing bookings, each resource's booking times, cutoff, and calendar blockers.
Access: The current user must be an admin or member of the space. If the space is part of a network, the user must be an admin or member of any space in the network.
| spaceId required | string The id of the space. |
| filter[from] required | string <date-time> The time from when on to return the availability. |
| filter[to] required | string <date-time> The time until when to return the availability. |
| filter[resource_ids] required | Array of strings Comma-separated list of resource ids to return availabilities for. |
{- "data": [
- {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T10:00:00Z",
- "to": "2018-01-01T12:00:00Z"
}, - {
- "from": "2018-01-01T14:30:00Z",
- "to": "2018-01-01T19:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "a4a99a71ac8df98d29de357180d273d3",
- "type": "resources"
}
}
}
}, - {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resourceAvailabilities",
- "attributes": {
- "availableTimes": [
- {
- "from": "2018-01-01T09:00:00Z",
- "to": "2018-01-01T11:00:00Z"
}
]
}, - "relationships": {
- "resource": {
- "data": {
- "id": "b7b99a71ac8df98d29de357180d273d4",
- "type": "resources"
}
}
}
}
]
}Revenue accounts are used to categorize invoice items. Anything that can be invoiced can be assigned a revenue account. When a service/charge is added to an invoice, its revenue account will be assigned to the respective invoice item.
Lists all revenue accounts a space has set up.
Access: Only admins of the space can see the list of revenue accounts.
| spaceId required | string The id of the space to get the revenue accounts for. |
{- "data": [
- {
- "id": "3b6e2b72-8bac-5ca8-bd88-45c352737e57",
- "type": "revenueAccounts",
- "attributes": {
- "name": "RA1",
- "number": "124"
}, - "relationships": {
- "space": {
- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}A single page app consists of HTML, CSS and JavaScript code. It can be embedded into the Cobot UI via navigation links.
List single page apps. All apps that were created by the current OAuth client (determined via the access token) are returned.
{- "data": [
- {
- "type": "singlePageApps",
- "id": "9f46cb1f-628c-5c5c-b2ea-05b0b5b363d1",
- "attributes": {
- "name": "Demo App",
}
}
]
}Create single page app. To embed the app into the Cobot API, you need to create a navigation link for a space that references the single page app.
App data, i.e. URLs of the JS and CSS files.
required | object |
{- "data": {
- "type": "singlePageApps",
- "attributes": {
- "name": "Demo App",
}
}
}{- "data": {
- "type": "singlePageApps",
- "id": "9f46cb1f-628c-5c5c-b2ea-05b0b5b363d1",
- "attributes": {
- "name": "Demo App",
}
}
}Update a single page app's JavaScript and CSS.
| id required | string The id of the single page app. |
App data, i.e. URLs of the JS and CSS files.
required | object |
{- "data": {
- "type": "singlePageApps",
- "id": "9f46cb1f-628c-5c5c-b2ea-05b0b5b363d1",
- "attributes": {
- "name": "Demo App",
}
}
}{- "data": {
- "type": "singlePageApps",
- "id": "9f46cb1f-628c-5c5c-b2ea-05b0b5b363d1",
- "attributes": {
- "name": "Demo App",
}
}
}Fetch a single page app.
| id required | string The id of the single page app. |
{- "data": {
- "type": "singlePageApps",
- "id": "9f46cb1f-628c-5c5c-b2ea-05b0b5b363d1",
- "attributes": {
- "name": "Demo App",
}
}
}Access: Any user can access any space. Members and admins of the space see more details.
| spaceId required | string The id of the space. |
{- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaces",
- "attributes": {
- "name": "co.up",
- "email": "joe@doe.com",
- "description": "my space",
- "subdomain": "co-up",
- "createdAt": "2020-04-28",
- "countryCode": "DE",
- "locale": "de-DE",
- "logo": {
- "pdf": {
- "width": 400,
- "height": 400
}, - "default": {
- "width": 100,
- "height": 100
}
}, - "inEu": true,
- "timeZone": "Europe/Berlin",
- "defaultTaxes": [
- {
- "name": "VAT",
- "rate": "10.5"
}
], - "hourFormat": 24,
- "priceDisplay": "net",
- "priceDecimals": 2
}, - "relationships": {
- "owner": {
- "data": {
- "id": "23c37a61ac8df98d29de357180d273d3",
- "type": "users"
}
}, - "network": {
- "data": {
- "id": "17c37a61ac8df98d29de357180d273d4",
- "type": "networks"
}
}, - "availableResources": {
- "links": {
}
}, - "calendarBlockers": {
- "links": {
}
}, - "costCenters": {
}, - "revenueAccounts": {
- "links": {
}
}, - "products": {
}, - "resources": {
}, - "bookings": {
}, - "allocations": {
}, - "dropInPasses": {
}, - "externalBookingsPaymentMethods": {
- "links": {
}
}, - "events": {
}, - "externalBookings": {
- "links": {
}
}, - "externalResources": {
- "links": {
}
}, - "membershipProfiles": {
- "links": {
}
}, - "teams": {
}, - "urls": {
}, - "spaceProfile": {
}, - "membershipProfile": {
- "data": {
- "type": "membershipProfiles",
- "id": "21a4fa61ac8df94d29de357180d271a8"
}
}, - "accessToken": {
}, - "paymentMethods": {
- "links": {
}
}, - "missingTermsApproval": {
- "links": {
}
}
}
}
}Returns a space's billing details.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space. |
{- "data": {
- "id": "e5c5cb6b-84d1-5760-b7d3-072f7a87011a",
- "type": "billingDetails",
- "attributes": {
- "numberOfMemberships": 12,
- "company": "ACME Inc.",
- "name": "John Doe"
}
}
}Update a space's billing details.
Access: Only admins of a space can update the billing details.
| spaceId required | string The id of the space to update the billing details for. |
Data needed to update the billing details.
required | object |
{- "data": {
- "type": "billingDetailsRequests",
- "id": "ed766fc9db05da343e348995d4b337f6",
- "attributes": {
- "company": "ACME Inc.",
- "name": null,
- "address": "Coworking Str. 1",
- "billingEmail": "billing@acme.com"
}
}
}{- "data": {
- "id": "e5c5cb6b-84d1-5760-b7d3-072f7a87011a",
- "type": "billingDetails",
- "attributes": {
- "numberOfMemberships": 12,
- "company": "ACME Inc.",
- "name": null,
- "address": "Coworking Str. 1",
- "vatIdentificationNumber": "DE123456789",
- "billingEmail": "billing@acme.com"
}
}
}Get a space's payment method.
Access: Only admins of a space can get its payment method.
| spaceId required | string The id of the space to get the payment method for. |
{- "data": {
- "id": "pm_sfcterzredz",
- "type": "stripeSpacePaymentMethods",
- "attributes": {
- "paymentMethodType": "card",
- "cardNumber": "4242",
- "cardExpiry": {
- "month": 2,
- "year": 2026
}
}
}
}Update a space's payment method. Currently only Stripe is supported.
Access: Only admins of a space can update its payment method.
| spaceId required | string The id of the space to update the payment method for. |
Data needed to update a space's payment method.
required | object |
{- "data": {
- "type": "stripeSpacePaymentMethodRequests",
- "attributes": {
- "stripe_payment_method_id": "pm_sfcterzredz"
}
}
}{- "data": {
- "id": "pm_sfcterzredz",
- "type": "stripeSpacePaymentMethods",
- "attributes": {
- "paymentMethodType": "card",
- "cardNumber": "4242",
- "cardExpiry": {
- "month": 2,
- "year": 2026
}
}
}
}Preview creating a space. For now only returns an available subdomain for a given space name.
Access: Any user can preview spaces.
Data needed to create a preview.
required | object |
{- "data": {
- "type": "spacePreviews",
- "attributes": {
- "name": "demo"
}
}
}{- "data": {
- "id": "b8f21a71ac8df98d29de357180d273587",
- "type": "spacePreviews",
- "attributes": {
- "name": "demo",
- "subdomain": "demo-2"
}
}
}To obtain the link to a space profile, see the relationships of the corresponding space.
Access: Any user can access any space's profile information.
The location attribute is a free-form string. When a structured address is
available, it is returned in the structuredAddress attribute.
| id required | string The id of the space profile. |
{- "data": {
- "id": "f9a99a71ac8df98d29de357180d273d3",
- "type": "spaceProfiles",
- "attributes": {
- "location": "Berlin, DE",
- "phone": "555-123 456",
- "contactEmail": "info@cobot.me",
- "externalLinks": [
], - "openHours": [
- {
- "weekday": 1,
- "from": "09:00",
- "to": "17:00"
}, - {
- "weekday": 2,
- "from": "09:00",
- "to": "17:00"
}
]
}, - "relationships": {
}
}
}How much a space pays Cobot, how many members they can have and the extras they have booked.
Preview a space's subscription for the specified number of members and extras. Send a request without extras to get the available extra/tier ids.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space. |
Parameters of the subscription to preview.
required | object |
{- "data": {
- "type": "spaceSubscriptionPreviewRequests",
- "attributes": {
- "maximumNumberOfMemberships": 25,
- "extras": [
- {
- "type": "premiumSupportSubscriptionExtras"
}, - {
- "type": "externalBookingsSubscriptionExtras",
- "tier": {
- "name": "Accelerate"
}
}
]
}
}
}{- "data": {
- "id": "01339ea9-411f-5a32-8934-c0ffeb04f981",
- "type": "spaceSubscriptionPreviews",
- "attributes": {
- "available": true,
- "pricePerCycle": {
- "net": "44.1",
- "gross": "52.48",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "8.38"
}
]
}, - "totalPricePerCycle": {
- "net": "54.1",
- "gross": "64.38",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "10.28"
}
]
}, - "discount": {
- "percentage": "10.0",
- "originalPricePerCycle": {
- "net": "49.0",
- "gross": "58.31",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "9.31"
}
]
}
}, - "cycleDuration": 1,
- "maximumNumberOfMemberships": 15,
- "nextInvoiceDate": "2021-09-15",
- "extras": [
- {
- "name": "Custom extra",
- "id": "fac1d22a-c12a-54a1-a04b-84e08ebb2cbf",
- "type": "subscriptionExtras",
- "subscribed": true,
- "pricePerCycle": {
- "net": "10.0",
- "gross": "11.9",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "1.9"
}
]
}, - "cycleDuration": 1
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "4c15edaa-45a2-5704-9b52-20e8a8241297",
- "type": "spaces"
}
}
}
}
}Returns a space's current subscription, including member limit and any extras (subscribed and unsubscribed).
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space. |
{- "data": {
- "id": "01339ea9-411f-5a32-8934-c0ffeb04f981",
- "type": "subscriptions",
- "attributes": {
- "pricePerCycle": {
- "net": "44.1",
- "gross": "52.48",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "8.38"
}
]
}, - "totalPricePerCycle": {
- "net": "54.1",
- "gross": "64.38",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "10.28"
}
]
}, - "discount": {
- "percentage": "10.0",
- "originalPricePerCycle": {
- "net": "49.0",
- "gross": "58.31",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "9.31"
}
]
}
}, - "cycleDuration": 1,
- "maximumNumberOfMemberships": 15,
- "nextInvoiceDate": "2021-09-15",
- "extras": [
- {
- "name": "Custom extra",
- "id": "fac1d22a-c12a-54a1-a04b-84e08ebb2cbf",
- "type": "subscriptionExtras",
- "subscribed": true,
- "pricePerCycle": {
- "net": "10.0",
- "gross": "11.9",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "1.9"
}
]
}, - "cycleDuration": 1
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "4c15edaa-45a2-5704-9b52-20e8a8241297",
- "type": "spaces"
}
}
}
}
}Update or change a space's subscription.
To update the extras but not change the subscription, pass the id of a space's current
subscription as the chosenSubscription relationship.
To change the subscriptipn to one returned by the list subscriptions endpoint, pass the id of one of these subscriptions.
If the space had a previous subscription, custom extras
(type subscriptionExtras) are kept automatically and cannot be modified.
Other extras are dropped and extras whose id is passed in the request
payload are added. The id needs to be taken from the extras of the
chosenSubscription.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space. |
New subscription data.
required | object |
{- "data": {
- "type": "subscriptions",
- "attributes": {
- "extras": [
- {
- "id": "5138414e-9625-5a46-b959-ac1b81ae89d1",
- "type": "radiusSubscriptionExtras"
}, - {
- "id": "94682544-3c6e-508e-ab5c-1b298bd71fe2",
- "type": "premiumSupportSubscriptionExtras"
}, - {
- "id": "84cafc6c-da9d-580c-a164-8ce92e420630",
- "type": "externalBookingsSubscriptionExtras",
- "tier": {
- "id": "b2e0da32-08df-56d7-b1b1-9b63d6ebf42e"
}
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "144f3e8b-add4-5b88-945c-ceebe7feb136",
- "type": "spaces"
}
}, - "chosenSubscription": {
- "data": {
- "id": "10dffb83-df28-5111-9a9c-3d042a4c164e",
- "type": "subscriptions"
}
}
}
}
}{- "data": {
- "id": "01339ea9-411f-5a32-8934-c0ffeb04f981",
- "type": "subscriptions",
- "attributes": {
- "pricePerCycle": {
- "net": "44.1",
- "gross": "52.48",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "8.38"
}
]
}, - "totalPricePerCycle": {
- "net": "54.1",
- "gross": "64.38",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "10.28"
}
]
}, - "discount": {
- "percentage": "10.0",
- "originalPricePerCycle": {
- "net": "49.0",
- "gross": "58.31",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "9.31"
}
]
}
}, - "cycleDuration": 1,
- "maximumNumberOfMemberships": 15,
- "nextInvoiceDate": "2021-09-15",
- "extras": [
- {
- "name": "Custom extra",
- "id": "fac1d22a-c12a-54a1-a04b-84e08ebb2cbf",
- "type": "subscriptionExtras",
- "subscribed": true,
- "pricePerCycle": {
- "net": "10.0",
- "gross": "11.9",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "1.9"
}
]
}, - "cycleDuration": 1
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "4c15edaa-45a2-5704-9b52-20e8a8241297",
- "type": "spaces"
}
}
}
}
}Returns all subscriptions available to spaces, including member limit, whether they are available and any extras.
Access: The current user must be an admin of the space.
| spaceId required | string The id of the space. |
{- "data": [
- {
- "id": "01339ea9-411f-5a32-8934-c0ffeb04f981",
- "type": "subscriptions",
- "attributes": {
- "available": true,
- "pricePerCycle": {
- "net": "44.1",
- "gross": "52.48",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "8.38"
}
]
}, - "totalPricePerCycle": {
- "net": "54.1",
- "gross": "64.38",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "10.28"
}
]
}, - "discount": {
- "percentage": "10.0",
- "originalPricePerCycle": {
- "net": "49.0",
- "gross": "58.31",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "9.31"
}
]
}
}, - "cycleDuration": 1,
- "maximumNumberOfMemberships": 15,
- "nextInvoiceDate": "2021-09-15",
- "extras": [
- {
- "name": "Custom extra",
- "id": "fac1d22a-c12a-54a1-a04b-84e08ebb2cbf",
- "type": "subscriptionExtras",
- "subscribed": true,
- "pricePerCycle": {
- "net": "10.0",
- "gross": "11.9",
- "currency": "EUR",
- "taxes": [
- {
- "name": "MwSt.",
- "rate": "19.0",
- "amount": "1.9"
}
]
}, - "cycleDuration": 1
}
]
}, - "relationships": {
- "space": {
- "data": {
- "id": "4c15edaa-45a2-5704-9b52-20e8a8241297",
- "type": "spaces"
}
}
}
}
]
}These URLs/URL templates enable API clients to provide links to the Cobot web interface without having to hard-code them.
Each Url includes a unique, never changing identifier and either a url
or urlTemplate. Templates must be expanded according to RFC 6570.
This endpoints lists URLs and URL templates for a space. Some URLs might be missing in some spaces depending on the space's settings.
More URLs will be added over time.
Access: Any user can access the URLs for a space.
| spaceId required | string The id of the space. |
{- "data": [
- {
- "id": "eeb87942-e855-5310-89c2-9b2e75ff3402",
- "type": "urls",
- "attributes": {
- "identifier": "admin:accounting-codes",
- "label": "Manage a space's accounting codes in the admin section",
}
}, - {
- "id": "95334eb24-g5eg-dge4-weff-2342ze4tt22e",
- "type": "urls",
- "attributes": {
- "identifier": "admin:contact",
- "label": "A single space contact",
}
}, - {
- "id": "9a1f2875-45f6-50c6-b943-e4b2d90de5cb",
- "type": "urls",
- "attributes": {
- "identifier": "admin:new-membership",
- "label": "New membership form",
}
}
]
}A user is used to log in to Cobot via email/password. Users can be admins/members (see Membership) in multiple spaces.
The adminOf/membershipOf relationships return the spaces that the user
is an admin or member of.
The memberships relationship returns the actual membership data.
| include | Array of strings Items Enum: "memberOf" "adminOf" "memberships" List of related resources to include in response. Provide a comma separated list of relationship names.
|
{- "data": {
- "id": "d9a99a71ac8df98d29de357180d273d3",
- "type": "users",
- "attributes": {
- "email": "joe@cobot.me"
}, - "relationships": {
- "adminOf": {
- "data": [
- {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
]
}, - "memberOf": {
- "data": [
- {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
]
}, - "memberships": {
- "data": [
- {
- "id": "c0260b6b429285540c5498cbe072b13a",
- "type": "memberships"
}
]
}
}
}
}Preview creating a user email. Returns 409 status if email is taken or 204 status if email address is free.
Data needed to create a preview.
required | object |
{- "data": {
- "type": "userEmailPreviews",
- "attributes": {
- "email": "admin@example.com"
}
}
}{- "errors": [
- {
- "detail": "Email address is taken."
}
]
}Creates a charge for a membership or team in a space.
Access: The current user must be an admin of the space.
Data required to create a charge.
required | object |
{- "data": {
- "type": "charges",
- "attributes": {
- "description": "Coffee",
- "amount": {
- "net": "10.5"
}, - "quantity": "2.0",
- "accountingCode": "BEV",
- "carryOver": false,
- "costCenter": {
- "name": "Drinks",
- "number": "CC1"
}, - "revenueAccount": {
- "name": "Beverages",
- "number": "RA1"
}, - "chargeAt": "2018-12-15"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "billable": {
- "data": {
- "id": "32c76cb66b5e6b39007690854fd668a1",
- "type": "memberships"
}
}
}
}
}{- "data": {
- "id": "51b8fa71ac8df98d29de357180d274d8",
- "type": "charges",
- "attributes": {
- "description": "Coffee",
- "amount": {
- "net": "10.5",
- "gross": "12.6",
- "currency": "EUR",
- "taxes": [
- {
- "name": "VAT",
- "rate": "20.0"
}
]
}, - "quantity": "2.0",
- "accountingCode": "BEV",
- "carryOver": false,
- "costCenter": {
- "name": "Drinks",
- "number": "CC1"
}, - "revenueAccount": {
- "name": "Beverages",
- "number": "RA1"
}, - "chargeAt": "2018-12-15"
}, - "relationships": {
- "space": {
- "data": {
- "id": "99da6cb66b5e6b39007690854fd66df9",
- "type": "spaces"
}
}, - "owner": {
- "data": {
- "id": "89da3cb66b5e6b39007690854kd66da4",
- "type": "memberships"
}
}
}
}
}Get a list of teams for a space.
Access: The current user must be an admin of the space.
| spaceId required | string Id of the space. |
| filter[from] required | string <date> Example: filter[from]=2020-04-20 Only return teams that have not been canceled or been canceled on or after the given date. |
| filter[to] required | string <date> Example: filter[to]=2020-04-20 Only return teams that have been confirmed before or on the given date. |
{- "data": [
- {
- "id": "kac12f62ac8df98d29de357180d6kdj4",
- "type": "teams",
- "attributes": {
- "name": "ACME",
- "billingAddress": {
- "name": "",
- "company": "ACME Inc.",
- "fullAddress": "1234 Elm St, Springfield, BC 12345",
- "street": "1234 Elm St",
- "postCode": "12345",
- "city": "Springfield",
- "state": "BC",
- "countryCode": "CA"
}, - "billingEmails": [
- "zimozzom@dujid.mh"
], - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "taxId": "DE123456789",
- "customerNumber": "t-1241"
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
]
}Get a single team.
Access: The current user must be an admin of the space the team belongs to.
| id required | string Id of the team. |
{- "data": {
- "id": "kac12f62ac8df98d29de357180d6kdj4",
- "type": "teams",
- "attributes": {
- "name": "ACME",
- "billingAddress": {
- "name": "",
- "company": "ACME Inc.",
- "fullAddress": "1234 Elm St, Springfield, BC 12345",
- "street": "1234 Elm St",
- "postCode": "12345",
- "city": "Springfield",
- "state": "BC",
- "countryCode": "CA"
}, - "billingEmails": [
- "zimozzom@dujid.mh"
], - "photo": {
- "thumb": {
- "width": 50,
- "height": 50
}, - "small": {
- "width": 120,
- "height": 120
}, - "large": {
- "width": 285,
- "height": 285
}, - "xlarge": {
- "width": 600,
- "height": 600
}, - "hd": {
- "width": 1200,
- "height": 1200
}
}, - "taxId": "DE123456789",
- "customerNumber": "t-1241"
}, - "relationships": {
- "space": {
- "data": {
- "id": "c9a99a71ac8df98d29de357180d273d3",
- "type": "spaces"
}
}
}
}
}