.. Netfiles API documentation master file, created by
   sphinx-quickstart on Fri Mar  6 11:42:21 2020.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Meeting
=======

A **Meeting** object represent a meeting consisting of various additional information such as ``overview``, ``agenda``, etc.


Meeting Object
--------------

A **Meeting** is a HyperWave object of ``documentClass == "NF_Meeting"`` and ``type == "collection"``.

+-----------------------+-----------------------+---------------------------------------------------------------+
| Attribute Name        | Attribute Type        | Comments                                                      |
+=======================+=======================+===============================================================+
| id                    | String                | The globally Unique ID of the object                          |
+-----------------------+-----------------------+---------------------------------------------------------------+
| documentClass         | String                | "NF_Meeting"                                                  |
+-----------------------+-----------------------+---------------------------------------------------------------+
| type                  | String                | "collection"                                                  |
+-----------------------+-----------------------+---------------------------------------------------------------+
| version               | String                | Current version of the object                                 |
+-----------------------+-----------------------+---------------------------------------------------------------+
| author                | String                | Name of the user who created this object                      |
+-----------------------+-----------------------+---------------------------------------------------------------+
| creationDate          | DateTime              | Date & Time of Creation                                       |
+-----------------------+-----------------------+---------------------------------------------------------------+
| modificationDate      | DateTime              | Date & Time of last modification                              |
+-----------------------+-----------------------+---------------------------------------------------------------+
| name                  | String                | The name of the object                                        |
+-----------------------+-----------------------+---------------------------------------------------------------+
| owner                 | String                | Owner of the object                                           |
+-----------------------+-----------------------+---------------------------------------------------------------+
| title                 | String                | Title of the object usually shown to the users                |
+-----------------------+-----------------------+---------------------------------------------------------------+
| path                  | String                | Path relative to the server                                   |
+-----------------------+-----------------------+---------------------------------------------------------------+
| downloadProhibited    | Boolean               | Whether the download is prohibited or not                     |
+-----------------------+-----------------------+---------------------------------------------------------------+
| writeAccess           | Boolean               | Whether writing is allowed for the current user               |
+-----------------------+-----------------------+---------------------------------------------------------------+
| subDocs               | String                | As a string the number of documents below this level          |
+-----------------------+-----------------------+---------------------------------------------------------------+

Additionally to the standard HW_Object Attributes, we have the following attributes for **Meeting**:

+--------------------------+-----------------------+------------------------------------------------------------+
| Attribute Name           | Attribute Type        | Comments                                                   |
+==========================+=======================+============================================================+
| subject                  | String                | The subject of the meeting                                 |
+--------------------------+-----------------------+------------------------------------------------------------+
| description              | String                | A long description of the meeting itself                   |
+--------------------------+-----------------------+------------------------------------------------------------+
| location                 | String                | The location of the meeting; free-text                     |
+--------------------------+-----------------------+------------------------------------------------------------+
| beginDateTime            | DateTime              | Begin of the meeting (Date + Time / HWDateTime Format)     |
+--------------------------+-----------------------+------------------------------------------------------------+
| endDateTime              | DateTime              | Scheduled end of the meeting                               |
+--------------------------+-----------------------+------------------------------------------------------------+
| host                     | List<NFParticipant>   | JSON Array representing a list of NFParticipant (s. below) |
+--------------------------+-----------------------+------------------------------------------------------------+
| participants             | List<NFParticipant>   | JSON Array representing a list of NFParticipant (s. below) |
+--------------------------+-----------------------+------------------------------------------------------------+
| guests                   | List<NFParticipant>   | JSON Array representing a list of NFParticipant (s. below) |
+--------------------------+-----------------------+------------------------------------------------------------+
| minutesRecorders         | List<NFParticipant>   | JSON Array representing a list of NFParticipant (s. below) |
+--------------------------+-----------------------+------------------------------------------------------------+
| organizers               | List<NFParticipant>   | JSON Array representing a list of NFParticipant (s. below) |
+--------------------------+-----------------------+------------------------------------------------------------+
| status                   | String                | S. below                                                   |
+--------------------------+-----------------------+------------------------------------------------------------+

This object has children, which can be retrieved using :doc:`Get Children </calls/getchildren>`. The children
of an object of ``documentClass`` ``NF_Meeting`` can only be objects of ``documentClass`` ``NF_MeetingTopic`` as described
in :doc:`Meeting Topic <meetingtopic>`. There can be no other types of objects.


Example
-------

.. code::

    {
        "type": "collection",
        "id": "ID-29855.6518164830341-1",
        "path": "/imdatag/meetings/Vorstand/Q3_2020",
        "subject": "Ordentliche VS Q3/2020",
        "documentClass": "NF_Meeting",
        "version": "",
        "downloadProhibited": false,
        "title": "Q3/2020",
        "name": "Q3_2020",
        "creationDate": "2020/06/12 07:16:30 +0000",
        "modificationDate": "2020/06/12 07:16:30 +0000",
        "author": "   ",
        "writeAccess": true,
        "owner": "{ UObjrealname: \"Creator o. Object\", UObjname: \"creator_o_object\"}",
        "subDocs": "0",
        "description": "Quartalsbericht Q3/2020",
        "location": "MR 'Paris', München",
        "beginDateTime": "2020/10/10 09:00:00 +0000",
        "endDateTime": "2020/10/10 17:00:00 +0000",
        "host": [ { UObjrealname: "Imdat Solak", UObjname: "ID-29855.6447815569618-1"} ],
        "participants": [ { UObjrealname: "Hans Müller", UObjname:""}, { UObjrealname: "Tom Krempl", UObjname: "ID-29855.6518164830361-1"}],
        "guests": [],
        "minutesRecorders": [],
        "organizers": [],
        "status": "approved"
    }


Explanation
-----------

NFParticipant
  Any data containing person information (host, participant, etc.) consists of a json-structure per
  person of type described below. If it contains a Hyperwave object ID (``UObjname`` != ``""``), the user data is
  retrieved using :doc:`Get Object </calls/getobject>` call. Otherwise the ``UObjrealname`` is used as is.

.. code::

  NFParticipant := {
    UObjrealname: string,
    UObjname: string
  }


host
  This is the host of the meeting. Though there can be only one host, the server by design & specification
  returns an array with at most one entry.

  Examples:

.. code::

  host: [
      {
        UObjrealname: "Tom Krempl",
        UObjname: "ID-29855.6518164830361-1"
      }
  ]

  or

  host: [
      {
        UObjrealname: "Imdat Solak",
        UObjname: ""
      }
  ]

participants, guests
  This is the list of *voting* and *non-voting* participants of the meeting. They can be empty list or lists of NFParticipants

  Examples:

.. code::

  participants: [
    {
        UObjrealname: "Tom Krempl",
        UObjname: "ID-29855.6518164830361-1"
    },
    {
        UObjrealname: "Hans Meiser",
        UObjname: ""
    }
  ],
  guests: []

minutesRecorders
  This is the list of people who are allowed to record the minutes ("Protokollführer"). Is is an empty list, or a list
  containing ``NFParticipants``.
  **Important:** Minutes recorders have additional rights (s. specification)

organizers
  The list of organizers for this specific meeting.
  **Important:** organizers have additional rights (s. specification)

status
  is any of ``none``, ``created``, ``approved``, ``started``, or ``done``. It represents the
  status of the meeting. Currently, only ``done`` is used.
  Default (if the user has not changed anything) is ``none``.

