openapi: 3.0.3 info: title: 'WebGuard API Reference' description: 'Programmatic access to monitoring status, uptime history, incidents, SSL metadata, and server health reports.' version: 1.0.0 servers: - url: 'https://app.webguard.marcel-breuer.dev' tags: - name: Endpoints description: '' - name: 'Monitoring API' description: "\nThis controller is responsible for handling all API requests related to monitoring data.\nIt provides endpoints for retrieving uptime/downtime, response times, incidents, and other monitoring statistics.\nThe controller makes extensive use of caching to ensure optimal performance." - name: 'Monitoring Management' description: "\nCreate, update, delete, and move private or team-owned monitorings." - name: 'Server Health' description: '' - name: Teams description: "\nManage teams and team ownership." components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' security: - default: [] paths: /api/v1/mobile-push-devices: get: summary: '' operationId: getApiV1MobilePushDevices description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints post: summary: '' operationId: postApiV1MobilePushDevices description: '' parameters: [] responses: {} tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: platform: type: string description: '' example: ios enum: - ios - android push_provider: type: string description: '' example: apns enum: - apns - fcm push_token: type: string description: 'Must not be greater than 4096 characters.' example: b device_name: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true app_version: type: string description: 'Must not be greater than 64 characters.' example: g nullable: true locale: type: string description: 'Must not be greater than 16 characters.' example: en_MT nullable: true timezone: type: string description: 'Must not be greater than 64 characters.' example: America/La_Paz nullable: true enabled: type: boolean description: '' example: false notifications_authorized_at: type: string description: 'Must be a valid date.' example: '2026-07-13T12:49:36' nullable: true required: - platform - push_token '/api/v1/mobile-push-devices/{id}': put: summary: '' operationId: putApiV1MobilePushDevicesId description: '' parameters: [] responses: {} tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: device_name: type: string description: 'Must not be greater than 255 characters.' example: b nullable: true app_version: type: string description: 'Must not be greater than 64 characters.' example: 'n' nullable: true locale: type: string description: 'Must not be greater than 16 characters.' example: kfo_CI nullable: true timezone: type: string description: 'Must not be greater than 64 characters.' example: America/Bahia_Banderas nullable: true enabled: type: boolean description: '' example: true notifications_authorized_at: type: string description: 'Must be a valid date.' example: '2026-07-13T12:49:36' nullable: true delete: summary: '' operationId: deleteApiV1MobilePushDevicesId description: '' parameters: [] responses: {} tags: - Endpoints parameters: - in: path name: id description: 'The ID of the mobile push device.' example: architecto required: true schema: type: string '/api/v1/monitorings/{monitoring_id}': get: summary: 'Retrieves all data for a given monitoring instance.' operationId: retrievesAllDataForAGivenMonitoringInstance description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status_since: status: UP time: '2021-01-01 00:00:00' status_now: status: UP uptime_downtime: - date: '2021-01-01' uptime: 100 downtime: 0 response_times: - datetime: '2021-01-01 00:00:00' response_time: 123 incidents: - started_at: '2021-01-01 00:00:00' finished_at: '2021-01-01 00:05:00' type: DOWN reason: 'HTTP status code 500' heatmap: - hour: '00:00' uptime: 100 ssl: valid: true expiration: '2022-01-01T00:00:00.000000Z' issuer: "Let's Encrypt" issue_date: '2021-10-01T00:00:00.000000Z' uptime_calendar: 2021-01: - date: '2021-01-01' uptime: '100.00' properties: status_since: type: object properties: status: type: string example: UP time: type: string example: '2021-01-01 00:00:00' status_now: type: object properties: status: type: string example: UP uptime_downtime: type: array example: - date: '2021-01-01' uptime: 100 downtime: 0 items: type: object properties: date: type: string example: '2021-01-01' uptime: type: integer example: 100 downtime: type: integer example: 0 response_times: type: array example: - datetime: '2021-01-01 00:00:00' response_time: 123 items: type: object properties: datetime: type: string example: '2021-01-01 00:00:00' response_time: type: integer example: 123 incidents: type: array example: - started_at: '2021-01-01 00:00:00' finished_at: '2021-01-01 00:05:00' type: DOWN reason: 'HTTP status code 500' items: type: object properties: started_at: type: string example: '2021-01-01 00:00:00' finished_at: type: string example: '2021-01-01 00:05:00' type: type: string example: DOWN reason: type: string example: 'HTTP status code 500' heatmap: type: array example: - hour: '00:00' uptime: 100 items: type: object properties: hour: type: string example: '00:00' uptime: type: integer example: 100 ssl: type: object properties: valid: type: boolean example: true expiration: type: string example: '2022-01-01T00:00:00.000000Z' issuer: type: string example: "Let's Encrypt" issue_date: type: string example: '2021-10-01T00:00:00.000000Z' uptime_calendar: type: object properties: 2021-01: type: array example: - date: '2021-01-01' uptime: '100.00' items: type: object properties: date: type: string example: '2021-01-01' uptime: type: string example: '100.00' tags: - 'Monitoring API' requestBody: required: true content: application/json: schema: type: object properties: days: type: integer description: '' example: 16 nullable: true start_date: type: string description: 'Must be a valid date.' example: '2026-07-13T12:49:36' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-08-05' required: - start_date - end_date patch: summary: '' operationId: patchApiV1MonitoringsMonitoring_id description: '' parameters: [] responses: {} tags: - 'Monitoring Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: b type: type: string description: '' example: heartbeat enum: - http - ping - keyword - port - heartbeat - server_health - domain_expiration - dns_record port: type: integer description: 'This field is required when type is port. Must be at least 1. Must not be greater than 65535.' example: 22 nullable: true keyword: type: string description: 'This field is required when type is keyword. Must not be greater than 255 characters.' example: g nullable: true dns_record_type: type: string description: '' example: AAAA enum: - A - AAAA - CNAME - MX - TXT - NS - SOA - CAA nullable: true dns_expected_values: type: string description: '' example: null nullable: true status: type: string description: '' example: active enum: - active - paused heartbeat_interval_minutes: type: integer description: 'This field is required when type is heartbeat. Must be at least 1. Must not be greater than 10080.' example: 16 nullable: true heartbeat_grace_minutes: type: integer description: 'This field is required when type is heartbeat. Must be at least 0. Must not be greater than 1440.' example: 17 nullable: true server_health_cpu_threshold_percent: type: string description: '' example: null nullable: true server_health_ram_threshold_percent: type: string description: '' example: null nullable: true server_health_storage_threshold_percent: type: string description: '' example: null nullable: true timeout: type: string description: 'Must not be greater than 60 characters.' example: i http_method: type: string description: '' example: null expected_http_statuses: type: string description: 'Must not be greater than 255 characters.' example: 'y' nullable: true http_headers: type: string description: '' example: null nullable: true http_body: type: string description: 'Must not be greater than 2048 characters.' example: v nullable: true auth_username: type: string description: 'Must not be greater than 255 characters.' example: d nullable: true auth_password: type: string description: 'Must not be greater than 255 characters.' example: l nullable: true preferred_location: type: string description: 'Must match an existing stored value.' example: architecto preferred_locations: type: array description: 'Must match an existing stored value.' example: - architecto items: type: string public_label_enabled: type: boolean description: '' example: false notification_on_failure: type: boolean description: '' example: false notification_channels: type: array description: '' example: - null items: type: string enum: - null team_id: type: string description: 'Must match an existing stored value.' example: architecto nullable: true group_ids: type: array description: 'Must match an existing stored value.' example: - architecto items: type: string failure_confirmation_threshold: type: integer description: 'Must be at least 1. Must not be greater than 10.' example: 2 ssl_expiry_warning_days: type: integer description: 'Must be at least 1. Must not be greater than 365.' example: 7 target: type: string description: 'Must not be greater than 255 characters.' example: z nullable: true required: - name - type - status - preferred_location - preferred_locations - failure_confirmation_threshold - ssl_expiry_warning_days delete: summary: '' operationId: deleteApiV1MonitoringsMonitoring_id description: '' parameters: [] responses: {} tags: - 'Monitoring Management' parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/status': get: summary: 'Retrieves the combined status of a given monitoring instance.' operationId: retrievesTheCombinedStatusOfAGivenMonitoringInstance description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: status: UP since: '2021-01-01 00:00:00' checked_at: '2021-01-01 00:00:00' next: '2021-01-01 00:05:00' interval: 300 properties: status: type: string example: UP since: type: string example: '2021-01-01 00:00:00' checked_at: type: string example: '2021-01-01 00:00:00' next: type: string example: '2021-01-01 00:05:00' interval: type: integer example: 300 tags: - 'Monitoring API' parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/uptime-downtime': get: summary: 'Retrieves the uptime and downtime data for a given monitoring instance.' operationId: retrievesTheUptimeAndDowntimeDataForAGivenMonitoringInstance description: '' parameters: - in: query name: days description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 required: false schema: type: integer description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: date: type: string example: '2021-01-01' uptime: type: integer example: 100 downtime: type: integer example: 0 example: - date: '2021-01-01' uptime: 100 downtime: 0 tags: - 'Monitoring API' requestBody: required: false content: application/json: schema: type: object properties: days: type: integer description: '' example: 16 nullable: true parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/uptime-downtime-summary': get: summary: 'Retrieves uptime and downtime data for multiple day ranges in one request.' operationId: retrievesUptimeAndDowntimeDataForMultipleDayRangesInOneRequest description: '' parameters: - in: query name: 'days[]' description: 'The day ranges to retrieve.' example: - 7 - 30 - 90 required: false schema: type: array description: 'The day ranges to retrieve.' example: - 7 - 30 - 90 items: type: integer responses: 200: description: '' content: application/json: schema: type: object example: data: '7': has_data: true '30': has_data: true properties: data: type: object properties: 7: type: object properties: has_data: type: boolean example: true 30: type: object properties: has_data: type: boolean example: true tags: - 'Monitoring API' requestBody: required: true content: application/json: schema: type: object properties: days: type: array description: 'Must be at least 1. Must not be greater than 3650.' example: - 1 items: type: integer required: - days parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/response-times': get: summary: 'Retrieves the response times for a given monitoring instance.' operationId: retrievesTheResponseTimesForAGivenMonitoringInstance description: '' parameters: - in: query name: days description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 required: false schema: type: integer description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: datetime: type: string example: '2021-01-01 00:00:00' response_time: type: integer example: 123 example: - datetime: '2021-01-01 00:00:00' response_time: 123 tags: - 'Monitoring API' requestBody: required: false content: application/json: schema: type: object properties: days: type: integer description: '' example: 16 nullable: true parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/checks': get: summary: 'Retrieves historical monitoring checks including status code details.' operationId: retrievesHistoricalMonitoringChecksIncludingStatusCodeDetails description: '' parameters: - in: query name: days description: 'Optional number of past days to include. If omitted, all available history is considered.' example: 16 required: false schema: type: integer description: 'Optional number of past days to include. If omitted, all available history is considered.' example: 16 - in: query name: limit description: 'Optional maximum number of entries returned. Defaults to 100.' example: 16 required: false schema: type: integer description: 'Optional maximum number of entries returned. Defaults to 100.' example: 16 - in: query name: offset description: 'Optional number of entries to skip for pagination. Defaults to 0.' example: 16 required: false schema: type: integer description: 'Optional number of entries to skip for pagination. Defaults to 0.' example: 16 responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 01H... checked_at: '2026-03-24T12:00:00Z' status: down http_status_code: 503 response_time: 210.5 status_identifier: status.server_error status_key: notifications.status.server_error source: live meta: count: 1 limit: 100 offset: 0 days: 7 has_more: false next_offset: null properties: data: type: array example: - id: 01H... checked_at: '2026-03-24T12:00:00Z' status: down http_status_code: 503 response_time: 210.5 status_identifier: status.server_error status_key: notifications.status.server_error source: live items: type: object properties: id: type: string example: 01H... checked_at: type: string example: '2026-03-24T12:00:00Z' status: type: string example: down http_status_code: type: integer example: 503 response_time: type: number example: 210.5 status_identifier: type: string example: status.server_error status_key: type: string example: notifications.status.server_error source: type: string example: live meta: type: object properties: count: type: integer example: 1 limit: type: integer example: 100 offset: type: integer example: 0 days: type: integer example: 7 has_more: type: boolean example: false next_offset: type: string example: null nullable: true tags: - 'Monitoring API' requestBody: required: false content: application/json: schema: type: object properties: days: type: integer description: 'Must be at least 1. Must not be greater than 3650.' example: 1 nullable: true limit: type: integer description: 'Must be at least 1. Must not be greater than 1000.' example: 22 nullable: true offset: type: integer description: 'Must be at least 0. Must not be greater than 100000.' example: 7 nullable: true parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/incidents': get: summary: 'Retrieves the incidents for a given monitoring instance.' operationId: retrievesTheIncidentsForAGivenMonitoringInstance description: '' parameters: - in: query name: days description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 required: false schema: type: integer description: 'The number of days to retrieve data for. Defaults to 30.' example: 30 responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: started_at: type: string example: '2021-01-01 00:00:00' finished_at: type: string example: '2021-01-01 00:05:00' type: type: string example: DOWN reason: type: string example: 'HTTP status code 500' example: - started_at: '2021-01-01 00:00:00' finished_at: '2021-01-01 00:05:00' type: DOWN reason: 'HTTP status code 500' tags: - 'Monitoring API' requestBody: required: false content: application/json: schema: type: object properties: days: type: integer description: '' example: 16 nullable: true parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/heatmap': get: summary: 'Retrieves the uptime heatmap data for a given monitoring instance.' operationId: retrievesTheUptimeHeatmapDataForAGivenMonitoringInstance description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: array items: type: object properties: hour: type: string example: '00:00' uptime: type: integer example: 100 example: - hour: '00:00' uptime: 100 tags: - 'Monitoring API' parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/ssl': get: summary: 'Retrieves the SSL status for a given monitoring instance.' operationId: retrievesTheSSLStatusForAGivenMonitoringInstance description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: valid: true expiration: '2022-01-01T00:00:00.000000Z' issuer: "Let's Encrypt" issue_date: '2021-10-01T00:00:00.000000Z' properties: valid: type: boolean example: true expiration: type: string example: '2022-01-01T00:00:00.000000Z' issuer: type: string example: "Let's Encrypt" issue_date: type: string example: '2021-10-01T00:00:00.000000Z' tags: - 'Monitoring API' parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/monitorings/{monitoring_id}/uptime-calendar': get: summary: 'Retrieves the uptime calendar data for a given monitoring instance.' operationId: retrievesTheUptimeCalendarDataForAGivenMonitoringInstance description: '' parameters: - in: query name: start_date description: 'date The start date to retrieve data for.' example: '2021-01-01' required: true schema: type: string description: 'date The start date to retrieve data for.' example: '2021-01-01' - in: query name: end_date description: 'date The end date to retrieve data for.' example: '2021-01-31' required: true schema: type: string description: 'date The end date to retrieve data for.' example: '2021-01-31' responses: 200: description: '' content: application/json: schema: type: object example: 2021-01: - date: '2021-01-01' uptime: '100.00' properties: 2021-01: type: array example: - date: '2021-01-01' uptime: '100.00' items: type: object properties: date: type: string example: '2021-01-01' uptime: type: string example: '100.00' tags: - 'Monitoring API' requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Must be a valid date.' example: '2026-07-13T12:49:36' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-08-05' required: - start_date - end_date parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string /api/v1/monitorings: get: summary: '' operationId: getApiV1Monitorings description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Monitoring Management' post: summary: '' operationId: postApiV1Monitorings description: '' parameters: [] responses: {} tags: - 'Monitoring Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: b type: type: string description: '' example: keyword enum: - http - ping - keyword - port - heartbeat - server_health - domain_expiration - dns_record port: type: integer description: 'This field is required when type is port. Must be at least 1. Must not be greater than 65535.' example: 22 nullable: true keyword: type: string description: 'This field is required when type is keyword. Must not be greater than 255 characters.' example: g nullable: true dns_record_type: type: string description: '' example: MX enum: - A - AAAA - CNAME - MX - TXT - NS - SOA - CAA nullable: true dns_expected_values: type: string description: '' example: null nullable: true status: type: string description: '' example: paused enum: - active - paused heartbeat_interval_minutes: type: integer description: 'This field is required when type is heartbeat. Must be at least 1. Must not be greater than 10080.' example: 16 nullable: true heartbeat_grace_minutes: type: integer description: 'This field is required when type is heartbeat. Must be at least 0. Must not be greater than 1440.' example: 17 nullable: true server_health_cpu_threshold_percent: type: string description: '' example: null nullable: true server_health_ram_threshold_percent: type: string description: '' example: null nullable: true server_health_storage_threshold_percent: type: string description: '' example: null nullable: true timeout: type: string description: 'Must not be greater than 60 characters.' example: i http_method: type: string description: '' example: null expected_http_statuses: type: string description: 'Must not be greater than 255 characters.' example: 'y' nullable: true http_headers: type: string description: '' example: null nullable: true http_body: type: string description: 'Must not be greater than 2048 characters.' example: v nullable: true auth_username: type: string description: 'Must not be greater than 255 characters.' example: d nullable: true auth_password: type: string description: 'Must not be greater than 255 characters.' example: l nullable: true preferred_location: type: string description: 'Must match an existing stored value.' example: architecto preferred_locations: type: array description: 'Must match an existing stored value.' example: - architecto items: type: string public_label_enabled: type: boolean description: '' example: true notification_on_failure: type: boolean description: '' example: true notification_channels: type: array description: '' example: - null items: type: string enum: - null team_id: type: string description: 'Must match an existing stored value.' example: architecto nullable: true group_ids: type: array description: 'Must match an existing stored value.' example: - architecto items: type: string failure_confirmation_threshold: type: integer description: 'Must be at least 1. Must not be greater than 10.' example: 2 ssl_expiry_warning_days: type: integer description: 'Must be at least 1. Must not be greater than 365.' example: 7 target: type: string description: 'Must not be greater than 255 characters.' example: z required: - name - type - status - preferred_location - preferred_locations - failure_confirmation_threshold - ssl_expiry_warning_days - target '/api/v1/monitorings/{monitoring_id}/team-ownership': post: summary: '' operationId: postApiV1MonitoringsMonitoring_idTeamOwnership description: '' parameters: [] responses: {} tags: - 'Monitoring Management' requestBody: required: true content: application/json: schema: type: object properties: team_id: type: string description: '' example: architecto required: - team_id delete: summary: '' operationId: deleteApiV1MonitoringsMonitoring_idTeamOwnership description: '' parameters: [] responses: {} tags: - 'Monitoring Management' parameters: - in: path name: monitoring_id description: 'The ID of the monitoring.' example: 01k0rqs3gmz6esfrmgsre03yd6 required: true schema: type: string '/api/v1/server-health/{token}': post: summary: 'Store a server health report.' operationId: storeAServerHealthReport description: "Use the private endpoint generated for a Server Health monitoring. Send\nCPU, RAM, and storage percentages from your server agent or cron script.\nIf no explicit status is supplied, WebGuard marks the report down when\nany percentage metric reaches that monitor's configured threshold." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: message: 'Server health report accepted.' status: up metrics: cpu_usage_percent: 42.5 ram_usage_percent: 68.2 storage_usage_percent: 74.1 properties: message: type: string example: 'Server health report accepted.' status: type: string example: up metrics: type: object properties: cpu_usage_percent: type: number example: 42.5 ram_usage_percent: type: number example: 68.2 storage_usage_percent: type: number example: 74.1 tags: - 'Server Health' requestBody: required: false content: application/json: schema: type: object properties: status: type: string description: 'Optional explicit status. One of up, down, unknown.' example: up nullable: true cpu_usage_percent: type: number description: 'CPU usage as a percentage from 0 to 100.' example: 42.5 nullable: true ram_usage_percent: type: number description: 'RAM usage as a percentage from 0 to 100.' example: 68.2 nullable: true storage_usage_percent: type: number description: 'Storage usage as a percentage from 0 to 100.' example: 74.1 nullable: true load_average: type: number description: 'Optional system load average.' example: 1.42 nullable: true uptime_seconds: type: integer description: 'Optional server uptime in seconds.' example: 86400 nullable: true extra_metrics: type: object description: 'Optional additional numeric or string metrics.' example: swap_usage_percent: 12.4 properties: {} nullable: true security: [] parameters: - in: path name: token description: 'The private server health token generated when the monitoring is created.' example: 01HXZ7Q92W3K7VY9E6JQFM4XPC required: true schema: type: string /api/v1/teams: get: summary: '' operationId: getApiV1Teams description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Teams post: summary: '' operationId: postApiV1Teams description: '' parameters: [] responses: {} tags: - Teams requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 120 characters.' example: b description: type: string description: 'Must not be greater than 1000 characters.' example: 'Et animi quos velit et fugiat.' nullable: true required: - name '/api/v1/teams/{id}': get: summary: '' operationId: getApiV1TeamsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Teams put: summary: '' operationId: putApiV1TeamsId description: '' parameters: [] responses: {} tags: - Teams requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 120 characters.' example: b description: type: string description: 'Must not be greater than 1000 characters.' example: 'Et animi quos velit et fugiat.' nullable: true required: - name delete: summary: '' operationId: deleteApiV1TeamsId description: '' parameters: [] responses: {} tags: - Teams parameters: - in: path name: id description: 'The ID of the team.' example: architecto required: true schema: type: string '/api/v1/teams/{team_id}/members': get: summary: '' operationId: getApiV1TeamsTeam_idMembers description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Teams parameters: - in: path name: team_id description: 'The ID of the team.' example: architecto required: true schema: type: string '/api/v1/teams/{team_id}/members/{teamMembership_id}': patch: summary: '' operationId: patchApiV1TeamsTeam_idMembersTeamMembership_id description: '' parameters: [] responses: {} tags: - Teams requestBody: required: true content: application/json: schema: type: object properties: role: type: string description: '' example: admin enum: - admin - member required: - role delete: summary: '' operationId: deleteApiV1TeamsTeam_idMembersTeamMembership_id description: '' parameters: [] responses: {} tags: - Teams parameters: - in: path name: team_id description: 'The ID of the team.' example: architecto required: true schema: type: string - in: path name: teamMembership_id description: 'The ID of the teamMembership.' example: architecto required: true schema: type: string '/api/v1/teams/{team_id}/invitations': get: summary: '' operationId: getApiV1TeamsTeam_idInvitations description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Teams post: summary: '' operationId: postApiV1TeamsTeam_idInvitations description: '' parameters: [] responses: {} tags: - Teams requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: gbailey@example.net role: type: string description: '' example: admin enum: - admin - member required: - email - role parameters: - in: path name: team_id description: 'The ID of the team.' example: architecto required: true schema: type: string '/api/v1/teams/{team_id}/invitations/{teamInvitation_id}': delete: summary: '' operationId: deleteApiV1TeamsTeam_idInvitationsTeamInvitation_id description: '' parameters: [] responses: {} tags: - Teams parameters: - in: path name: team_id description: 'The ID of the team.' example: architecto required: true schema: type: string - in: path name: teamInvitation_id description: 'The ID of the teamInvitation.' example: architecto required: true schema: type: string '/api/v1/team-invitations/{token}/accept': post: summary: '' operationId: postApiV1TeamInvitationsTokenAccept description: '' parameters: [] responses: {} tags: - Teams parameters: - in: path name: token description: '' example: architecto required: true schema: type: string