mirror of
https://github.com/pretix/pretix.git
synced 2025-12-11 01:22:28 +00:00
556 lines
22 KiB
ReStructuredText
556 lines
22 KiB
ReStructuredText
.. spelling:word-list:: checkin
|
|
|
|
Scheduled data exports
|
|
======================
|
|
|
|
pretix and it's plugins include a number of data exporters that allow you to bulk download various data from pretix in
|
|
different formats. You should read :ref:`rest-exporters` first to get an understanding of the basic mechanism.
|
|
|
|
Exports can be scheduled to be sent at specific times automatically, both on organizer level and event level.
|
|
|
|
Scheduled export resource
|
|
-------------------------
|
|
|
|
The scheduled export contains the following public fields:
|
|
|
|
.. rst-class:: rest-resource-table
|
|
|
|
===================================== ========================== =======================================================
|
|
Field Type Description
|
|
===================================== ========================== =======================================================
|
|
id integer Internal ID of the schedule
|
|
owner string Email address of the user who created this schedule (read-only).
|
|
This address will always receive the export and the export
|
|
will only contain data that this user has permission
|
|
to access at the time of the export. **We consider this
|
|
field experimental, it's behaviour might change in the future.
|
|
Note that the email address of a user can change at any time.**
|
|
export_identifier string Identifier of the export to run, see :ref:`rest-exporters`
|
|
export_form_data object Input data for the export, format depends on the export,
|
|
see :ref:`rest-exporters` for more details.
|
|
locale string Language to run the export in
|
|
mail_additional_recipients string Email addresses to receive the export, comma-separated (or empty string)
|
|
mail_additional_recipients_cc string Email addresses to receive the export in copy, comma-separated (or empty string)
|
|
mail_additional_recipients_bcc string Email addresses to receive the exportin blind copy, comma-separated (or empty string)
|
|
mail_subject string Subject to use for the email (currently no variables supported)
|
|
mail_template string Text to use for the email (currently no variables supported)
|
|
schedule_rrule string Recurrence specification to determine the **days** this
|
|
schedule runs on in ``RRULE`` syntax following `RFC 5545`_
|
|
with some restrictions. Only one rule is allowed, only
|
|
one occurrence per day is allowed, and some features
|
|
are not supported (``BYMONTHDAY``, ``BYYEARDAY``,
|
|
``BYEASTER``, ``BYWEEKNO``).
|
|
schedule_rrule_time time Time of day to run this on on the specified days.
|
|
Will be interpreted as local time of the event for event-level
|
|
exports. For organizer-level exports, the timezone is given
|
|
in the field ``timezone``. The export will never run **before**
|
|
this time but it **may** run **later**.
|
|
timezone string Time zone to interpret the schedule in (only for organizer-level exports)
|
|
schedule_next_run datetime Next planned execution (read-only, computed by server)
|
|
error_counter integer Number of consecutive times this export failed (read-only).
|
|
After a number of failures (currently 5), the schedule no
|
|
longer is executed. Changing parameters resets the value.
|
|
===================================== ========================== =======================================================
|
|
|
|
Special notes on permissions
|
|
----------------------------
|
|
|
|
Permission handling for scheduled exports is more complex than for most other objects. The reason for this is that
|
|
there are two levels of access control involved here: First, you need permission to access or change the configuration
|
|
of the scheduled exports in the moment you are doing it. Second, you **continuously** need permission to access the
|
|
**data** that is exported as part of the schedule. For this reason, scheduled exports always need one user account
|
|
to be their **owner**.
|
|
|
|
Therefore, scheduled exports **must** be created by an API client using :ref:`OAuth authentication <rest-oauth>`.
|
|
It is impossible to create a scheduled export using token authentication. After the export is created, it can also be
|
|
modified using token authentication.
|
|
|
|
A user or token with the "can change settings" permission for a given organizer or event can see and change
|
|
**all** scheduled exports created for the respective organizer or event, regardless of who created them.
|
|
A user without this permission can only see **their own** scheduled exports.
|
|
A token without this permission can not see scheduled exports as all.
|
|
|
|
|
|
|
|
Endpoints for event exports
|
|
---------------------------
|
|
|
|
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/scheduled_exports/
|
|
|
|
Returns a list of all scheduled exports the client has access to.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
GET /api/v1/organizers/bigevents/events/sampleconf/scheduled_exports/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"count": 1,
|
|
"next": null,
|
|
"previous": null,
|
|
"results": [
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"error_counter": 0
|
|
}
|
|
]
|
|
}
|
|
|
|
:query integer page: The page number in case of a multi-page result set, default is 1
|
|
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``id``, ``export_identifier``, and ``schedule_next_run``.
|
|
Default: ``id``
|
|
:param organizer: The ``slug`` field of the organizer to fetch
|
|
:param event: The ``slug`` field of the event to fetch
|
|
:statuscode 200: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
|
|
|
|
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/scheduled_exports/(id)/
|
|
|
|
Returns information on one scheduled export, identified by its ID.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
GET /api/v1/organizers/bigevents/events/sampleconf/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer to fetch
|
|
:param event: The ``slug`` field of the event to fetch
|
|
:param id: The ``id`` field of the scheduled export to fetch
|
|
:statuscode 200: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
|
|
|
|
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/scheduled_exports/
|
|
|
|
Schedule a new export.
|
|
|
|
.. note:: See above for special notes on permissions.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
POST /api/v1/organizers/bigevents/events/sampleconf/scheduled_exports/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00"
|
|
}
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 201 Created
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer of the event to create an item for
|
|
:param event: The ``slug`` field of the event to create an item for
|
|
:statuscode 201: no error
|
|
:statuscode 400: The item could not be created due to invalid submitted data.
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to create this resource.
|
|
|
|
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/scheduled_exports/(id)/
|
|
|
|
Update a scheduled export. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
|
|
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
|
|
want to change.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
PATCH /api/v1/organizers/bigevents/events/sampleconf/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
Content-Type: application/json
|
|
Content-Length: 94
|
|
|
|
{
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_this"},
|
|
}
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_this"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer to modify
|
|
:param event: The ``slug`` field of the event to modify
|
|
:param id: The ``id`` field of the export to modify
|
|
:statuscode 200: no error
|
|
:statuscode 400: The export could not be modified due to invalid submitted data
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to change this resource.
|
|
|
|
.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/scheduled_exports/(id)/
|
|
|
|
Delete a scheduled export.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
DELETE /api/v1/organizers/bigevents/events/sampleconf/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 204 No Content
|
|
Vary: Accept
|
|
|
|
:param organizer: The ``slug`` field of the organizer to modify
|
|
:param event: The ``slug`` field of the event to modify
|
|
:param id: The ``id`` field of the export to delete
|
|
:statuscode 204: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to delete this resource.
|
|
|
|
Endpoints for organizer exports
|
|
---------------------------
|
|
|
|
.. http:get:: /api/v1/organizers/(organizer)/scheduled_exports/
|
|
|
|
Returns a list of all scheduled exports the client has access to.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
GET /api/v1/organizers/bigevents/scheduled_exports/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"count": 1,
|
|
"next": null,
|
|
"previous": null,
|
|
"results": [
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"timezone": "Europe/Berlin",
|
|
"error_counter": 0
|
|
}
|
|
]
|
|
}
|
|
|
|
:query integer page: The page number in case of a multi-page result set, default is 1
|
|
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``id``, ``export_identifier``, and ``schedule_next_run``.
|
|
Default: ``id``
|
|
:param organizer: The ``slug`` field of the organizer to fetch
|
|
:statuscode 200: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
|
|
|
|
.. http:get:: /api/v1/organizers/(organizer)/scheduled_exports/(id)/
|
|
|
|
Returns information on one scheduled export, identified by its ID.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
GET /api/v1/organizers/bigevents/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"timezone": "Europe/Berlin",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer to fetch
|
|
:param id: The ``id`` field of the scheduled export to fetch
|
|
:statuscode 200: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer does not exist **or** you have no permission to view this resource.
|
|
|
|
.. http:post:: /api/v1/organizers/(organizer)/scheduled_exports/
|
|
|
|
Schedule a new export.
|
|
|
|
.. note:: See above for special notes on permissions.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
POST /api/v1/organizers/bigevents/scheduled_exports/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"timezone": "Europe/Berlin"
|
|
}
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 201 Created
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_previous"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"timezone": "Europe/Berlin",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer of the event to create an item for
|
|
:statuscode 201: no error
|
|
:statuscode 400: The item could not be created due to invalid submitted data.
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer does not exist **or** you have no permission to create this resource.
|
|
|
|
.. http:patch:: /api/v1/organizers/(organizer)/scheduled_exports/(id)/
|
|
|
|
Update a scheduled export. You can also use ``PUT`` instead of ``PATCH``. With ``PUT``, you have to provide all fields of
|
|
the resource, other fields will be reset to default. With ``PATCH``, you only need to provide the fields that you
|
|
want to change.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
PATCH /api/v1/organizers/bigevents/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
Content-Type: application/json
|
|
Content-Length: 94
|
|
|
|
{
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_this"},
|
|
}
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 200 OK
|
|
Vary: Accept
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"id": 1,
|
|
"owner": "john@example.com",
|
|
"export_identifier": "orderlist",
|
|
"export_form_data": {"_format": "xlsx", "date_range": "week_this"},
|
|
"locale": "en",
|
|
"mail_additional_recipients": "mary@example.org",
|
|
"mail_additional_recipients_cc": "",
|
|
"mail_additional_recipients_bcc": "",
|
|
"mail_subject": "Order list",
|
|
"mail_template": "Here is last week's order list\n\nCheers\nJohn",
|
|
"schedule_rrule": "DTSTART:20230118T000000\nRRULE:FREQ=WEEKLY;BYDAY=TU,WE,TH",
|
|
"schedule_rrule_time": "04:00:00",
|
|
"schedule_next_run": "2023-10-26T02:00:00Z",
|
|
"timezone": "Europe/Berlin",
|
|
"error_counter": 0
|
|
}
|
|
|
|
:param organizer: The ``slug`` field of the organizer to modify
|
|
:param id: The ``id`` field of the export to modify
|
|
:statuscode 200: no error
|
|
:statuscode 400: The export could not be modified due to invalid submitted data
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer does not exist **or** you have no permission to change this resource.
|
|
|
|
.. http:delete:: /api/v1/organizers/(organizer)/scheduled_exports/(id)/
|
|
|
|
Delete a scheduled export.
|
|
|
|
**Example request**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
DELETE /api/v1/organizers/bigevents/scheduled_exports/1/ HTTP/1.1
|
|
Host: pretix.eu
|
|
Accept: application/json, text/javascript
|
|
|
|
**Example response**:
|
|
|
|
.. sourcecode:: http
|
|
|
|
HTTP/1.1 204 No Content
|
|
Vary: Accept
|
|
|
|
:param organizer: The ``slug`` field of the organizer to modify
|
|
:param id: The ``id`` field of the export to delete
|
|
:statuscode 204: no error
|
|
:statuscode 401: Authentication failure
|
|
:statuscode 403: The requested organizer does not exist **or** you have no permission to delete this resource.
|
|
|
|
|
|
.. _RFC 5545: https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3 |