openapi: 3.0.1 info: title: ilert REST Alert Actions Schedules API description: "# Introduction\nThe ilert API is a [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) API and provides programmatic access to entities in ilert and lets you easily integrate ilert with 3rd party tools. If you are looking to develop an inbound integration (e.g. for a monitoring tool), please use our [Events API](#tag/events). \n\nThe API supports the JSON content type for requests and responses. The response content type is requested via the HTTP Accept header (`application/json`). All resources are accessible via https and are located at `api.ilert.com/api`. \n\n You may download ilert's latest [OpenAPI.json {...} here](https://api.ilert.com/api-docs/openapi.json).\n\n If you are looking for a classic Swagger-UI view you may also open [this link](https://api.ilert.com/api-docs/swagger-ui). \n\n ## Authentication\nThe REST API accepts bearer API tokens. Each user may create API keys using the ilert web application. Note: Make sure to send the `Bearer ` prefix e.g. `Bearer APIKEY` when sending api key requests. By default, access to all resources (using any method) requires the client to be authenticated.\n\n ## Team Context\n When using API tokens, the currently selected team context of the user will not be taken into account, i.e. list results will always return all entities to which the user has a view permission. When using basic auth credentials the currently selected team context of the user will be used to filter resource results. The context may be overwritten for API key calls using the `team-context` HTTP header. Specifying `0` for ALL teams, `-1` for MY teams or a specific team id e.g. `team-context=901` to fetch results for a certain team. \n\n ## Errors\nilert uses HTTP response codes to indicate success or failure of an API request. Codes in the 2xx range indicate success, codes in the 4xx range indicate a client error (e.g. a missing required parameter) and codes in the 5xx range indicate an error with ilert's servers. In case of an error, the response body contains the following information:\n\n Attribute | Description \n ------------- | ------------- \n status | the corresponsing HTTP status code \n message | a human readable description of the error \n code | error code, used to identify error type \n\n ## API Versioning\nChanges to our API are always backwards-compatible. To get more information about our API versioning and historical changes, please take a look here." version: v2.2026.5-r.3 x-logo: url: ./ilert-logo-spaced.png backgroundColor: '#fafafa' altText: ilert documentation logo servers: - url: /api security: - apiKey: [] tags: - name: Schedules paths: /schedules: get: tags: - Schedules summary: List on-call schedules. parameters: - name: include in: query description: Describes optional properties that should be included in the response. You may declare multiple. (currentShift, nextShift, scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules], past [show shifts in the past, only for STATIC]) style: form explode: true schema: type: array items: type: string enum: - scheduleLayers - shifts - currentShift - nextShift - past - name: start-index in: query description: an integer specifying the starting point (beginning with 0) when paging through a list of entities schema: type: integer format: int32 default: 0 - name: max-results in: query description: the maximum number of results when paging through a list of schedules. schema: maximum: 20 type: integer format: int32 default: 20 responses: '200': description: a list of on-call schedules content: application/json: schema: type: array items: $ref: '#/components/schemas/Schedule' post: tags: - Schedules summary: Create a new on-call schedule. parameters: - name: abort-on-gaps in: query description: Used for static schedules to prevent creating schedules with gaps schema: type: boolean requestBody: description: The on-call schedule. (scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules]) content: application/json: schema: $ref: '#/components/schemas/Schedule' required: true responses: '201': description: The created on-call schedule content: application/json: schema: $ref: '#/components/schemas/Schedule' x-codegen-request-body-name: schedule /schedules/{id}: get: tags: - Schedules summary: Get the on-call schedule with the specified id. parameters: - name: id in: path description: entity ID required: true schema: type: number - name: include in: query description: Describes optional properties that should be included in the response. You may declare multiple. (currentShift, nextShift, scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules], past [show shifts in the past, only for STATIC]) style: form explode: true schema: type: array items: type: string enum: - scheduleLayers - shifts - currentShift - nextShift - past responses: '200': description: The schedule object. (scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules]) content: application/json: schema: $ref: '#/components/schemas/Schedule' put: tags: - Schedules summary: Update an on-call schedule. parameters: - name: id in: path description: entity ID required: true schema: type: number - name: abort-on-gaps in: query description: Used for static schedules to prevent updating schedules with gaps schema: type: boolean requestBody: description: The on-call schedule. (scheduleLayers [only available for RECURRING schedules], shifts [only available for STATIC schedules]) content: application/json: schema: $ref: '#/components/schemas/Schedule' required: true responses: '200': description: The updated on-call schedule content: application/json: schema: $ref: '#/components/schemas/Schedule' x-codegen-request-body-name: schedule delete: tags: - Schedules summary: Delete the on-call schedule with the specified id. parameters: - name: id in: path description: entity ID required: true schema: type: number responses: '204': description: empty response content: {} /schedules/{id}/shifts: get: tags: - Schedules summary: Get shifts for the specified schedule and date range. parameters: - name: id in: path description: entity ID required: true schema: type: number - name: from in: query description: from date, default is start of last month schema: type: string format: date-time - name: until in: query description: until date, default is from date plus 3 months schema: type: string - name: exclude-overrides in: query description: if true, shifts won't include overrides schema: type: boolean default: false responses: '200': description: the shift objects content: application/json: schema: type: array items: $ref: '#/components/schemas/Shift' /schedules/{id}/overrides: get: tags: - Schedules summary: Get overrides for the specified schedule. parameters: - name: id in: path description: entity ID required: true schema: type: number responses: '200': description: the shift objects content: application/json: schema: type: array items: $ref: '#/components/schemas/Shift' put: tags: - Schedules summary: Add an override shift to a schedule. parameters: - name: id in: path description: entity ID required: true schema: type: number requestBody: description: the shift which should overwrite the schedule (must not be in the past) content: application/json: schema: $ref: '#/components/schemas/Shift' required: true responses: '200': description: the overwritten schedule object content: application/json: schema: $ref: '#/components/schemas/ScheduleRel' x-codegen-request-body-name: shift /schedules/{id}/user-on-call: get: tags: - Schedules summary: Get the user (wrapped in a shift object) on-call for the specified schedule. parameters: - name: id in: path description: entity ID required: true schema: type: number responses: '200': description: the current shift content: application/json: schema: $ref: '#/components/schemas/Shift' '204': description: if no user is on-call content: {} components: schemas: TimeZone: type: string enum: - Europe/Berlin - America/New_York - America/Los_Angeles - Asia/Istanbul TeamRel: type: object properties: id: type: integer format: int64 name: type: string UserRel: required: - id type: object properties: id: type: integer format: int64 firstName: type: string lastName: type: string ShiftRel: type: object properties: user: $ref: '#/components/schemas/UserRel' end: type: string format: date-time start: type: string format: date-time ScheduleLayerConfig: required: - rotation - startsOn - users type: object properties: name: type: string startsOn: type: string format: date-time endsOn: type: string format: date-time users: type: array items: $ref: '#/components/schemas/UserRel' rotation: type: string format: P7D restrictionType: type: string description: 'Note: ''TIMES_OF_DAY'' is just a UI state representation, the API always uses ''TIMES_OF_WEEK''' enum: - TIMES_OF_WEEK restrictions: type: array items: $ref: '#/components/schemas/ScheduleLayerRestriction' Role: type: string enum: - STAKEHOLDER - GUEST - RESPONDER - USER - ADMIN Schedule: type: object properties: id: type: integer format: int64 name: type: string timezone: $ref: '#/components/schemas/TimeZone' type: type: string enum: - STATIC - RECURRING scheduleLayers: type: array items: $ref: '#/components/schemas/ScheduleLayerConfig' shifts: type: array items: $ref: '#/components/schemas/ShiftRel' showGaps: type: boolean defaultShiftDuration: type: string format: P7D currentShift: $ref: '#/components/schemas/ShiftRel' nextShift: $ref: '#/components/schemas/ShiftRel' teams: type: array items: $ref: '#/components/schemas/TeamRel' Shift: type: object properties: user: $ref: '#/components/schemas/User' end: type: string format: date-time start: type: string format: date-time User: required: - email - firstName - lastName type: object properties: id: type: integer format: int64 firstName: type: string lastName: type: string email: type: string timezone: $ref: '#/components/schemas/TimeZone' position: type: string department: type: string avatarUrl: type: string readOnly: true language: type: string enum: - de - en region: type: string enum: - DE - GB - CH - CN - IN - US - FR - ES - CA - IE role: $ref: '#/components/schemas/Role' shiftColor: type: string description: Optional hex-color code for the user's shifts in schedules calendars mutedUntil: type: string description: Date in ISO-8601 format: date-time createdAt: type: string description: Date in ISO-8601 format: date-time updatedAt: type: string description: Date in ISO-8601 format: date-time ScheduleRel: type: object properties: id: type: integer format: int64 name: type: string type: type: string enum: - STATIC - RECURRING TimeOfWeek: required: - dayOfWeek - time type: object properties: dayOfWeek: type: string enum: - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY time: type: string format: '15:00' ScheduleLayerRestriction: required: - from - to type: object properties: from: $ref: '#/components/schemas/TimeOfWeek' to: $ref: '#/components/schemas/TimeOfWeek' securitySchemes: apiKey: type: apiKey description: The Bearer API key of your user more info. name: Authorization in: header x-original-swagger-version: '2.0'