from apispec import APISpec from apispec.ext.marshmallow import MarshmallowPlugin from api import app from artists import ArtistRosterProjectsView, LabelArtistsView from connectors import ConnectorsView from labels import ( LabelPermissionsTeamMembersView, LabelPermissionsCountersView, LabelPermissionsArtistsView, LabelPermissionsArtistTeamsView, LabelPermissionsUsersArtistTeamsView ) from media_plan import ( MediaPlanCampaignView, MediaPlanDetailsView, PhasesView, PhaseView, MediaPlanCampaignsBulkActionView, ApproverUsersView, ApprovalRequestView, MediaPlanReview, SubmitApprovalView, MediaPlanMetricsView, MediaPlanView, MediaPlanReleaseDetailsView ) from campaigns import ( CampaignDetailView, CampaignListView, CampaignsTabView, ManageExternalCampaigns, AssignableCampaignsView, ) from projects.views.widgets.project_team_counters_view import ProjectTeamCountersView from projects import ( ProjectDetailView, ProjectListView, ClaimProjectView, RecentViewedProjectsView, NewlyAddedProjectsView, ProjectSharingView ) from global_search import SearchView, RecentSearchesView from flask_apispec import FlaskApiSpec from config import APP_ROOT from users import UsersView def get_api_version(): with open(f'{APP_ROOT}/VERSION') as f: version = f.read() return version def swagger(): jwt_scheme = { "name": "Authorization", "in": "header", "type": "apiKey", "description": "JWT Authorization header" } app.config.update({ 'APISPEC_SPEC': APISpec( title="Decibel API", version=get_api_version(), openapi_version="2.0", plugins=[MarshmallowPlugin()], security=[{'jwt': []}], info=dict( description="""Most of the API endpoints require users to be logged in. To log in under a specific user you just need to copy an access_token from the active session and paste it into the Authorize form using the format: Bearer \""") ), 'APISPEC_SWAGGER_URL': '/swagger/', 'APISPEC_SWAGGER_UI_URL': '/doc/' }) docs = FlaskApiSpec(app) docs.spec.components.security_scheme("jwt", jwt_scheme) docs.register(CampaignDetailView, blueprint='campaigns', endpoint='campaign_detail') docs.register(CampaignListView, blueprint='campaigns', endpoint='campaign_list') docs.register(CampaignsTabView, blueprint='campaigns', endpoint='campaign_tab') docs.register(ManageExternalCampaigns, blueprint='campaigns', endpoint='manage_external_campaigns') docs.register(SearchView, blueprint='global_search', endpoint='global_search_view') docs.register(MediaPlanDetailsView, blueprint='media_plan', endpoint='media_plan_details') docs.register(PhasesView, blueprint='media_plan', endpoint='media_plan_phases') docs.register(PhaseView, blueprint='media_plan', endpoint='media_plan_phase_view') docs.register(MediaPlanCampaignView, blueprint='media_plan', endpoint='media_plan_campaign') docs.register(MediaPlanCampaignsBulkActionView, blueprint='media_plan', endpoint='media_plan_campaigns_bulk_action') docs.register(ApproverUsersView, blueprint='media_plan', endpoint='media_plan_approver_users') docs.register(ApprovalRequestView, blueprint='media_plan', endpoint='approval_request') docs.register(MediaPlanReview, blueprint='media_plan', endpoint='media_plan_review') docs.register(SubmitApprovalView, blueprint='media_plan', endpoint='submit_approval') docs.register(ProjectDetailView, blueprint='projects', endpoint='project_detail') docs.register(ProjectListView, blueprint='projects', endpoint='project_list') docs.register(ProjectSharingView, blueprint='projects', endpoint='project_sharing') docs.register(ClaimProjectView, blueprint='projects', endpoint='claim_project') docs.register(ProjectTeamCountersView, blueprint='projects', endpoint='team_counters') docs.register(RecentViewedProjectsView, blueprint='projects', endpoint='recently_viewed_projects') docs.register(NewlyAddedProjectsView, blueprint='projects', endpoint='newly_added_projects') docs.register(MediaPlanMetricsView, blueprint='media_plan', endpoint='media_plan_metrics') docs.register(MediaPlanView, blueprint='media_plan', endpoint='media_plans') docs.register(MediaPlanReleaseDetailsView, blueprint='media_plan', endpoint='media_plan_release_details') docs.register(AssignableCampaignsView, blueprint='campaigns', endpoint='assignable_campaigns') docs.register(ArtistRosterProjectsView, blueprint='artists', endpoint='artist_roster_projects') docs.register(LabelPermissionsTeamMembersView, blueprint='labels', endpoint='team_members_permissions') docs.register(LabelPermissionsCountersView, blueprint='labels', endpoint='label_permissions_counters') docs.register(LabelArtistsView, blueprint='artists', endpoint='label_artists') docs.register(LabelPermissionsArtistsView, blueprint='labels', endpoint='label_permissions_artists') docs.register(LabelPermissionsArtistTeamsView, blueprint='labels', endpoint='label_permissions_artist_teams') docs.register( LabelPermissionsUsersArtistTeamsView, blueprint='labels', endpoint='label_permissions_users_artist_teams' ) docs.register(RecentSearchesView, blueprint='global_search', endpoint='recent_search_view') docs.register(UsersView, blueprint='users', endpoint='users') # docs.register(ConnectorsView, blueprint='connectors', endpoint='connectors')