> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sonderplan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Calendar Subscriptions

> Sonderplan supports calendar subscriptions for both importing and exporting events, using the standard iCalendar format. This format is widely supported by popular calendar services like Google Calendar, Outlook, and Apple iCloud.

### Import Calendar Sync Subscriptions
Import calendar sync allows you to bring external events into Sonderplan, such as syncing events from Google Calendar to Sonderplan bookings or sharing bookings between two separate Sonderplan instances.

To set up an import, you can generate an iCalendar feed URL from the external calendar (e.g., Google Calendar) and copy it into a new Import Calendar subscription in Sonderplan. During setup, you can define default properties for imported bookings, such as resources, status, and associated projects.

Sonderplan automatically checks these feeds at least once an hour and updates the schedule with any changes to the imported events.

### Export Calendar Subscriptions
Export calendar subscriptions allow you to share bookings from Sonderplan with external calendars, such as syncing the bookings of specific resources to a shared Google Calendar.

To enable export feeds, you must activate booking feeds for resources, schedules, or projects in the Sonderplan UI. The feed URL can then be retrieved from the corresponding endpoint using the `feed` property, which can be shared or integrated with external calendar systems.

<Note>`READ` access to the `ADMIN` module is required to access this endpoint</Note>



## OpenAPI

````yaml /api-reference/openapi-mintlify.yaml get /v2/calendar-subscription/import
openapi: 3.0.0
info:
  title: Sonderplan API
  description: >
    ## Overview

    You can use our REST API to securely access and modify the data within your
    Sonderplan account. This includes all the information within your bookings,
    projects and invoices that you can use to import / export data or create
    integrations with other systems and software that you use


    ### General Notes


    #### Specifying Fields

    The Sonderplan REST API allows you to specify a comma delimited string of
    exactly which fields are returned, using the `fields` parameter. Using this
    parameter has several advantages including:


    1. In future API versions we may change which fields are presented by
    default, so explicitly specifying the fields required overrides the defaults
    and ensure the fields are served

    2. Limiting fields reduces the processing we need to do and allows us to
    send you the data faster

    3. Some search filters only work if the field you are searching is added to
    the `fields` parameter.


    Example:


    ```

    fields=id,name,start,duration_min

    ```


    ### Applying Filters


    The Query Parameters section in each endpoint shows you special options that
    can be added to your request to customise the response we send you.


    Most endpoints offer the following query params:


    | Query Parameter |
    Description                                                    |

    |-----------------|----------------------------------------------------------------|

    | `fields`        | Only send the specified
    fields                                 |

    | `id`            | Specify one or more ids (comma seperated) of records to
    return |

    | `limit`         | The maximum number of records to
    return                        |

    | `page`          | The page number of records to
    return                           |

    | `order_asc` | Specify which field should be used to sort records
    `ascending` |

    | `order_desc` | Specify which field should be used to sort records
    `descending` |


    In addition to the standard `id` param, you can also specify most other
    fields as a query parameter, useful for performing searching and filtering
    of records.


    For example, you can specify `repeat_master_id=<repeat_booking_id>` to
    return all repeat children of that booking.


    #### Other Query Params


    Refer to the specific API endpoint documentation to see which other query
    params can be used.


    For example, some endpoints allow specifying `updated_after=<UNIX
    TIMESTAMP>` which will only send added, edited and even deleted records that
    were modified after the unix timestamp.


    #### Applying multiple filters


    By default, multiple filters are chained together using **OR** (either
    filter can be true and it will be included). You can change this behaviour
    by specifying `filter_operator=AND`, so each filter must be true to be
    included.


    #### Filtering by Custom Field Values


    For modules that include custom fields, you can search by the value of a
    custom field by adding the `custom_field_<field id>` to the URL query
    parameters. You **must** also specify the custom field in the `fields`
    parameter.


    ```

    GET
    https://api.sonderplan.com/v2/booking?fields=id,name,custom_field_238938&custom_field_238938=Offline

    ```


    This will return custom fields that contain the word 'Offline'.
  contact:
    email: info@sonderplan.com
  version: '2.0'
servers:
  - url: https://api.sonderplan.com
    description: Production Server
security: []
tags:
  - name: Booking
    description: Booking related operations
  - name: Project
    description: Project related operations
  - name: Resource
    description: Resource related operations
  - name: Contact
    description: Contact related operations
  - name: Quote
    description: Quote related operations
  - name: Invoice
    description: Invoice related operations
  - name: Invoice Template
    description: Invoice template related operations
  - name: Billable Item
    description: Billable item related operations
  - name: Rate Scheme
    description: Rate scheme related operations
  - name: Tax
    description: Tax related operations
  - name: Workspace
    description: Workspace (formerly Schedule) related operations
  - name: User
    description: User related operations
  - name: Group
    description: Group related operations
  - name: Status
    description: Status related operations
  - name: Custom Field
    description: Custom field related operations
  - name: Calendar Subscription
    description: Calendar Subscription Import related operations
  - name: Time Entry
    description: Time Entry related operations
  - name: Time Activity
    description: Time Activity related operations
