Outdoorsy Ics Calendars API

The ics-calendars API from Outdoorsy — 5 operation(s) for ics-calendars.

Operations 6

GET /ics-calendars Returns list of ICSCalendar for a given user. Optionally could filter by user owned rental. #
POST /ics-calendars Create calendar record with pending calendar log and trigger SyncICSCalendar job to sync it. #
POST /ics-calendars/sync Trigger a job to sync all user eligible (last sync started at least 3 minutes ago) callendars. Optionally could be triggered for a specific user's calendar or user owned rental. #
DELETE /ics-calendars/{calendar_id} Delete calendar record with and calendar's logs. #
GET /ics-export.ics Returns an .ics file with Outdoorsy availability per rental. #
GET /ics/export-url Returns URL to the .ics file download link. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/outdoorsy-ics-calendars-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

outdoorsy-ics-calendars-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Outdoorsy Ics Calendars API
  version: 0.0.1
  description: 'Operations tagged ics-calendars across 2 of this provider''s published API definitions: outdoorsy-ics-calendars-api-openapi.yml, outdoorsy-openapi-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /v0
security:
- Bearer:
  - '[]'
- API-Key:
  - '[]'
tags:
- name: ics-calendars
paths:
  /ics-calendars:
    get:
      tags:
      - ics-calendars
      summary: Returns list of ICSCalendar for a given user. Optionally could filter by user owned rental.
      operationId: fetchCalendars
      parameters:
      - x-go-name: OwnerId
        name: owner_user_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: RentalID
        name: rental_id
        in: query
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/calendarsResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
    post:
      tags:
      - ics-calendars
      summary: Create calendar record with pending calendar log and trigger SyncICSCalendar job to sync it.
      operationId: linkCalendar
      parameters:
      - x-go-name: OwnerId
        name: owner_user_id
        in: query
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/calendarResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkICSCalendarRequest'
    servers:
    - url: /v0
  /ics-calendars/sync:
    post:
      tags:
      - ics-calendars
      summary: Trigger a job to sync all user eligible (last sync started at least 3 minutes ago) callendars. Optionally could be triggered for a specific user's calendar or user owned rental.
      operationId: syncCalendars
      parameters:
      - x-go-name: OwnerId
        name: owner_user_id
        in: query
        schema:
          type: integer
          format: int64
      responses:
        '204':
          $ref: '#/components/responses/noContentResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetManyRequest'
    servers:
    - url: /v0
  /ics-calendars/{calendar_id}:
    delete:
      tags:
      - ics-calendars
      summary: Delete calendar record with and calendar's logs.
      operationId: unlinkCalendar
      parameters:
      - x-go-name: OwnerId
        name: owner_user_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: CalendarID
        name: calendar_id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          $ref: '#/components/responses/noContentResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
    servers:
    - url: /v0
  /ics-export.ics:
    get:
      tags:
      - ics-calendars
      summary: Returns an .ics file with Outdoorsy availability per rental.
      operationId: downloadICSFile
      parameters:
      - x-go-name: RentalId
        name: rental_id
        in: query
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/icsFileResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        default:
          $ref: '#/components/responses/genericError'
    servers:
    - url: /v0
  /ics/export-url:
    get:
      tags:
      - ics-calendars
      summary: Returns URL to the .ics file download link.
      operationId: exportURL
      parameters:
      - x-go-name: RentalId
        name: rental_id
        in: query
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/urlResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        default:
          $ref: '#/components/responses/genericError'
    servers:
    - url: /v0
components:
  responses:
    calendarResponse:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ICSCalendar'
            $ref: '#/components/schemas/ICSCalendar'
    badRequestError:
      description: Invalid input or state means you're bad
      headers:
        Error:
          schema:
            type: string
    icsFileResponse:
      description: ''
    genericError:
      description: An unknown, unexpected error.
    urlResponse:
      description: ''
    unauthorizedError:
      description: Unauthorized error
    noContentResponse:
      description: Everything went as planned
    notFoundError:
      description: Not found error
  schemas:
    ICSCalendar:
      type: object
      properties:
        active:
          type: boolean
          x-go-name: Active
        host:
          type: string
          x-go-name: Host
        id:
          type: integer
          format: int64
          x-go-name: ID
        name:
          type: string
          x-go-name: Name
        owner_user_id:
          type: integer
          format: int64
          x-go-name: OwnerUserID
        rental_id:
          type: integer
          format: int64
          x-go-name: RentalID
        url:
          type: string
          x-go-name: URL
      x-go-package: github.com/outdoorsy/api/internal/ics/calendars
    GetManyRequest:
      type: object
      properties:
        calendar_id:
          type: integer
          format: int64
          x-go-name: CalendarID
        rental_id:
          type: integer
          format: int64
          x-go-name: RentalID
      x-go-package: github.com/outdoorsy/api/internal/ics/calendar_models
    LinkICSCalendarRequest:
      type: object
      properties:
        name:
          type: string
          x-go-name: Name
        rental_id:
          type: integer
          format: int64
          x-go-name: RentalID
        url:
          type: string
          x-go-name: URL
      x-go-package: github.com/outdoorsy/api/internal/ics/calendar_models
  securitySchemes:
    API-Key:
      type: apiKey
      name: API-Key
      in: header
    Bearer:
      type: apiKey
      name: Authorization
      in: header
x-refined-from:
- outdoorsy-ics-calendars-api-openapi.yml
- outdoorsy-openapi-original.json