openapi: 3.0.1
info:
  title: Agenda Rest APIs
  description: Agenda addon Rest endpoints
  license:
    name: AGPL
    url: https://www.gnu.org/licenses/agpl-3.0.en.html
  version: "1.0"
tags:
- name: /v1/agenda/calendars
  description: Manages agenda calendars associated to users and spaces
- name: /v1/agenda/events
  description: Manages agenda events associated to users and spaces
- name: /v1/agenda/settings
  description: Manages agenda settings associated to users
paths:
  /v1/agenda/calendars:
    get:
      tags:
      - /v1/agenda/calendars
      summary: Retrieves the list of calendars
      description: "Retrieves the list of calendars available for an owner of type\
        \ user or space, identitifed by its identity technical identifier. If no designated\
        \ owner, all calendars available for authenticated user will be retrieved."
      operationId: list
      parameters:
      - name: ownerIds
        in: query
        description: Limit of calendar owner identity ids to incluse in results
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: returnSize
        in: query
        description: Whether return size of results or not
        schema:
          type: boolean
          default: false
      - name: offset
        in: query
        description: Offset of result
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: Limit of result
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        "200":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    put:
      tags:
      - /v1/agenda/calendars
      summary: Updates an existing calendar
      description: Updates an existing calendar
      operationId: updateCalendar
      requestBody:
        description: Calendar object to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarEntity'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "400":
          description: Invalid query input
        "500":
          description: Internal server error
    post:
      tags:
      - /v1/agenda/calendars
      summary: Creates a new calendar
      description: Creates a new calendar
      operationId: createCalendar
      requestBody:
        description: Calendar object to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarEntity'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    delete:
      tags:
      - /v1/agenda/calendars
      summary: Deletes an existing calendar
      description: Deletes an existing calendar
      operationId: deleteCalendar
      parameters:
      - name: calendarId
        in: path
        description: Calendar technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "400":
          description: Invalid query input
        "500":
          description: Internal server error
  /v1/agenda/calendars/{calendarId}:
    get:
      tags:
      - /v1/agenda/calendars
      summary: Retrieves a calendar identified by its technical identifier
      description: Retrieves a calendar identified by its technical identifier
      operationId: getCalendarById
      parameters:
      - name: calendarId
        in: path
        description: Calendar technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves the list of events available for an owner of type user or
        space
      description: "Retrieves the list of events available for an owner of type user\
        \ or space, identitifed by its identity technical identifier. If no designated\
        \ owner, all events available for authenticated user will be retrieved."
      operationId: getEvents
      parameters:
      - name: ownerIds
        in: query
        description: Identity technical identifiers of calendar owners
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: attendeeIdentityId
        in: query
        description: Attendee identity identifier to filter on events where user is
          attendee
        required: true
        schema:
          type: integer
          format: int64
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      - name: start
        in: query
        description: Start datetime using RFC-3339 representation
        required: true
        schema:
          type: string
      - name: end
        in: query
        description: End datetime using RFC-3339 representation
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      - name: limit
        in: query
        description: "Limit of results to return, used only when end date isn't set"
        schema:
          type: integer
          format: int32
          default: 10
      - name: responseTypes
        in: query
        description: Attendee Response statuses to filter events by attendee response
        schema:
          type: array
          items:
            type: string
            enum:
            - NEEDS_ACTION
            - ACCEPTED
            - DECLINED
            - TENTATIVE
      responses:
        "200":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    put:
      tags:
      - /v1/agenda/events
      summary: Update an existing event
      description: Update an existing event
      operationId: updateEvent
      parameters:
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      requestBody:
        description: Event object to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventEntity'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "404":
          description: Object not found
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    post:
      tags:
      - /v1/agenda/events
      summary: Create a new event
      description: Create a new event
      operationId: createEvent
      parameters:
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      requestBody:
        description: Event object to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventEntity'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/datePolls:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves the list of pending date polls for currently authenticated
        user
      description: Retrieves the list of pending date polls for currently authenticated
        user.
      operationId: getDatePolls
      parameters:
      - name: ownerIds
        in: query
        description: Identity technical identifiers of calendar owners
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: offset
        in: query
        description: Offset
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: Limit of results to return
        schema:
          type: integer
          format: int32
      - name: start
        in: query
        description: Start datetime using RFC-3339 representation
        required: true
        schema:
          type: string
      - name: end
        in: query
        description: End datetime using RFC-3339 representation
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "403":
          description: Forbidden operation
        "500":
          description: Internal server error
  /v1/agenda/events/ics:
    get:
      tags:
      - /v1/agenda/events
      summary: Returns the ICS file generated from this event
      description: Returns the ICS file generated from this event.
      operationId: getICSOfEvent
      parameters:
      - name: eventId
        in: query
        description: The event Id
        schema:
          type: integer
          format: int64
      - name: timeZoneId
        in: query
        description: the timezone ID of the target user
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query parameters
        "500":
          description: Internal server error
  /v1/agenda/events/occurrence/{parentEventId}/{occurrenceId}:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves an event identified by its technical identifier
      description: Retrieves an event identified by its technical identifier
      operationId: getEventOccurrence
      parameters:
      - name: parentEventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: occurrenceId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: string
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/pending:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves the list of pending events for currently authenticated user
      description: Retrieves the list of pending events for currently authenticated
        user.
      operationId: getPendingEvents
      parameters:
      - name: ownerIds
        in: query
        description: Identity technical identifiers of calendar owners
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: offset
        in: query
        description: Offset
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: Limit of results to return
        schema:
          type: integer
          format: int32
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "403":
          description: Forbidden operation
        "500":
          description: Internal server error
  /v1/agenda/events/search:
    get:
      tags:
      - /v1/agenda/events
      summary: Search the list of events available with query for an owner of type
        user or space
      description: "Search the list of events available with query for an owner of\
        \ type user or space, identified by its identity technical identifier. If\
        \ no designated owner, all events available for authenticated user will be\
        \ retrieved."
      operationId: search
      parameters:
      - name: query
        in: query
        description: Term to search
        required: true
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      - name: spaceId
        in: query
        description: Space identifier used to search event
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: sortField
        in: query
        description: Sort filed
        schema:
          type: string
      - name: sortDirection
        in: query
        description: Sort order (asc or desc)
        schema:
          type: string
      - name: offset
        in: query
        description: Offset
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: Limit
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        "200":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves an event identified by its technical identifier
      description: Retrieves an event identified by its technical identifier
      operationId: getEventById
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      - name: firstOccurrence
        in: query
        description: Whether to retrieve first occurrence or not
        schema:
          type: boolean
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    delete:
      tags:
      - /v1/agenda/events
      summary: Delete an existing event or delay deleting an existing event with a
        fixed period.
      operationId: deleteEvent
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: delay
        in: query
        description: Time to effectively delete event
        schema:
          type: integer
          format: int64
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "404":
          description: Object not found
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    patch:
      tags:
      - /v1/agenda/events
      summary: Update an attribute of an existing event
      description: Update an attribute of an existing event
      operationId: updateEventFields
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: updateAllOccurrences
        in: query
        description: Update all event occurrences or only parent occurrence
        schema:
          type: boolean
          default: false
      - name: sendInvitations
        in: query
        description: Whether notify attendees about the modification or not
        schema:
          type: boolean
          default: false
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "404":
          description: Object not found
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/exceptionalOccurrences:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves the list of exceptional occurrences of an event
      description: Retrieves the list of exceptional occurrences of an event
      operationId: getEventExceptionalOccurrences
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: expand
        in: query
        description: Properties to expand
        schema:
          type: string
      - name: timeZoneId
        in: query
        description: IANA Time zone identitifer
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/reminders:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieve preferred reminders for currently authenticated user for an
        event
      description: Retrieve preferred reminders for currently authenticated user for
        an event identified by its technical identifier.
      operationId: getEventRemindersById
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    put:
      tags:
      - /v1/agenda/events
      summary: Update the list of preferred reminders for authenticated user on a
        selected event.
      description: Update the list of preferred reminders for authenticated user on
        a selected event
      operationId: saveEventReminders
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: occurrenceId
        in: query
        description: Event occurrence identifier
        required: true
        schema:
          type: string
      - name: upcoming
        in: query
        description: Whether apply on Event occurrence and its upcoming or not
        required: true
        schema:
          type: boolean
      requestBody:
        description: List of reminders to store on event for currently authenticated
          user
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/EventReminder'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/response:
    get:
      tags:
      - /v1/agenda/events
      summary: Retrieves currently authenticated user response to an event
      description: Retrieves currently authenticated (using token or effectively authenticated)
        user response to an event.
      operationId: getEventResponse
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: occurrenceId
        in: query
        description: Event occurrence identifier
        schema:
          type: string
      - name: token
        in: query
        description: 'User token to '
        schema:
          type: string
      responses:
        "200":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "403":
          description: Forbidden operation
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/response/send:
    get:
      tags:
      - /v1/agenda/events
      summary: Send event invitation response for currently authenticated user
      description: Send event invitation response for currently authenticated user
        (using token or effectively authenticated)
      operationId: sendEventResponse
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: occurrenceId
        in: query
        description: Event occurrence identifier
        schema:
          type: string
      - name: response
        in: query
        description: "Response to event invitation. Possible values: ACCEPTED, DECLINED\
          \ or TENTATIVE."
        required: true
        schema:
          type: string
      - name: upcoming
        in: query
        description: Whether apply response on upcoming event of a recurrent event
          or not
        schema:
          type: boolean
      - name: token
        in: query
        description: User token used to identify user and his response to apply new
          reponse even when user is not authenticated
        schema:
          type: string
      - name: redirect
        in: query
        description: Whether redirect to Event details after applying new response
          or not
        schema:
          type: boolean
          default: false
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/selectDateOption/{dateOptionId}:
    post:
      tags:
      - /v1/agenda/events
      summary: Select an Date Option for an event having multiple dates options
      description: Select an Date Option for an event having multiple dates options
      operationId: selectEventDateOption
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: dateOptionId
        in: path
        description: Event date option technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Request fulfilled
        "404":
          description: Object not found
        "400":
          description: Invalid query input
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/undoDelete:
    post:
      tags:
      - /v1/agenda/events
      summary: Undo deleting event if not yet effectively deleted
      description: Undo deleting event if not yet effectively deleted
      operationId: undoDeleteEvent
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "403":
          description: Forbidden operation
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/votes:
    post:
      tags:
      - /v1/agenda/events
      summary: Registers voted date poll options for currently authenticated user
      description: Registers voted date poll options for currently authenticated user
      operationId: voteEvent
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                dateOptionId:
                  type: array
                  description: Accepted event date options technical identifier
                  items:
                    type: integer
                    format: int64
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "403":
          description: Forbidden operation
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/events/{eventId}/votes/{dateOptionId}:
    post:
      tags:
      - /v1/agenda/events
      summary: Registers voted date poll option for currently authenticated user
      description: Registers voted date poll option for currently authenticated user
      operationId: voteEventDateOption
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: dateOptionId
        in: path
        description: Event date option technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "403":
          description: Forbidden operation
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    delete:
      tags:
      - /v1/agenda/events
      summary: Dismisses vote on date poll option for currently authenticated user
      description: Dismisses vote on date poll option for currently authenticated
        user
      operationId: dismissEventDateOption
      parameters:
      - name: eventId
        in: path
        description: Event technical identifier
        required: true
        schema:
          type: integer
          format: int64
      - name: dateOptionId
        in: path
        description: Event date option technical identifier
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Invalid query input
        "403":
          description: Forbidden operation
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/settings:
    get:
      tags:
      - /v1/agenda/settings
      summary: Get User agenda settings
      operationId: getUserSettings
      responses:
        "200":
          description: Request fulfilled
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    put:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda settings for authenticated user
      description: Saves agenda settings for authenticated user
      operationId: saveUserSettings
      requestBody:
        description: User agenda settings to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgendaUserSettings'
        required: true
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/settings/connector:
    delete:
      tags:
      - /v1/agenda/settings
      summary: Deletes agenda connector settings for authenticated user
      description: Deletes agenda connector settings for authenticated user
      operationId: deleteUserConnectorSettings
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
    patch:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda connector settings for authenticated user
      description: Saves agenda connector settings for authenticated user
      operationId: saveUserConnectorSettings
      requestBody:
        content:
          '*/*':
            schema:
              required:
              - connectorName
              - connectorUserId
              type: object
              properties:
                connectorName:
                  type: string
                  description: User connector name
                connectorUserId:
                  type: string
                  description: User connector identifier
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/settings/connector/apiKey:
    post:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda connector Client API Key that will be accessible by all
        users to access connector remote API
      description: Saves agenda connector Client API Key that will be accessible by
        all users to access connector remote API
      operationId: saveRemoteProviderApiKey
      requestBody:
        content:
          '*/*':
            schema:
              required:
              - apiKey
              - connectorName
              type: object
              properties:
                connectorName:
                  type: string
                  description: Remote connector name
                apiKey:
                  type: string
                  description: Remote connector Api Key
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/settings/connector/secretKey:
    post:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda connector Client Secret Key that will be accessible by
        all users to access connector remote API
      description: Saves agenda connector Client Secret Key that will be accessible
        by all users to access connector remote API
      operationId: saveRemoteProviderSecretKey
      requestBody:
        content:
          '*/*':
            schema:
              required:
              - connectorName
              - secretKey
              type: object
              properties:
                connectorName:
                  type: string
                  description: Remote connector name
                secretKey:
                  type: string
                  description: Remote connector Secret Key
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "500":
          description: Internal server error
  /v1/agenda/settings/connector/status:
    post:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda connector status whether enabled or disabled for all users
      description: Saves agenda connector status whether enabled or disabled for all
        users
      operationId: saveRemoteProviderStatus
      requestBody:
        content:
          '*/*':
            schema:
              required:
              - connectorName
              - enabled
              - isOauth
              type: object
              properties:
                connectorName:
                  type: string
                  description: Remote connector name
                enabled:
                  type: boolean
                  description: Remote connector status
                isOauth:
                  type: boolean
                  description: Remote connector uses Oauth or not
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
  /v1/agenda/settings/timeZone:
    patch:
      tags:
      - /v1/agenda/settings
      summary: Saves agenda time zone setting for authenticated user
      description: Saves agenda time zone setting for authenticated user
      operationId: saveUserTimeZoneSetting
      requestBody:
        content:
          '*/*':
            schema:
              required:
              - timeZoneId
              type: object
              properties:
                timeZoneId:
                  type: string
                  description: User preferred time zone
      responses:
        "204":
          description: Request fulfilled
        "400":
          description: Bad request
        "401":
          description: Unauthorized operation
        "500":
          description: Internal server error