paths:
  /v2/calendar-subscription/import:
    get:
      tags:
        - Calendar Subscription
      summary: Get Calendar Subscriptions
      description: >-
        Sonderplan supports calendar subscriptions for both importing and
        exporting events, using the standard iCalendar format. This format is
        widely supported by popular calendar services like Google Calendar,
        Outlook, and Apple iCloud.


        ### Import Calendar Sync Subscriptions

        Import calendar sync allows you to bring external events into
        Sonderplan, such as syncing events from Google Calendar to Sonderplan
        bookings or sharing bookings between two separate Sonderplan instances.


        To set up an import, you can generate an iCalendar feed URL from the
        external calendar (e.g., Google Calendar) and copy it into a new Import
        Calendar subscription in Sonderplan. During setup, you can define
        default properties for imported bookings, such as resources, status, and
        associated projects.


        Sonderplan automatically checks these feeds at least once an hour and
        updates the schedule with any changes to the imported events.


        ### Export Calendar Subscriptions

        Export calendar subscriptions allow you to share bookings from
        Sonderplan with external calendars, such as syncing the bookings of
        specific resources to a shared Google Calendar.


        To enable export feeds, you must activate booking feeds for resources,
        schedules, or projects in the Sonderplan UI. The feed URL can then be
        retrieved from the corresponding endpoint using the `feed` property,
        which can be shared or integrated with external calendar systems.


        <Note>`READ` access to the `ADMIN` module is required to access this
        endpoint</Note>
      operationId: 40913711b2a781649dc47641d8a888ca
      parameters:
        - name: id
          in: query
          description: >-
            One or more (comma seperated) IDs of calendar subscriptions to
            retrieve
          schema:
            type: string
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/order_asc'
        - $ref: '#/components/parameters/order_desc'
        - $ref: '#/components/parameters/filter_operator'
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CalendarSubscriptionImportModel'
                  meta:
                    $ref: '#/components/schemas/pagination'
                type: object
        '401':
          description: Authorization information is missing or invalid
      security:
        - bearer: []
components:
  parameters:
    fields:
      name: fields
      in: query
      description: Comma seperated list of fields you wish to return
      schema:
        type: string
      example: id,name
    page:
      name: page
      in: query
      description: Specify the page of results you wish to return
      schema:
        type: integer
    limit:
      name: limit
      in: query
      description: The number of results returned per page. Default if not specified is 10
      schema:
        type: integer
    order_asc:
      name: order_asc
      in: query
      description: >-
        Specify the field (with type of string or integer) you wish to order
        (ascending) the response with
      schema:
        type: string
    order_desc:
      name: order_desc
      in: query
      description: >-
        Specify the field (with type of string or integer) you wish to order
        (descending) the response with
      schema:
        type: string
    filter_operator:
      name: filter_operator
      in: query
      description: Specify if multiple filters should be combined with OR or AND logic
      schema:
        type: string
        default: OR
        enum:
          - OR
          - AND
  schemas:
    CalendarSubscriptionImportModel:
      title: Calendar Subscription Import Model
      description: >-
        External shared calendars that are imported into Sonderplan on a
        recurring schedule
      properties:
        id:
          description: Automatically generated, unique calendar subscription id
          type: integer
          readOnly: true
          example: 5693
        enabled:
          description: >-
            If enabled, Sonderplan will be regularly checking the external
            calendar for changes
          type: boolean
          example: true
        booking_property:
          $ref: >-
            #/components/schemas/CalendarSubscriptionImportBookingPropertiesModel
        calendar_url:
          description: >-
            URL (link) to the external calendar subscription, usually a .ics
            file
          type: string
          example: https://calendar.google.com/calendar/i
        last_checked_filesize:
          description: >-
            File size (in bytes) of the calendar subscription when we last
            checked it
          type: integer
          readOnly: true
          example: 9272
        last_checked_date:
          description: UNIX timestamp of the last time we checked the calendar feed
          type: integer
          readOnly: true
          example: 1683342643
        last_parsed_date:
          description: UNIX timestamp of the last time we parsed the calendar feed
          type: integer
          readOnly: true
          example: 1683342643
      type: object
    pagination:
      title: Pagination Meta Model
      properties:
        pagination:
          $ref: '#/components/schemas/meta'
      type: object
    CalendarSubscriptionImportBookingPropertiesModel:
      title: Calendar Subscription Import Booking Properties
      description: >-
        Bookings imported from the external calendar will have these properties
        added
      properties:
        client:
          description: Booking Client
          type: array
          items:
            $ref: '#/components/schemas/CalendarSubscriptionImportClientModel'
        status:
          description: Booking Status
          type: array
          items:
            $ref: '#/components/schemas/CalendarSubscriptionImportBookingStatusModel'
        project:
          description: Booking Project
          type: array
          items:
            $ref: '#/components/schemas/CalendarSubscriptionImportProjectModel'
        resources:
          description: Booking Resources
          type: array
          items:
            $ref: '#/components/schemas/CalendarSubscriptionImportResourcesModel'
        custom_fields:
          description: Booking Custom Fields
          type: array
          items:
            type: object
            additionalProperties: true
      type: object
    meta:
      title: Page Meta Model
      properties:
        total:
          type: integer
          example: 1
        count:
          type: integer
          example: 1
        per_page:
          type: integer
          example: 1
        current_page:
          type: integer
          example: 1
      type: object
    CalendarSubscriptionImportClientModel:
      title: Calendar Subscription Import Client Model
      description: Client object for bookings imported from the external calendar
      properties:
        uuid:
          description: Client UUID
          type: string
          example: u2349
      type: object
    CalendarSubscriptionImportBookingStatusModel:
      title: Calendar Subscription Import Booking Status Model
      description: Status object for bookings imported from the external calendar
      properties:
        id:
          description: Status ID
          type: integer
          example: 1
      type: object
    CalendarSubscriptionImportProjectModel:
      title: Calendar Subscription Import Project Model
      description: Project object for bookings imported from the external calendar
      properties:
        id:
          description: Project ID
          type: integer
          example: 2
      type: object
    CalendarSubscriptionImportResourcesModel:
      title: Calendar Subscription Import Resources Model
      description: Resources object for bookings imported from the external calendar
      properties:
        id:
          description: Resource ID
          type: integer
          example: 1928
      type: object
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````