openapi: 3.0.3
info:
  title: Mijn API
  version: 1.0.0
  description: API documentatie

servers:
  - url: http://localhost:3000
    description: Local API

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    cookieAuth:
      type: apiKey
      in: cookie
      name: session

paths:
  # Auth
  /api/auth/api-key:
    $ref: './Auth/Auth.yaml#/auth/apiKey'
  /api/auth/change-password:
    $ref: './Auth/Auth.yaml#/auth/changePassword'
  /api/auth/forgot-password:
    $ref: './Auth/Auth.yaml#/auth/forgotPassword'
  /api/auth/language:
    $ref: './Auth/Auth.yaml#/auth/language'
  /api/auth/login:
    $ref: './Auth/Auth.yaml#/auth/login'
  /api/auth/logout:
    $ref: './Auth/Auth.yaml#/auth/logout'
  /api/auth/me:
    $ref: './Auth/Auth.yaml#/auth/me'
  /api/auth/oauth/apple:
    $ref: './Auth/Auth.yaml#/auth/oauthApple'
  /api/auth/oauth/apple/callback:
    $ref: './Auth/Auth.yaml#/auth/oauthAppleCallback'
  /api/auth/oauth/complete:
    $ref: './Auth/Auth.yaml#/auth/oauthComplete'
  /api/auth/oauth/google:
    $ref: './Auth/Auth.yaml#/auth/oauthGoogle'
  /api/auth/oauth/google/callback:
    $ref: './Auth/Auth.yaml#/auth/oauthGoogleCallback'
  /api/auth/register:
    $ref: './Auth/Auth.yaml#/auth/register'
  /api/auth/reset-password:
    $ref: './Auth/Auth.yaml#/auth/resetPassword'
  /api/auth/role:
    $ref: './Auth/Auth.yaml#/auth/role'

  # Users
  /api/users:
    $ref: './Users/Users.yaml#/users/list'
  /api/users/{userId}:
    $ref: './Users/Users.yaml#/users/byId'
  /api/users/{userId}/trainer-relationships:
    $ref: './Users/Users.yaml#/users/trainerRelationships'
  /api/users/{userId}/trainer-status:
    $ref: './Users/Users.yaml#/users/trainerStatus'
  /api/users/purge-emails:
    $ref: './Users/Users.yaml#/users/purgeEmails'

  # User Roles
  /api/user-role-assignments:
    $ref: './UserRoleAssignments/UserRoleAssignments.yaml#/userRoleAssignments/list'
  /api/user-role-assignments/{id}:
    $ref: './UserRoleAssignments/UserRoleAssignments.yaml#/userRoleAssignments/byId'
  /api/user-roles:
    $ref: './UserRoles/UserRoles.yaml#/userRoles/list'
  /api/user-roles/{id}:
    $ref: './UserRoles/UserRoles.yaml#/userRoles/byId'

  # Locations
  /api/locations:
    $ref: './Locations/Locations.yaml#/locations'
  /api/locations/{locationId}:
    $ref: './Locations/Locations.yaml#/locations/locationId'
  /api/locations/activate:
    $ref: './Locations/Locations.yaml#/locations/activate'

  # Analytics
  /api/analytics:
    $ref: './Analytics/Analytics.yaml#/analytics'
  /api/performance:
    $ref: './Analytics/Performance.yaml#/performance'

  # Calendar
  /api/calendar/status:
    $ref: './Calender/Status.yaml#/calendarStatus'
  /api/calendar/google/connect:
    $ref: './Calender/GoogleConnect.yaml#/googleConnect'
  /api/calendar/microsoft/connect:
    $ref: './Calender/MicrosoftConnect.yaml#/microsoftConnect'

  # Infrastructure
  /api/languages:
    $ref: './Languages/Languages.yaml#/languages'
  /api/batch:
    $ref: './Infra/Batch.yaml#/batch'
  /api/circuit-breaker:
    $ref: './Infra/Circuit-breaker.yaml#/circuitBreaker'
  /api/areas:
    $ref: './MasterData/Areas.yaml#/areas'
  /api/areas/upload-image:
    $ref: './MasterData/Upload-image.yaml#/uploadImage'
  /api/categories:
    $ref: './MasterData/Categories.yaml#/categories'
  /api/services:
    $ref: './MasterData/Services.yaml#/services'
  /api/settings:
    $ref: './MasterData/Settings.yaml#/settings'
  /api/sports:
    $ref: './Sports/Sports.yaml#/sports'
  /api/sports/bulk:
    $ref: './Sports/Sports-bulk.yaml#/sportsBulk'
  /api/sports/global:
    $ref: './Sports/Sports-global.yaml#/sportsGlobal'
  /api/translations:
    $ref: './Translations/Translations.yaml#/translations'
  /api/webhooks/mailgun:
    $ref: './Misc/Mailgun.yaml#/mailgunWebhook'

  # Trials
  /api/trials:
    $ref: './Trials/trials.yaml#/trials'
  /api/trials/bookings:
    $ref: './Trials/bookings.yaml#/bookings'
  /api/trials/reminders:
    $ref: './Trials/reminders.yaml#/reminders'
  /api/trials/phases:
    $ref: './Trials/phases.yaml#/phases'
  /api/trials/phases/reorder:
    $ref: './Trials/reorder.yaml#/reorder'
  /api/trials/requests:
    $ref: './Trials/requests.yaml#/requests'
  /api/trials/{id}:
    $ref: './Trials/trial-id.yaml#/trialById'
  /api/trials/{id}/activity:
    $ref: './Trials/trial-activity.yaml#/trialActivity'
  /api/trials/cancel:
    $ref: './Trials/cancel.yaml#/cancel'
  /api/trials/internal-note:
    $ref: './Trials/internal-note.yaml#/internalNote'

  # Public Trial Submission
  /api/triallesson:
    $ref: './Trials/triallesson.yaml#/triallesson'

  # Members
  /api/members:
    $ref: './Members/members.yaml#/members'

  # Trainers
  /api/trainers:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainers'
  /api/trainers/{trainerId}/classes:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerClasses'
  /api/trainers/link-requests:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerLinkRequests'
  /api/trainers/link-requests/{locationId}:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerLinkRequestByLocation'
  /api/trainers/my-locations:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerMyLocations'
  /api/trainers/schedule/export.ics:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerScheduleExport'
  /api/trainers/schedule/feed.ics:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerScheduleFeed'
  /api/trainers/schedule/feed/get-token:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/trainerScheduleFeedToken'

  # Automation Infrastructure
  /api/automation/runner:
    $ref: './Automation/runner.yaml#/runner'
  /api/automation/process-jobs:
    $ref: './Automation/process-jobs.yaml#/processJobs'

  # Location Automations
  /api/locations/{locationId}/automations:
    $ref: './Locations/automations.yaml#/automations'
  /api/locations/{locationId}/automations/{flowId}:
    $ref: './Locations/automations-flowId.yaml#/automationFlow'
  /api/locations/{locationId}/automations/{flowId}/steps:
    $ref: './Locations/automations-steps.yaml#/automationSteps'
  /api/locations/{locationId}/automations/{flowId}/steps/{stepId}:
    $ref: './Locations/automations-steps.yaml#/automationStep'
  /api/locations/{locationId}/automations/logs:
    $ref: './Locations/automations-logs.yaml#/automationLogs'

  # Platforms
  /api/platforms:
    $ref: './Platforms/Platforms.yaml#/platforms/list'
  /api/platforms/{platformId}:
    $ref: './Platforms/Platforms.yaml#/platforms/byId'
  /api/platforms/{platformId}/deactivate:
    $ref: './Platforms/Platforms.yaml#/platforms/deactivate'
  /api/platforms/{platformId}/scopes:
    $ref: './Platforms/Platforms.yaml#/platforms/scopes'
  /api/platforms/{platformId}/services:
    $ref: './Platforms/Platforms.yaml#/platforms/services'
  /api/platforms/{platformId}/stats:
    $ref: './Platforms/Platforms.yaml#/platforms/stats'
  /api/platforms/{platformId}/sync:
    $ref: './Platforms/Platforms.yaml#/platforms/sync'
  /api/platforms/geo/cities:
    $ref: './Platforms/Platforms.yaml#/platforms/geoCities'
  /api/platforms/geo/countries:
    $ref: './Platforms/Platforms.yaml#/platforms/geoCountries'
  /api/platforms/geo/states:
    $ref: './Platforms/Platforms.yaml#/platforms/geoStates'

  # Public
  /api/public/areas:
    $ref: './Public/Public.yaml#/public/areas'
  /api/public/locations:
    $ref: './Public/Public.yaml#/public/locations'
  /api/public/locations/{locationPublicId}/active-schedule:
    $ref: './Public/Public.yaml#/public/locationActiveSchedule'
  /api/public/locations/{locationPublicId}/schedule:
    $ref: './Public/Public.yaml#/public/locationSchedule'
  /api/public/locations/{locationPublicId}/schedules/{scheduleId}/classes:
    $ref: './Public/Public.yaml#/public/locationScheduleClasses'
  /api/public/trainers:
    $ref: './Public/Public.yaml#/public/trainers'
  /api/embed/schedule:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/embedScheduleV2'
  /api/embed/v1/schedule:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/embedScheduleV1'
  /api/embeds/{embedId}/config:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/embedConfig'
  /api/embeds/{embedId}/schedule-data:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/embedScheduleData'
  /api/embeds/{embedId}/validate-booking:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/embedValidateBooking'

  # Schedules and Widgets
  /api/schedule:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/scheduleAlias'
  /api/locations/{locationId}/embeds:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/locationEmbeds'
  /api/locations/{locationId}/embeds/{embedId}:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/locationEmbedById'
  /api/locations/{locationId}/embeds/{embedId}/init-config:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/locationEmbedInitConfig'
  /api/locations/{locationId}/widget-filter-presets:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/widgetFilterPresets'
  /api/locations/{locationId}/widget-filter-presets/{presetId}:
    $ref: './api-docs/trainers-widgets.yaml#/trainerWidgets/widgetFilterPresetById'

  # Extra domains
  /api/uploads/platform-logo:
    $ref: './Uploads/Uploads.yaml#/uploads/platformLogo'
  /api/seo/generate:
    $ref: './Seo/Seo.yaml#/seo/generate'
  /api/tam/sync:
    $ref: './Tam/Tam.yaml#/tam/sync'