components:
  schemas:
    AgendaUserSettings:
      type: object
      properties:
        agendaDefaultView:
          type: string
        agendaWeekStartOn:
          type: string
        automaticPushEvents:
          type: boolean
        cometdContextName:
          type: string
        cometdToken:
          type: string
        connectedRemoteProvider:
          type: string
        connectedRemoteUserId:
          type: string
        reminders:
          type: array
          items:
            $ref: '#/components/schemas/EventReminderParameter'
        remoteProviders:
          type: array
          items:
            $ref: '#/components/schemas/RemoteProvider'
        showRemoteEventsForAgenda:
          type: boolean
        showRemoteEventsForTimeLine:
          type: boolean
        showWorkingTime:
          type: boolean
        timeZoneId:
          type: string
        webConferenceProviders:
          type: array
          items:
            type: string
        workedDaysNumber:
          type: string
        workingTimeEnd:
          type: string
        workingTimeStart:
          type: string
    CalendarEntity:
      type: object
      properties:
        acl:
          $ref: '#/components/schemas/CalendarPermission'
        color:
          type: string
        created:
          type: string
        description:
          type: string
        id:
          type: integer
          format: int64
        owner:
          $ref: '#/components/schemas/IdentityEntity'
        system:
          type: boolean
        title:
          type: string
        updated:
          type: string
    CalendarPermission:
      type: object
      properties:
        canCreate:
          type: boolean
        canEdit:
          type: boolean
        canInviteeEdit:
          type: boolean
    DataEntity:
      type: object
      properties:
        empty:
          type: boolean
      additionalProperties:
        type: object
    EventAttendeeEntity:
      type: object
      properties:
        id:
          type: integer
          format: int64
        identity:
          $ref: '#/components/schemas/IdentityEntity'
        response:
          type: string
          enum:
          - NEEDS_ACTION
          - ACCEPTED
          - DECLINED
          - TENTATIVE
    EventConference:
      type: object
      properties:
        accessCode:
          type: string
        description:
          type: string
        eventId:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        phone:
          type: string
        type:
          type: string
        url:
          type: string
    EventDateOptionEntity:
      type: object
      properties:
        allDay:
          type: boolean
        end:
          type: string
        eventId:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        selected:
          type: boolean
        start:
          type: string
        voters:
          type: array
          items:
            type: integer
            format: int64
    EventEntity:
      type: object
      properties:
        acl:
          $ref: '#/components/schemas/EventPermission'
        allDay:
          type: boolean
        allowAttendeeToInvite:
          type: boolean
        allowAttendeeToUpdate:
          type: boolean
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/EventAttendeeEntity'
        availability:
          type: string
          enum:
          - DEFAULT
          - BUSY
          - FREE
        calendar:
          $ref: '#/components/schemas/CalendarEntity'
        color:
          type: string
        conferences:
          type: array
          items:
            $ref: '#/components/schemas/EventConference'
        created:
          type: string
        creator:
          $ref: '#/components/schemas/IdentityEntity'
        dateOptions:
          type: array
          items:
            $ref: '#/components/schemas/EventDateOptionEntity'
        description:
          type: string
        end:
          type: string
        id:
          type: integer
          format: int64
        location:
          type: string
        occurrence:
          $ref: '#/components/schemas/EventOccurrenceEntity'
        parent:
          $ref: '#/components/schemas/EventEntity'
        recurrence:
          $ref: '#/components/schemas/EventRecurrenceEntity'
        reminders:
          type: array
          items:
            $ref: '#/components/schemas/EventReminderEntity'
        remoteId:
          type: string
        remoteProviderId:
          type: integer
          format: int64
        remoteProviderName:
          type: string
        sendInvitation:
          type: boolean
        start:
          type: string
        status:
          type: string
          enum:
          - CONFIRMED
          - TENTATIVE
          - CANCELLED
        summary:
          type: string
        timeZoneId:
          type: string
        updated:
          type: string
    EventOccurrenceEntity:
      type: object
      properties:
        exceptional:
          type: boolean
        id:
          type: string
    EventPermission:
      type: object
      properties:
        attendee:
          type: boolean
        canEdit:
          type: boolean
    EventRecurrenceEntity:
      type: object
      properties:
        byDay:
          type: array
          items:
            type: string
        byHour:
          type: array
          items:
            type: string
        byMinute:
          type: array
          items:
            type: string
        byMonth:
          type: array
          items:
            type: string
        byMonthDay:
          type: array
          items:
            type: string
        bySecond:
          type: array
          items:
            type: string
        bySetPos:
          type: array
          items:
            type: string
        byWeekNo:
          type: array
          items:
            type: string
        byYearDay:
          type: array
          items:
            type: string
        count:
          type: integer
          format: int32
        frequency:
          type: string
          enum:
          - YEARLY
          - MONTHLY
          - WEEKLY
          - DAILY
          - HOURLY
          - MINUTELY
          - SECONDLY
        id:
          type: integer
          format: int64
        interval:
          type: integer
          format: int32
        rrule:
          type: string
        type:
          type: string
          enum:
          - CUSTOM
          - DAILY
          - WEEKLY
          - WEEK_DAYS
          - MONTHLY
          - YEARLY
        until:
          type: string
    EventReminder:
      type: object
      properties:
        before:
          type: integer
          format: int32
        beforePeriodType:
          type: string
          enum:
          - MINUTE
          - HOUR
          - DAY
          - WEEK
        datetime:
          type: string
          format: date-time
        eventId:
          type: integer
          format: int64
        fromOccurrenceId:
          type: string
          format: date-time
        id:
          type: integer
          format: int64
        periodType:
          type: string
          writeOnly: true
        receiverId:
          type: integer
          format: int64
        untilOccurrenceId:
          type: string
          format: date-time
    EventReminderEntity:
      type: object
      properties:
        before:
          type: integer
          format: int32
        beforePeriodType:
          type: string
        id:
          type: integer
          format: int64
    EventReminderParameter:
      type: object
      properties:
        before:
          type: integer
          format: int32
        beforePeriodType:
          type: string
          enum:
          - MINUTE
          - HOUR
          - DAY
          - WEEK
        periodType:
          type: string
          writeOnly: true
    ExperienceEntity:
      type: object
      properties:
        company:
          type: string
        description:
          type: string
        endDate:
          type: string
        id:
          type: string
        isCurrent:
          type: boolean
        position:
          type: string
        skills:
          type: string
        startDate:
          type: string
    GlobalId:
      type: object
      properties:
        domain:
          type: string
        localId:
          type: string
    Identity:
      type: object
      properties:
        cacheTime:
          type: integer
          format: int64
        deleted:
          type: boolean
        enable:
          type: boolean
        external:
          type: boolean
        globalId:
          $ref: '#/components/schemas/GlobalId'
        id:
          type: string
        identityId:
          type: integer
          format: int64
        profile:
          $ref: '#/components/schemas/Profile'
        profileLoader:
          $ref: '#/components/schemas/ProfileLoader'
        providerId:
          type: string
        remoteId:
          type: string
        space:
          type: boolean
        user:
          type: boolean
    IdentityEntity:
      type: object
      properties:
        dataEntity:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            type: object
        deleted:
          type: string
        globalId:
          $ref: '#/components/schemas/IdentityEntity'
        href:
          type: string
        id:
          type: string
        lastUpdatedTime:
          type: integer
          format: int64
        profile:
          $ref: '#/components/schemas/ProfileEntity'
        providerId:
          type: string
        remoteId:
          type: string
        space:
          $ref: '#/components/schemas/SpaceEntity'
    Profile:
      type: object
      properties:
        aboutMe:
          type: string
        attachedActivityType:
          type: string
          enum:
          - USER
          - SPACE
          - RELATION
          - RELATIONSHIP
        avatarImageSource:
          type: string
        avatarLastUpdated:
          type: integer
          format: int64
        avatarUrl:
          type: string
        bannerLastUpdated:
          type: integer
          format: int64
        bannerUrl:
          type: string
        city:
          type: string
        company:
          type: string
        country:
          type: string
        createdTime:
          type: integer
          format: int64
        defaultAvatar:
          type: boolean
        department:
          type: string
        email:
          type: string
        fullName:
          type: string
        gender:
          type: string
        hasChanged:
          type: boolean
          writeOnly: true
        id:
          type: string
        identity:
          $ref: '#/components/schemas/Identity'
        lastLoaded:
          type: integer
          format: int64
        listUpdateTypes:
          type: array
          items:
            type: string
            enum:
            - POSITION
            - COMPANY
            - LOCATION
            - DEPARTMENT
            - TEAM
            - PROFESSION
            - COUNTRY
            - CITY
            - BASIC_INFOR
            - CONTACT
            - EXPERIENCES
            - AVATAR
            - ABOUT_ME
            - BANNER
            - TECHNICAL
        location:
          type: string
        position:
          type: string
        profession:
          type: string
        properties:
          type: object
          additionalProperties:
            type: object
        synchronizedDate:
          type: string
        team:
          type: string
        timeZone:
          type: string
        timeZoneDSTSavings:
          type: integer
          format: int32
        updateType:
          type: string
          enum:
          - POSITION
          - COMPANY
          - LOCATION
          - DEPARTMENT
          - TEAM
          - PROFESSION
          - COUNTRY
          - CITY
          - BASIC_INFOR
          - CONTACT
          - EXPERIENCES
          - AVATAR
          - ABOUT_ME
          - BANNER
          - TECHNICAL
        url:
          type: string
    ProfileEntity:
      type: object
      properties:
        aboutMe:
          type: string
        avatar:
          type: string
        banner:
          type: string
        city:
          type: string
        company:
          type: string
        connectionsCount:
          type: string
        connectionsInCommonCount:
          type: string
        country:
          type: string
        createdDate:
          type: string
        dataEntity:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            type: object
        defaultAvatar:
          type: boolean
        deleted:
          type: string
        department:
          type: string
        email:
          type: string
        emailProperty:
          type: string
        enabled:
          $ref: '#/components/schemas/ProfileEntity'
        enrollmentDate:
          type: string
        experiences:
          type: array
          items:
            $ref: '#/components/schemas/ExperienceEntity'
        firstname:
          type: string
        fullname:
          type: string
        href:
          type: string
        id:
          type: string
        identity:
          type: string
        isAdmin:
          type: string
        isExternal:
          $ref: '#/components/schemas/ProfileEntity'
        isGroupBound:
          type: boolean
        isInternal:
          type: boolean
        isInvited:
          type: boolean
        isManager:
          type: boolean
        isMember:
          type: boolean
        isPending:
          type: boolean
        isSpacePublisher:
          type: boolean
        isSpaceRedactor:
          type: boolean
        lastLoginTime:
          type: string
        lastUpdatedTime:
          type: integer
          format: int64
        lastname:
          type: string
        location:
          type: string
        managedUsersCount:
          type: string
        managers:
          type: array
          items:
            $ref: '#/components/schemas/DataEntity'
        notValid:
          type: boolean
        phoneProperty:
          type: string
        position:
          type: string
        primaryProperty:
          type: string
        profession:
          type: string
        properties:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePropertySettingEntity'
        relationshipStatus:
          type: string
        secondaryProperty:
          type: string
        spacesCount:
          type: string
        synchronizedDate:
          type: string
        team:
          type: string
        tertiaryProperty:
          type: string
        timeZone:
          type: string
        timeZoneDSTSavings:
          type: string
        urls:
          type: array
          items:
            $ref: '#/components/schemas/URLEntity'
        username:
          type: string
    ProfileLabel:
      type: object
      properties:
        id:
          type: integer
          format: int64
        label:
          type: string
        language:
          type: string
        objectId:
          type: string
        objectType:
          type: string
    ProfileLoader:
      type: object
    ProfilePropertyOptionEntity:
      type: object
      properties:
        id:
          type: integer
          format: int64
        propertySettingId:
          type: integer
          format: int64
        translatedValue:
          type: string
        translations:
          type: object
          additionalProperties:
            type: string
        value:
          type: string
    ProfilePropertySettingEntity:
      type: object
      properties:
        active:
          type: boolean
        default:
          type: boolean
        dropdownList:
          type: boolean
        editable:
          type: boolean
        groupSynchronizationEnabled:
          type: boolean
        groupSynchronized:
          type: boolean
        hidden:
          type: boolean
        hiddenable:
          type: boolean
        id:
          type: integer
          format: int64
        indexInAnalytics:
          type: boolean
        internal:
          type: boolean
        labels:
          type: array
          items:
            $ref: '#/components/schemas/ProfileLabel'
        multiValued:
          type: boolean
        order:
          type: integer
          format: int64
        parentId:
          type: integer
          format: int64
        propertyName:
          type: string
        propertyOptions:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePropertyOptionEntity'
        propertyType:
          type: string
        required:
          type: boolean
        resolvedLabel:
          type: string
        toHide:
          type: boolean
        toShow:
          type: boolean
        updated:
          type: integer
          format: int64
        userCardFieldSettings:
          type: boolean
        value:
          type: string
        visible:
          type: boolean
    RemoteProvider:
      type: object
      properties:
        apiKey:
          type: string
        enabled:
          type: boolean
        id:
          type: integer
          format: int64
        name:
          type: string
        oauth:
          type: boolean
        secretKey:
          type: string
    SpaceEntity:
      type: object
      properties:
        avatarId:
          type: string
        avatarUrl:
          type: string
        bannerId:
          type: string
        bannerUrl:
          type: string
        canDelete:
          type: boolean
        canEdit:
          type: boolean
        canEditNavigations:
          type: boolean
        canManagePublicSite:
          type: boolean
        canRedactOnSpace:
          type: boolean
        categoryIds:
          type: array
          items:
            type: integer
            format: int64
        createdTime:
          type: string
        dataEntity:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            type: object
        description:
          type: string
        displayName:
          type: string
        externalInvitedUsers:
          type: array
          items:
            type: string
        groupId:
          type: string
        hasBindings:
          $ref: '#/components/schemas/SpaceEntity'
        href:
          type: string
        id:
          type: string
        identity:
          $ref: '#/components/schemas/SpaceEntity'
        identityId:
          $ref: '#/components/schemas/SpaceEntity'
        invitedMembers:
          type: array
          items:
            $ref: '#/components/schemas/Identity'
        invitedUsersCount:
          $ref: '#/components/schemas/SpaceEntity'
        invitedUsersCountCount:
          type: integer
          format: int32
        isFavorite:
          type: string
        isInvited:
          type: boolean
        isManager:
          type: boolean
        isMember:
          type: boolean
        isMuted:
          type: string
        isPending:
          type: boolean
        isPublisher:
          type: boolean
        isRedactor:
          type: boolean
        isUserBound:
          type: boolean
        lastUpdatedTime:
          type: integer
          format: int64
        managers:
          type: string
        managersCount:
          type: integer
          format: int32
        members:
          type: string
        membersCount:
          type: integer
          format: int32
        parentSpaceId:
          type: integer
          format: int64
        pending:
          type: string
        pendingUsersCount:
          type: integer
          format: int32
        prettyName:
          type: string
        publicSiteId:
          type: integer
          format: int64
        publicSiteName:
          type: string
        publicSiteVisibility:
          type: string
        publishers:
          type: string
        publishersCount:
          type: integer
          format: int32
        redactors:
          type: string
        redactorsCount:
          type: integer
          format: int32
        siteId:
          type: string
        sovereign:
          type: boolean
        subscription:
          type: string
        templateId:
          type: integer
          format: int64
        totalBoundUsers:
          type: integer
          format: int64
        unreadItems:
          type: object
          additionalProperties:
            type: integer
            format: int64
        url:
          type: string
        visibility:
          type: string
    URLEntity:
      type: object
      properties:
        url:
          type: string
