From 0fc4478332fe67527a4578cc0309ca363e9e6a9e Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Mar 2020 15:56:51 +0100 Subject: [PATCH] Add docs on pretix-digital --- doc/plugins/digital.rst | 277 ++++++++++++++++++++++++++++++++++++++++ doc/plugins/index.rst | 1 + 2 files changed, 278 insertions(+) create mode 100644 doc/plugins/digital.rst diff --git a/doc/plugins/digital.rst b/doc/plugins/digital.rst new file mode 100644 index 0000000000..48ca968410 --- /dev/null +++ b/doc/plugins/digital.rst @@ -0,0 +1,277 @@ +Digital content +=============== + +The digital content plugin provides a HTTP API that allows you to create new digital content for your ticket holders, +such as live streams, videos, or material downloads. + +Resource description +-------------------- + +The digital content resource contains the following public fields: + +.. rst-class:: rest-resource-table + +===================================== ========================== ======================================================= +Field Type Description +===================================== ========================== ======================================================= +id integer Internal content ID +title multi-lingual string The content title (required) +content_type string The type of content, valid values are ``webinar``, ``video``, ``livestream``, ``link``, ``file`` +url string The location of the digital content +description multi-lingual string A public description of the item. May contain Markdown + syntax and is not required. +available_from datetime The first date time at which this content will be shown + (or ``null``). +available_until datetime The last date time at which this content will b e shown + (or ``null``). +all_products boolean If ``true``, the content is available to all buyers of tickets for this event. The ``limit_products`` field is ignored in this case. +limit_products list of integers List of product/item IDs. This content is only shown to buyers of these ticket types. +position integer An integer, used for sorting +subevent integer Date in an event series this content should be shown for. Should be ``null`` if this is not an event series or if this should be shown to all customers. +===================================== ========================== ======================================================= + +Endpoints +--------- + +.. http:get:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/ + + Returns a list of all digital content configured for an event. + + **Example request**: + + .. sourcecode:: http + + GET /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/ 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, + "subevent": null, + "title": { + "en": "Concert livestream" + }, + "content_type": "link", + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "description": { + "en": "Watch our event live here on YouTube!" + }, + "all_products": true, + "limit_products": [], + "available_from": "2020-03-22T23:00:00Z", + "available_until": null, + "position": 1 + } + ] + } + + :query page: The page number in case of a multi-page result set, default is 1 + :param organizer: The ``slug`` field of a valid organizer + :param event: The ``slug`` field of the event to fetch + :statuscode 200: no error + :statuscode 401: Authentication failure + :statuscode 403: The requested organizer or event does not exist **or** you have no permission to view it. + +.. http:get:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/ + + Returns information on one content item, identified by its ID. + + **Example request**: + + .. sourcecode:: http + + GET /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/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, + "subevent": null, + "title": { + "en": "Concert livestream" + }, + "content_type": "link", + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "description": { + "en": "Watch our event live here on YouTube!" + }, + "all_products": true, + "limit_products": [], + "available_from": "2020-03-22T23:00:00Z", + "available_until": null, + "position": 1 + } + + :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 content to fetch + :statuscode 200: no error + :statuscode 401: Authentication failure + :statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to view it. + +.. http:post:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/ + + Create a new digital content. + + **Example request**: + + .. sourcecode:: http + + POST /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/ HTTP/1.1 + Host: pretix.eu + Accept: application/json, text/javascript + Content-Type: application/json + Content-Length: 166 + + { + "subevent": null, + "title": { + "en": "Concert livestream" + }, + "content_type": "link", + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "description": { + "en": "Watch our event live here on YouTube!" + }, + "all_products": true, + "limit_products": [], + "available_from": "2020-03-22T23:00:00Z", + "available_until": null, + "position": 1 + } + + **Example response**: + + .. sourcecode:: http + + HTTP/1.1 201 Created + Vary: Accept + Content-Type: application/json + + { + "id": 2, + "subevent": null, + "title": { + "en": "Concert livestream" + }, + "content_type": "link", + "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "description": { + "en": "Watch our event live here on YouTube!" + }, + "all_products": true, + "limit_products": [], + "available_from": "2020-03-22T23:00:00Z", + "available_until": null, + "position": 1 + } + + :param organizer: The ``slug`` field of the organizer to create new content for + :param event: The ``slug`` field of the event to create new content for + :statuscode 201: no error + :statuscode 400: The content 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 digital contents. + + +.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/ + + Update a content. 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/digitalcontents/1/ HTTP/1.1 + Host: pretix.eu + Accept: application/json, text/javascript + Content-Type: application/json + Content-Length: 34 + + { + "url": "https://mywebsite.com" + } + + **Example response**: + + .. sourcecode:: http + + HTTP/1.1 200 OK + Vary: Accept + Content-Type: text/javascript + + { + "id": 2, + "subevent": null, + "title": { + "en": "Concert livestream" + }, + "content_type": "link", + "url": "https://mywebsite.com", + "description": { + "en": "Watch our event live here on YouTube!" + }, + "all_products": true, + "limit_products": [], + "available_from": "2020-03-22T23:00:00Z", + "available_until": null, + "position": 1 + } + + :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 content to modify + :statuscode 200: no error + :statuscode 400: The content could not be modified due to invalid submitted data. + :statuscode 401: Authentication failure + :statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to change it. + + +.. http:delete:: /api/v1/organizers/(organizer)/events/(event)/digitalcontents/(id)/ + + Delete a digital content. + + **Example request**: + + .. sourcecode:: http + + DELETE /api/v1/organizers/bigevents/events/sampleconf/digitalcontents/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 content to delete + :statuscode 204: no error + :statuscode 401: Authentication failure + :statuscode 403: The requested organizer/event/content does not exist **or** you have no permission to change it diff --git a/doc/plugins/index.rst b/doc/plugins/index.rst index 0e16fe4dd4..fc8a7f9686 100644 --- a/doc/plugins/index.rst +++ b/doc/plugins/index.rst @@ -15,3 +15,4 @@ If you want to **create** a plugin, please go to the ticketoutputpdf badges campaigns + digital