in backend/__init__.py [0:0]
def add_api_endpoints(app):
"""
Define the routes the API exposes using Flask-Restful.
"""
app.logger.debug("Adding routes to API endpoints")
api = Api(app)
# Projects API import
from backend.api.projects.resources import (
ProjectsRestAPI,
ProjectsAllAPI,
ProjectsQueriesBboxAPI,
ProjectsQueriesOwnerAPI,
ProjectsQueriesTouchedAPI,
ProjectsQueriesSummaryAPI,
ProjectsQueriesNoGeometriesAPI,
ProjectsQueriesNoTasksAPI,
ProjectsQueriesAoiAPI,
ProjectsQueriesPriorityAreasAPI,
ProjectsQueriesFeaturedAPI,
)
from backend.api.projects.activities import (
ProjectsActivitiesAPI,
ProjectsLastActivitiesAPI,
)
from backend.api.projects.contributions import (
ProjectsContributionsAPI,
ProjectsContributionsQueriesDayAPI,
)
from backend.api.projects.statistics import (
ProjectsStatisticsAPI,
ProjectsStatisticsQueriesUsernameAPI,
ProjectsStatisticsQueriesPopularAPI,
)
from backend.api.projects.teams import ProjectsTeamsAPI
from backend.api.projects.campaigns import ProjectsCampaignsAPI
from backend.api.projects.actions import (
ProjectsActionsTransferAPI,
ProjectsActionsMessageContributorsAPI,
ProjectsActionsFeatureAPI,
ProjectsActionsUnFeatureAPI,
ProjectsActionsSetInterestsAPI,
ProjectActionsIntersectingTilesAPI,
)
from backend.api.projects.favorites import ProjectsFavoritesAPI
# Tasks API import
from backend.api.tasks.resources import (
TasksRestAPI,
TasksQueriesJsonAPI,
TasksQueriesXmlAPI,
TasksQueriesGpxAPI,
TasksQueriesAoiAPI,
TasksQueriesMappedAPI,
TasksQueriesOwnInvalidatedAPI,
)
from backend.api.tasks.actions import (
TasksActionsMappingLockAPI,
TasksActionsMappingStopAPI,
TasksActionsMappingUnlockAPI,
TasksActionsMappingUndoAPI,
TasksActionsValidationLockAPI,
TasksActionsValidationStopAPI,
TasksActionsValidationUnlockAPI,
TasksActionsMapAllAPI,
TasksActionsValidateAllAPI,
TasksActionsInvalidateAllAPI,
TasksActionsResetBadImageryAllAPI,
TasksActionsResetAllAPI,
TasksActionsSplitAPI,
)
from backend.api.tasks.statistics import (
TasksStatisticsAPI,
)
# Comments API impor
from backend.api.comments.resources import (
CommentsProjectsRestAPI,
CommentsTasksRestAPI,
)
# Annotations API import
from backend.api.annotations.resources import AnnotationsRestAPI
# Issues API import
from backend.api.issues.resources import IssuesRestAPI, IssuesAllAPI
# Interests API import
from backend.api.interests.resources import InterestsRestAPI, InterestsAllAPI
# Licenses API import
from backend.api.licenses.resources import LicensesRestAPI, LicensesAllAPI
from backend.api.licenses.actions import LicensesActionsAcceptAPI
# Campaigns API endpoint
from backend.api.campaigns.resources import CampaignsRestAPI, CampaignsAllAPI
# Organisations API endpoint
from backend.api.organisations.resources import (
OrganisationsStatsAPI,
OrganisationsRestAPI,
OrganisationsBySlugRestAPI,
OrganisationsAllAPI,
)
from backend.api.organisations.campaigns import OrganisationsCampaignsAPI
# Countries API endpoint
from backend.api.countries.resources import CountriesRestAPI
# Teams API endpoint
from backend.api.teams.resources import TeamsRestAPI, TeamsAllAPI
from backend.api.teams.actions import (
TeamsActionsJoinAPI,
TeamsActionsLeaveAPI,
TeamsActionsMessageMembersAPI,
)
# Notifications API endpoint
from backend.api.notifications.resources import (
NotificationsRestAPI,
NotificationsAllAPI,
NotificationsQueriesCountUnreadAPI,
NotificationsQueriesPostUnreadAPI,
)
from backend.api.notifications.actions import NotificationsActionsDeleteMultipleAPI
# Users API endpoint
from backend.api.users.resources import (
UsersRestAPI,
UsersAllAPI,
UsersQueriesUsernameAPI,
UsersQueriesUsernameFilterAPI,
UsersQueriesOwnLockedAPI,
UsersQueriesOwnLockedDetailsAPI,
UsersQueriesFavoritesAPI,
UsersQueriesInterestsAPI,
UsersRecommendedProjectsAPI,
)
from backend.api.users.tasks import UsersTasksAPI
from backend.api.users.actions import (
UsersActionsSetUsersAPI,
UsersActionsSetLevelAPI,
UsersActionsSetRoleAPI,
UsersActionsSetExpertModeAPI,
UsersActionsVerifyEmailAPI,
UsersActionsRegisterEmailAPI,
UsersActionsSetInterestsAPI,
)
from backend.api.users.openstreetmap import UsersOpenStreetMapAPI
from backend.api.users.statistics import (
UsersStatisticsAPI,
UsersStatisticsInterestsAPI,
UsersStatisticsAllAPI,
)
# System API endpoint
from backend.api.system.general import (
SystemDocsAPI,
SystemHeartbeatAPI,
SystemLanguagesAPI,
SystemContactAdminRestAPI,
)
from backend.api.system.statistics import SystemStatisticsAPI
from backend.api.system.authentication import (
SystemAuthenticationEmailAPI,
SystemAuthenticationLoginAPI,
SystemAuthenticationCallbackAPI,
)
from backend.api.system.applications import SystemApplicationsRestAPI
from backend.api.system.image_upload import SystemImageUploadRestAPI
# Projects REST endpoint
api.add_resource(ProjectsAllAPI, format_url("projects/"), methods=["GET"])
api.add_resource(
ProjectsRestAPI,
format_url("projects/"),
endpoint="create_project",
methods=["POST"],
)
api.add_resource(
ProjectsRestAPI,
format_url("projects/<int:project_id>/"),
methods=["GET", "PATCH", "DELETE"],
)
# Projects queries endoints (TODO: Refactor them into the REST endpoints)
api.add_resource(ProjectsQueriesBboxAPI, format_url("projects/queries/bbox/"))
api.add_resource(
ProjectsQueriesOwnerAPI, format_url("projects/queries/myself/owner/")
)
api.add_resource(
ProjectsQueriesTouchedAPI,
format_url("projects/queries/<string:username>/touched/"),
)
api.add_resource(
ProjectsQueriesSummaryAPI,
format_url("projects/<int:project_id>/queries/summary/"),
)
api.add_resource(
ProjectsQueriesNoGeometriesAPI,
format_url("projects/<int:project_id>/queries/nogeometries/"),
)
api.add_resource(
ProjectsQueriesNoTasksAPI,
format_url("projects/<int:project_id>/queries/notasks/"),
)
api.add_resource(
ProjectsQueriesAoiAPI, format_url("projects/<int:project_id>/queries/aoi/")
)
api.add_resource(
ProjectsQueriesPriorityAreasAPI,
format_url("projects/<int:project_id>/queries/priority-areas/"),
)
api.add_resource(
ProjectsQueriesFeaturedAPI, format_url("projects/queries/featured/")
)
# Projects' addtional resources
api.add_resource(
ProjectsActivitiesAPI, format_url("projects/<int:project_id>/activities/")
)
api.add_resource(
ProjectsLastActivitiesAPI,
format_url("projects/<int:project_id>/activities/latest/"),
)
api.add_resource(
ProjectsContributionsAPI, format_url("projects/<int:project_id>/contributions/")
)
api.add_resource(
ProjectsContributionsQueriesDayAPI,
format_url("projects/<int:project_id>/contributions/queries/day/"),
)
api.add_resource(
ProjectsStatisticsAPI, format_url("projects/<int:project_id>/statistics/")
)
api.add_resource(
ProjectsStatisticsQueriesUsernameAPI,
format_url("projects/<int:project_id>/statistics/queries/<string:username>/"),
)
api.add_resource(
ProjectsStatisticsQueriesPopularAPI, format_url("projects/queries/popular/")
)
api.add_resource(
ProjectsTeamsAPI,
format_url("projects/<int:project_id>/teams/"),
endpoint="get_all_project_teams",
methods=["GET"],
)
api.add_resource(
ProjectsTeamsAPI,
format_url("projects/<int:project_id>/teams/<int:team_id>/"),
methods=["POST", "DELETE", "PATCH"],
)
api.add_resource(
ProjectsCampaignsAPI,
format_url("projects/<int:project_id>/campaigns/"),
endpoint="get_all_project_campaigns",
methods=["GET"],
)
api.add_resource(
ProjectsCampaignsAPI,
format_url("projects/<int:project_id>/campaigns/<int:campaign_id>/"),
endpoint="assign_remove_campaign_to_project",
methods=["POST", "DELETE"],
)
# Projects actions endoints
api.add_resource(
ProjectsActionsMessageContributorsAPI,
format_url("projects/<int:project_id>/actions/message-contributors/"),
)
api.add_resource(
ProjectsActionsTransferAPI,
format_url("projects/<int:project_id>/actions/transfer-ownership/"),
)
api.add_resource(
ProjectsActionsFeatureAPI,
format_url("projects/<int:project_id>/actions/feature/"),
)
api.add_resource(
ProjectsActionsUnFeatureAPI,
format_url("projects/<int:project_id>/actions/remove-feature/"),
methods=["POST"],
)
api.add_resource(
ProjectsFavoritesAPI,
format_url("projects/<int:project_id>/favorite/"),
methods=["GET", "POST", "DELETE"],
)
api.add_resource(
ProjectsActionsSetInterestsAPI,
format_url("projects/<int:project_id>/actions/set-interests/"),
methods=["POST"],
)
api.add_resource(
ProjectActionsIntersectingTilesAPI,
format_url("projects/actions/intersecting-tiles/"),
methods=["POST"],
)
api.add_resource(
UsersActionsSetInterestsAPI,
format_url("users/me/actions/set-interests/"),
endpoint="create_user_interest",
methods=["POST"],
)
api.add_resource(
UsersStatisticsInterestsAPI,
format_url("users/<int:user_id>/statistics/interests/"),
methods=["GET"],
)
api.add_resource(
InterestsAllAPI,
format_url("interests/"),
endpoint="create_interest",
methods=["POST", "GET"],
)
api.add_resource(
InterestsRestAPI,
format_url("interests/<int:interest_id>/"),
methods=["GET", "PATCH", "DELETE"],
)
# Tasks REST endpoint
api.add_resource(
TasksRestAPI, format_url("projects/<int:project_id>/tasks/<int:task_id>/")
)
# Tasks queries endoints (TODO: Refactor them into the REST endpoints)
api.add_resource(
TasksQueriesJsonAPI,
format_url("projects/<int:project_id>/tasks/"),
methods=["GET", "DELETE"],
)
api.add_resource(
TasksQueriesXmlAPI, format_url("projects/<int:project_id>/tasks/queries/xml/")
)
api.add_resource(
TasksQueriesGpxAPI, format_url("projects/<int:project_id>/tasks/queries/gpx/")
)
api.add_resource(
TasksQueriesAoiAPI, format_url("projects/<int:project_id>/tasks/queries/aoi/")
)
api.add_resource(
TasksQueriesMappedAPI,
format_url("projects/<int:project_id>/tasks/queries/mapped/"),
)
api.add_resource(
TasksQueriesOwnInvalidatedAPI,
format_url("projects/<int:project_id>/tasks/queries/own/invalidated/"),
)
# Tasks actions endoints
api.add_resource(
TasksActionsMappingLockAPI,
format_url(
"projects/<int:project_id>/tasks/actions/lock-for-mapping/<int:task_id>/"
),
)
api.add_resource(
TasksActionsMappingStopAPI,
format_url(
"projects/<int:project_id>/tasks/actions/stop-mapping/<int:task_id>/"
),
)
api.add_resource(
TasksActionsMappingUnlockAPI,
format_url(
"projects/<int:project_id>/tasks/actions/unlock-after-mapping/<int:task_id>/"
),
)
api.add_resource(
TasksActionsMappingUndoAPI,
format_url(
"projects/<int:project_id>/tasks/actions/undo-last-action/<int:task_id>/"
),
)
api.add_resource(
TasksActionsValidationLockAPI,
format_url("projects/<int:project_id>/tasks/actions/lock-for-validation/"),
)
api.add_resource(
TasksActionsValidationStopAPI,
format_url("projects/<int:project_id>/tasks/actions/stop-validation/"),
)
api.add_resource(
TasksActionsValidationUnlockAPI,
format_url("projects/<int:project_id>/tasks/actions/unlock-after-validation/"),
)
api.add_resource(
TasksActionsMapAllAPI,
format_url("projects/<int:project_id>/tasks/actions/map-all/"),
)
api.add_resource(
TasksActionsValidateAllAPI,
format_url("projects/<int:project_id>/tasks/actions/validate-all/"),
)
api.add_resource(
TasksActionsInvalidateAllAPI,
format_url("projects/<int:project_id>/tasks/actions/invalidate-all/"),
)
api.add_resource(
TasksActionsResetBadImageryAllAPI,
format_url("projects/<int:project_id>/tasks/actions/reset-all-badimagery/"),
)
api.add_resource(
TasksActionsResetAllAPI,
format_url("projects/<int:project_id>/tasks/actions/reset-all/"),
)
api.add_resource(
TasksActionsSplitAPI,
format_url("projects/<int:project_id>/tasks/actions/split/<int:task_id>/"),
)
# Tasks Statistics endpoint
api.add_resource(
TasksStatisticsAPI,
format_url("tasks/statistics/"),
methods=["GET"],
)
# Comments REST endoints
api.add_resource(
CommentsProjectsRestAPI,
format_url("projects/<int:project_id>/comments/"),
methods=["GET", "POST"],
)
api.add_resource(
CommentsTasksRestAPI,
format_url("projects/<int:project_id>/comments/tasks/<int:task_id>/"),
methods=["GET", "POST"],
)
# Annotations REST endoints
api.add_resource(
AnnotationsRestAPI,
format_url("projects/<int:project_id>/annotations/<string:annotation_type>/"),
format_url("projects/<int:project_id>/annotations/"),
methods=["GET", "POST"],
)
# Issues REST endpoints
api.add_resource(
IssuesAllAPI, format_url("tasks/issues/categories/"), methods=["GET", "POST"]
)
api.add_resource(
IssuesRestAPI,
format_url("tasks/issues/categories/<int:category_id>/"),
methods=["GET", "PATCH", "DELETE"],
)
# Licenses REST endpoints
api.add_resource(LicensesAllAPI, format_url("licenses/"))
api.add_resource(
LicensesRestAPI,
format_url("licenses/"),
endpoint="create_license",
methods=["POST"],
)
api.add_resource(
LicensesRestAPI,
format_url("licenses/<int:license_id>/"),
methods=["GET", "PATCH", "DELETE"],
)
# Licenses actions endpoint
api.add_resource(
LicensesActionsAcceptAPI,
format_url("licenses/<int:license_id>/actions/accept-for-me/"),
)
# Countries REST endpoints
api.add_resource(CountriesRestAPI, format_url("countries/"))
# Organisations REST endpoints
api.add_resource(OrganisationsAllAPI, format_url("organisations/"))
api.add_resource(
OrganisationsRestAPI,
format_url("organisations/"),
endpoint="create_organisation",
methods=["POST"],
)
api.add_resource(
OrganisationsRestAPI,
format_url("organisations/<int:organisation_id>/"),
endpoint="get_organisation",
methods=["GET"],
)
api.add_resource(
OrganisationsBySlugRestAPI,
format_url("organisations/<string:slug>/"),
endpoint="get_organisation_by_slug",
methods=["GET"],
)
api.add_resource(
OrganisationsRestAPI,
format_url("organisations/<int:organisation_id>/"),
methods=["PUT", "DELETE", "PATCH"],
)
# Organisations additional resources endpoints
api.add_resource(
OrganisationsStatsAPI,
format_url("organisations/<int:organisation_id>/statistics/"),
endpoint="get_organisation_stats",
methods=["GET"],
)
api.add_resource(
OrganisationsCampaignsAPI,
format_url("organisations/<int:organisation_id>/campaigns/"),
endpoint="get_all_organisation_campaigns",
methods=["GET"],
)
api.add_resource(
OrganisationsCampaignsAPI,
format_url("organisations/<int:organisation_id>/campaigns/<int:campaign_id>/"),
endpoint="assign_campaign_to_organisation",
methods=["POST", "DELETE"],
)
# Teams REST endpoints
api.add_resource(TeamsAllAPI, format_url("teams"), methods=["GET"])
api.add_resource(
TeamsAllAPI, format_url("teams/"), endpoint="create_team", methods=["POST"]
)
api.add_resource(
TeamsRestAPI,
format_url("teams/<int:team_id>/"),
methods=["GET", "PUT", "DELETE", "PATCH"],
)
# Teams actions endpoints
api.add_resource(
TeamsActionsJoinAPI,
format_url("teams/<int:team_id>/actions/join/"),
methods=["POST", "PATCH"],
)
api.add_resource(
TeamsActionsLeaveAPI,
format_url("teams/<int:team_id>/actions/leave/"),
endpoint="leave_team",
methods=["POST"],
)
api.add_resource(
TeamsActionsMessageMembersAPI,
format_url("teams/<int:team_id>/actions/message-members/"),
)
# Campaigns REST endpoints
api.add_resource(
CampaignsAllAPI,
format_url("campaigns/"),
endpoint="get_all_campaign",
methods=["GET"],
)
api.add_resource(
CampaignsAllAPI,
format_url("campaigns/"),
endpoint="create_campaign",
methods=["POST"],
)
api.add_resource(
CampaignsRestAPI,
format_url("campaigns/<int:campaign_id>/"),
methods=["GET", "PATCH", "DELETE"],
)
# Notifications REST endpoints
api.add_resource(
NotificationsRestAPI, format_url("notifications/<int:message_id>/")
)
api.add_resource(NotificationsAllAPI, format_url("notifications/"))
api.add_resource(
NotificationsQueriesCountUnreadAPI,
format_url("notifications/queries/own/count-unread/"),
)
api.add_resource(
NotificationsQueriesPostUnreadAPI,
format_url("notifications/queries/own/post-unread/"),
methods=["POST"],
)
# Notifications Actions endpoints
api.add_resource(
NotificationsActionsDeleteMultipleAPI,
format_url("notifications/delete-multiple/"),
methods=["DELETE"],
)
# Users REST endpoint
api.add_resource(UsersAllAPI, format_url("users/"))
api.add_resource(UsersRestAPI, format_url("users/<int:user_id>/"))
api.add_resource(
UsersQueriesUsernameFilterAPI,
format_url("users/queries/filter/<string:username>/"),
)
api.add_resource(
UsersQueriesUsernameAPI, format_url("users/queries/<string:username>/")
)
api.add_resource(UsersQueriesFavoritesAPI, format_url("users/queries/favorites/"))
api.add_resource(
UsersQueriesOwnLockedAPI, format_url("users/queries/tasks/locked/")
)
api.add_resource(
UsersQueriesOwnLockedDetailsAPI,
format_url("users/queries/tasks/locked/details/"),
)
# Users Actions endpoint
api.add_resource(UsersActionsSetUsersAPI, format_url("users/me/actions/set-user/"))
api.add_resource(
UsersActionsSetLevelAPI,
format_url("users/<string:username>/actions/set-level/<string:level>/"),
)
api.add_resource(
UsersActionsSetRoleAPI,
format_url("users/<string:username>/actions/set-role/<string:role>/"),
)
api.add_resource(
UsersActionsSetExpertModeAPI,
format_url(
"users/<string:username>/actions/set-expert-mode/<string:is_expert>/"
),
)
api.add_resource(UsersTasksAPI, format_url("users/<int:user_id>/tasks/"))
api.add_resource(
UsersActionsVerifyEmailAPI, format_url("users/me/actions/verify-email/")
)
api.add_resource(
UsersActionsRegisterEmailAPI, format_url("users/actions/register/")
)
# Users Statistics endpoint
api.add_resource(
UsersStatisticsAPI, format_url("users/<string:username>/statistics/")
)
api.add_resource(
UsersStatisticsAllAPI,
format_url("users/statistics/"),
)
# User RecommendedProjects endpoint
api.add_resource(
UsersRecommendedProjectsAPI,
format_url("users/<string:username>/recommended-projects/"),
)
# User Interests endpoint
api.add_resource(
UsersQueriesInterestsAPI,
format_url("users/<string:username>/queries/interests/"),
)
# Users openstreetmap endpoint
api.add_resource(
UsersOpenStreetMapAPI, format_url("users/<string:username>/openstreetmap/")
)
# System endpoint
api.add_resource(SystemDocsAPI, format_url("system/docs/json/"))
api.add_resource(SystemHeartbeatAPI, format_url("system/heartbeat/"))
api.add_resource(SystemLanguagesAPI, format_url("system/languages/"))
api.add_resource(SystemStatisticsAPI, format_url("system/statistics/"))
api.add_resource(
SystemAuthenticationLoginAPI, format_url("system/authentication/login/")
)
api.add_resource(
SystemAuthenticationCallbackAPI, format_url("system/authentication/callback/")
)
api.add_resource(
SystemAuthenticationEmailAPI, format_url("system/authentication/email/")
)
api.add_resource(
SystemImageUploadRestAPI,
format_url("system/image-upload/"),
methods=["POST"],
)
api.add_resource(
SystemApplicationsRestAPI,
format_url("system/authentication/applications/"),
methods=["POST", "GET"],
)
api.add_resource(
SystemApplicationsRestAPI,
format_url("system/authentication/applications/<string:application_key>/"),
endpoint="delete_application",
methods=["DELETE"],
)
api.add_resource(
SystemApplicationsRestAPI,
format_url("system/authentication/applications/<string:application_key>/"),
endpoint="check_application",
methods=["PATCH"],
)
api.add_resource(
SystemContactAdminRestAPI, format_url("system/contact-admin/"), methods=["POST"]
)