import CampaignsRoute from "../routes/CampaignsRoute"; import Requests from "../util/Requests"; import Response from "../util/Response"; import { AxiosPromise } from "axios"; class Campaigns { /** * List all the Campaigns. * * @see https://api.glitch.fun/api/documentation#/Campaigns/edab2e3b061347b06c82258622d239e2 * * @returns promise */ public static list(params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listCampaigns, undefined, undefined, params); } /** * List public influencer campaigns. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getPublicCampaigns * * @returns promise */ public static listPublic(params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listPublicCampaigns, undefined, undefined, params); } /** * Create a new campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/createCampaign * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static create(data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.createCampaign, data, undefined, params); } /** * Update a campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/updateCampaign * * @param campaign_id The id of the campaign to update. * @param data The data to update. * * @returns promise */ public static update(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateCampaign, data, { campaign_id: campaign_id }, params); } /** * Retrieve the information for a single campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignByUuid * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static view(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.viewCampaign, {}, { campaign_id: campaign_id }, params); } /** * Deletes a campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/deleteCampaign * * @param campaign_id The id of the campaign to delete. * @returns promise */ public static delete(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.deleteCampaign, {}, { campaign_id: campaign_id }, params); } /** * Get the ledger for this campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLedger * * @returns promise */ public static getLedger(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getLedger, undefined, { campaign_id: campaign_id }, params); } /** * Get the post associated with the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLedger * * @returns promise */ public static getPosts(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getPosts, undefined, { campaign_id: campaign_id }, params); } /** * Get planned influencer content for a campaign calendar. * * @param campaign_id The campaign id to retrieve calendar posts for. * @param params Optional filters such as scheduled_at_from, scheduled_at_to, status, or user_id. */ public static getCampaignCalendar(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getCampaignCalendar, undefined, { campaign_id: campaign_id }, params); } /** * Get the associated statistics for the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/campaignStatistics * * @returns promise */ public static statistics(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.statistics, undefined, { campaign_id: campaign_id }, params); } /** * Get the stream view counts for the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignStreamViewCounts * * @returns promise */ public static getStreamViewCounts(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.streamViewCounts, undefined, { campaign_id: campaign_id }, params); } /** * Retrieve recommended influencers for a campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/recommendInfluencers * * @returns promise */ public static getRecommendedInfluencers(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getRecommendedInfluencers, undefined, { campaign_id: campaign_id }, params); } /** * List all the campaign links. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLinks * * @returns promise */ public static listCampaignLinks(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listCampaignLinks, undefined, { campaign_id: campaign_id }, params); } /** * List all the campaign links. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLinks * * @returns promise */ public static listInfluencerCampaignLinkClicks(campaign_id: string, user_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listInfluencerCampaignLinkClicks, undefined, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Create a new campaign link. * * @see https://api.glitch.fun/api/documentation#/Campaigns/storeCampaignLink * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static createCampaignLink(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.createCampaignLink, data, { campaign_id: campaign_id }, params); } /** * Update a campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/1bb1492981b4529693604b03aade8bf6 * * @param campaign_id The id of the campaign to update. * @param data The data to update. * * @returns promise */ public static updateCampaignLink(campaign_id: string, link_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateCampaignLink, data, { campaign_id: campaign_id, link_id: link_id }, params); } /** * Delete a campaign link. * * @see https://api.glitch.fun/api/documentation#/Campaigns/deleteCampaignLink * * @param campaign_id The id of the campaign to update. * @param link_id The id of the campaign link to delete. * * @returns promise */ public static deleteCampaignLink(campaign_id: string, link_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.deleteCampaignLink, {}, { campaign_id: campaign_id, link_id: link_id }, params); } /** * Retrieve the information for a single campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLink * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static getCampaignLink(campaign_id: string, link_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getCampaignLink, {}, { campaign_id: campaign_id, link_id: link_id }, params); } /** * List all the influencers associated with a campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getInfluencerCampaigns * * @returns promise */ public static listInfluencerCampaigns(params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listInfluencerCampaigns, undefined, undefined, params); } /** * List planned influencer content across the authenticated influencer's accepted campaigns. */ public static getInfluencerCalendar(params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getInfluencerCalendar, undefined, undefined, params); } /** * Create an influencer campaign * * @see https://api.glitch.fun/api/documentation#/Campaigns/6d834c837c5f330d6a4cef5786c45c90 * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static createInfluencerCampaign(campaign_id: string, user_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.createInfluencerCampaign, data, { campaign_id: campaign_id }, params); } /** * Update an influencer campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/updateInfluencerCampaign * * @param campaign_id The id of the campaign to update. * @param data The data to update. * * @returns promise */ public static updateInfluencerCampaign(campaign_id: string, user_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateInfluencerCampaign, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Delete an influencer campaign relationship. * * The backend route currently exists, but the controller destroy implementation is intentionally * treated as an agent/admin stop-gate because removal can orphan posts, payouts, or contracts. */ public static deleteInfluencerCampaign(campaign_id: string, user_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.deleteInfluencerCampaign, undefined, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Retrieve the information for a single campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/showInfluencerCampaign * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static viewInfluencerCampaign(campaign_id: string, user_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.viewInfluencerCampaign, {}, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Create or update planned campaign content for an influencer. * * @param campaign_id The campaign id. * @param user_id The influencer user id. * @param data The posts payload. */ public static saveInfluencerCalendarPosts(campaign_id: string, user_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.saveInfluencerCalendarPosts, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Mark an influencer campaign as completed. * * @see https://api.glitch.fun/api/documentation#/Campaigns/markCompleted * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static markInfluencerCampaignComplete(campaign_id: string, user_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.markInfluencerCampaignComplete, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Mark an influencer campaign as incomplete. * * @see https://api.glitch.fun/api/documentation#/Campaigns/afffdc7a0c7fc4d9740f10517c53933e * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static markInfluencerCampaignIncomplete(campaign_id: string, user_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.markInfluencerCampaignIncomplete, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Get all the links associated with an influencer's campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/edab2e3b061347b06c82258622d239e2 * * @returns promise */ public static listInfluencerCampaignLinks(campaign_id: string, user_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listInfluencerCampaignLinks, undefined, { campaign_id: campaign_id, user_id: user_id }, params); } /** * List all the campaign mentions. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLinks * * @returns promise */ public static listCampaignMentions(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listCampaignMentions, undefined, { campaign_id: campaign_id }, params); } /** * Create a new campaign mention. * * @see https://api.glitch.fun/api/documentation#/Campaigns/storeCampaignLink * * @param data The data to be passed when creating a campaign. * * @returns Promise */ public static createCampaignMention(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.createCampaignMention, data, { campaign_id: campaign_id }, params); } /** * Update a campaign mention. * * @see https://api.glitch.fun/api/documentation#/Campaigns/1bb1492981b4529693604b03aade8bf6 * * @param campaign_id The id of the campaign to update. * @param data The data to update. * * @returns promise */ public static updateCampaignMention(campaign_id: string, mention_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateCampaignMention, data, { campaign_id: campaign_id, mention_id: mention_id }, params); } /** * Retrieve the information for a single campaign mention. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLink * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static getCampaignMention(campaign_id: string, mention_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getCampaignMention, {}, { campaign_id: campaign_id, mention_id: mention_id }, params); } /** * Delete the information for a single campaign mention. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignLink * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static deleteCampaignMention(campaign_id: string, mention_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.deleteCampaignMention, {}, { campaign_id: campaign_id, mention_id: mention_id }, params); } /** * Associate a country with the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/addCountryToCampaign * * @param data The country information to be passed to update the country campaigns information. * * @returns Promise */ public static addCountry(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.addCountry, data, { campaign_id: campaign_id }, params); } /** * Remove a country * * @see https://api.glitch.fun/api/documentation#/Campaigns/removeCountry * * @param country_id The id of the country to remove. * * @returns Promise */ public static removeCountry(campaign_id: string, country_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.removeCountry, undefined, { campaign_id: campaign_id, country_id: country_id }, params); } /** * Associate a gender with the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/addGenderToCampaign * * @param data The gener information to be passed to update the gender information. * * @returns Promise */ public static addGender(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.addGender, data, { campaign_id: campaign_id }, params); } /** * Remove a gender * * @see https://api.glitch.fun/api/documentation#/Campaigns/removeGender * * @param gender_id The id of the gender to remove. * * @returns Promise */ public static removeGender(campaign_id: string, gender_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.removeGender, undefined, { campaign_id: campaign_id, gender_id: gender_id }, params); } /** * Associate an ethnicity with the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/addGenderToCampaign * * @param data The ethnicity information to be passed to update the campaign information. * * @returns Promise */ public static addEthnicity(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.addEthnicity, data, { campaign_id: campaign_id }, params); } /** * Remove an ethnicity * * @see https://api.glitch.fun/api/documentation#/Campaigns/removeGender * * @param gender_id The id of the ethnicity to remove. * * @returns Promise */ public static removeEthnicity(campaign_id: string, ethnicity_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.removeEthnicity, undefined, { campaign_id: campaign_id, ethnicity_id: ethnicity_id }, params); } /** * Associate a type with the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/addGenderToCampaign * * @param data The type information to be passed to update the campaign information. * * @returns Promise */ public static addType(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.addType, data, { campaign_id: campaign_id }, params); } /** * Remove an type * * @see https://api.glitch.fun/api/documentation#/Campaigns/removeGender * * @param type_id The id of the ethnicity to remove. * * @returns Promise */ public static removeType(campaign_id: string, type_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.removeType, undefined, { campaign_id: campaign_id, type_id: type_id }, params); } /** * Get a list of influencer invites that have been sent for this campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getInfluencerInvites * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static listInfluencerInvites(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listInfluencerInvites, {}, { campaign_id: campaign_id }, params); } /** * Invites an influencer to join this campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/inviteInfluencer * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static sendInfluencerInvite(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sendInfluencerInvite, data, { campaign_id: campaign_id }, params); } /** * Get creator context used when preparing a personalized invite. */ public static creatorInviteContext(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.influencerInviteProfileContext, {}, { campaign_id: campaign_id }, params); } /** * Send a personalized creator invite after review. */ public static sendCreatorInvite(campaign_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.influencerInviteProfileSend, data, { campaign_id: campaign_id }, params); } /** * Invites an influencer to join this campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static viewInfluencerInvite(campaign_id: string, influencer_id: string, token: string, params?: Record): AxiosPromise> { // Ensure params is defined and includes the token const updatedParams = { ...params, token }; return Requests.processRoute( CampaignsRoute.routes.viewInfluencerInvite, {}, { campaign_id: campaign_id, influencer_id: influencer_id }, updatedParams ); } /** * Updates the influencer invite information. * * @see https://api.glitch.fun/api/documentation#/Campaigns/updateInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static updateInfluencerInvite(campaign_id: string, influencer_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateInfluencerInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * Updates the influencer invite compenstation information. * * @see https://api.glitch.fun/api/documentation#/Campaigns/updateInfluencerCompensationInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static updateInfluencerCompensationInvite(campaign_id: string, influencer_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateInfluencerCompensationInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * The route for an influencer to accept an invite. * * @see https://api.glitch.fun/api/documentation#/Campaigns/acceptInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static acceptInfluencerInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.acceptInfluencerInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * The route for an influencer to decline an invite. * * @see https://api.glitch.fun/api/documentation#/Campaigns/delinceInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static declineInfluencerInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.declineInfluencerInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * The route for an influencer to decline an invite. * * @see https://api.glitch.fun/api/documentation#/Campaigns/withdrawInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static widthdrawInfluencerInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.widthdrawInfluencerInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** Correctly-spelled alias retained alongside the legacy method name. */ public static withdrawInfluencerInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return this.widthdrawInfluencerInvite(campaign_id, influencer_id, data, params); } /** * The route to mark an influencer reachout and finished, and it will no longer send reachouts. * * @see https://api.glitch.fun/api/documentation#/Campaigns/finishInfluencerInvite * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static finishInfluencerInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.finishInfluencerInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * The route to accept an influnecers request to join the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/acceptInfluencer * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static acceptInfluencerRequest(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.acceptInfluencerRequest, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * The route to deny an influencer request to join the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/denyInfluencer * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static declineInfluencerRequest(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.declineInfluencerRequest, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * The route the route to mark the influencers request as in review. * * @see https://api.glitch.fun/api/documentation#/Campaigns/reviewInfluencer * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static reviewInfluencerRequest(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.reviewInfluencerRequest, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Generate post content for the influencer to help them with their content creation. * * @see https://api.glitch.fun/api/documentation#/Campaigns/generatePostContent * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static generateContentForInfluencer(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.generateContentForInfluencer, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Get a list of all active campaigns. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getActiveCampaignLinks * * @returns promise */ public static getActiveCampaignLinks(params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getActiveCampaignLinks, undefined, undefined, params); } /** * Generate a contract for the influencer based on the values in the invite. * * @see https://api.glitch.fun/api/documentation#/Campaigns/generateInfluencerContract * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static generateContractFromInvite(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.generateContractFromInvite, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * Send a contract with Docusign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/sendContractWithDocusign * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static sendContractWithDocusign(campaign_id: string, influencer_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sendContractWithDocusign, data, { campaign_id: campaign_id, influencer_id: influencer_id }, params); } /** * Resend the acceptance email for the influencer. * * @see https://api.glitch.fun/api/documentation#/Campaigns/resendInfluencerAcceptance * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static resendAcceptanceEmail(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.resendAcceptanceEmail, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Pay the influencer a custom amount for the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/payInfluencer * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static payInfluencer(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.payInfluencer, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Get the ledger for this campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getCampaignPayouts * * @returns promise */ public static listPayouts(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.listPayouts, undefined, { campaign_id: campaign_id }, params); } /** * Generate a contract for the influencer based on the values in the campaign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/generateCampaignContract * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static generateCampaignContract(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.generateCampaignContract, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Send a contract with Docusign. * * @see https://api.glitch.fun/api/documentation#/Campaigns/sendCampaignContractWithDocusign * * @param campaign_id The id fo the campaign to retrieve. * * @returns promise */ public static sendCampaignContractWithDocusign(campaign_id: string, user_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sendCampaignContractWithDocusign, data, { campaign_id: campaign_id, user_id: user_id }, params); } /** * Search IGDB for the campaign's game. * @param campaign_id The UUID of the campaign. * @param params Query parameters (e.g., search_query, limit). * @returns promise */ public static sourcingSearchIgdbForCampaignGame(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingSearchIgdbForCampaignGame, undefined, { campaign_id }, params); } /** * Find popular similar games from IGDB. * @param campaign_id The UUID of the campaign. * @param params Query parameters (e.g., igdb_id, limit). * @returns promise */ public static sourcingGetSimilarIgdbGames(campaign_id: string, params: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingGetSimilarIgdbGames, undefined, { campaign_id }, params); } /** * Find content creators for selected games. This does not save them to the database. * @param campaign_id The UUID of the campaign. * @param data The search criteria (source, igdb_ids, etc.). * @returns promise */ public static sourcingFindCreators(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingFindCreators, data, { campaign_id }); } /** * Update campaign sourcing settings. * @param campaign_id The UUID of the campaign. * @param data The settings to update (igdb_id, similar_game_igdb_ids, etc.). * @returns promise */ public static updateSourcingSettings(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateSourcingSettings, data, { campaign_id }); } /** * Find and save content creators for selected games to the database. * @param campaign_id The UUID of the campaign. * @param data The search criteria (source, igdb_ids, etc.). * @returns promise */ public static sourcingFindAndSaveCreators(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingFindAndSaveCreators, data, { campaign_id }); } /** * Get sourced creators for a campaign from the database. * @param campaign_id The UUID of the campaign. * @param params Query parameters for filtering, sorting, and pagination. * @returns promise */ public static getSourcedCreators(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getSourcedCreators, undefined, { campaign_id }, params); } /** * Get a single sourced creator. * @param campaign_id The UUID of the campaign. * @param sourced_creator_id The UUID of the sourced creator. * @returns promise */ public static getSourcedCreator(campaign_id: string, sourced_creator_id: string): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getSourcedCreator, undefined, { campaign_id, sourced_creator_id }); } /** * Update a sourced creator (e.g., approve or reject). * @param campaign_id The UUID of the campaign. * @param sourced_creator_id The UUID of the sourced creator to update. * @param data The update data (e.g., is_approved, is_rejected). * @returns promise */ public static updateSourcedCreator(campaign_id: string, sourced_creator_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateSourcedCreator, data, { campaign_id, sourced_creator_id }); } /** * Assigns an available access key to an influencer for a specific campaign. * This will find the next available key for the given platform and assign it. * * @see https://api.glitch.fun/api/documentation#/Campaigns/assignKey * * @param campaign_id The ID of the campaign. * @param user_id The ID of the user (influencer). * @param data The platform for which to assign a key. * @param data.platform The platform of the key to assign (e.g., 'steam'). * @returns promise */ public static assignKeyToInfluencer(campaign_id: string, user_id: string, data: { platform: string }, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.assignKeyToInfluencer, data, { campaign_id, user_id }, params); } /** * Manually trigger a real-time profile enrichment for a sourced creator. * This synchronously scrapes and parses social media profiles to enrich the creator's data and returns the updated record. * * @see https://api.glitch.fun/api/documentation#/Campaigns%20Sourcing/enrichSourcedCreator * * @param campaign_id The UUID of the campaign. * @param sourced_creator_id The UUID of the sourced creator to enrich. * @returns promise containing the fully enriched SourcedCreator object. */ public static enrichSourcedCreator(campaign_id: string, sourced_creator_id: string): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.enrichSourcedCreator, {}, { campaign_id, sourced_creator_id }); } /** * Find and save Twitch creators for selected games to the database. * @param campaign_id The UUID of the campaign. * @param data The search criteria (source, igdb_ids, etc.). * @returns promise */ public static sourcingFindAndSaveTwitchCreators(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingFindAndSaveTwitchCreators, data, { campaign_id }); } /** * Find and save YouTube creators for selected games to the database. * @param campaign_id The UUID of the campaign. * @param data The search criteria (igdb_ids, period). * @returns promise */ public static sourcingFindAndSaveYouTubeCreators(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingFindAndSaveYouTubeCreators, data, { campaign_id }); } /** * Export sourced creators for a campaign to a CSV or XLSX file. * This method applies the same filtering and sorting parameters as getSourcedCreators. * The browser will automatically trigger a download for the returned file. * * @see https://api.glitch.fun/api/documentation#/Campaigns%20Sourcing/exportSourcedCreators * * @param campaign_id The UUID of the campaign. * @param params Query parameters for the export, including the required 'format' and any filters. * @param params.format The desired file format ('csv' or 'xlsx'). * @param params.search Optional search term. * @param params.status Optional status filter ('pending', 'approved', 'rejected'). * @param params.has_email Optional filter for creators with an email address (true/false). * @returns A promise that resolves with the file blob for download. */ public static exportSourcedCreators(campaign_id: string, params: { format: 'csv' | 'xlsx', [key: string]: any }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.exportSourcedCreators, undefined, { campaign_id }, params); } /** * Search IGDB for any game by a query string. * @param campaign_id The UUID of the campaign (for permission checking). * @param params Query parameters including 'search_query' and optional 'limit'. * @returns promise */ public static sourcingSearchAnyIgdbGame(campaign_id: string, params: { search_query: string, limit?: number }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingSearchAnyIgdbGame, undefined, { campaign_id }, params); } /** * Get full game details from a list of IGDB IDs. * @param campaign_id The UUID of the campaign. * @param data An object containing the array of IGDB IDs. * @param data.igdb_ids An array of IGDB game IDs. * @returns promise */ public static sourcingGetGamesByIds(campaign_id: string, data: { igdb_ids: number[] }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingGetGamesByIds, data, { campaign_id }); } /** * Get full game details from a list of IGDB IDs. * @param campaign_id The UUID of the campaign. * @param data An object containing the array of IGDB IDs. * @param data.igdb_ids An array of IGDB game IDs. * @returns promise */ public static updateAutoInviteCriteria(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateAutoInviteCriteria, data, { campaign_id }); } public static updateCustomRanking(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateCustomRanking, data, { campaign_id }); } public static updateCreatorBucket(campaign_id: string, creator_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.updateCreatorBucket, data, { campaign_id, creator_id }); } public static reRankSourcedCreators(campaign_id: string, data: object): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.reRankSourcedCreators, data, { campaign_id }); } /** * Queue multiple sourced creators for profile enrichment. * This dispatches a background job for each creator to find their social media profiles and contact information. * * @param campaign_id The UUID of the campaign. * @param data An object containing the array of SourcedCreator IDs to enrich. * @param data.creator_ids An array of SourcedCreator UUIDs. * @returns A promise that resolves with a confirmation message and the count of queued jobs. */ public static bulkEnrichSourcedCreators(campaign_id: string, data: { creator_ids: string[] }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.bulkEnrichSourcedCreators, data, { campaign_id }); } /** * Get install attribution breakdown by influencer. * * @see https://api.glitch.fun/api/documentation#/Campaigns/getInfluencerInstallReport * * @param campaign_id The UUID of the campaign. * @param params Optional query parameters (start_date, end_date). * @returns promise */ public static getInfluencerInstallReport(campaign_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.getInfluencerInstallReport, undefined, { campaign_id }, params); } /** * Get detailed install report for a specific influencer. * Accessible by Campaign Owners and the specific Influencer. * * @param campaign_id The UUID of the campaign. * @param influencer_id The UUID of the influencer. * @param params Optional query parameters (start_date, end_date). * @returns promise */ public static getSpecificInfluencerInstallReport(campaign_id: string, influencer_id: string, params?: Record): AxiosPromise> { return Requests.processRoute( CampaignsRoute.routes.getSpecificInfluencerInstallReport, undefined, { campaign_id, influencer_id }, params ); } /** * Generate AI Landing Page for an Influencer Campaign. */ public static generateInfluencerLandingPage( campaign_id: string, user_id: string, data: { prompt: string, privacy_mode: string } ): AxiosPromise> { return Requests.processRoute( CampaignsRoute.routes.generateInfluencerLandingPage, data, { campaign_id, user_id } ); } /** * Update settings for the Influencer Landing Page. */ public static updateInfluencerLandingPage( campaign_id: string, user_id: string, data: { is_landing_page_active?: boolean, landing_page_slug?: string } ): AxiosPromise> { return Requests.processRoute( CampaignsRoute.routes.updateInfluencerLandingPage, data, { campaign_id, user_id } ); } /** * Export influencer invites to CSV. * * @param campaign_id The UUID of the campaign. * @param data Filters for the export (stages, status). */ public static exportInfluencerInvites(campaign_id: string, data: { stages?: string[], status?: string }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.exportInfluencerInvites, data, { campaign_id: campaign_id }); } /** * Find and save Fansly creators for a specific campaign. * * @see CampaignCreatorSourcingController@findAndSaveFanslyCreators * * @param campaign_id The UUID of the campaign. * @param data Parameters for sourcing. * @param data.query The search term (e.g., 'gaming', 'cosplay'). Defaults to 'gaming'. * @param data.pages Number of pages to crawl (25 results per page). Defaults to 10. * @returns promise */ public static sourcingFindAndSaveFanslyCreators(campaign_id: string, data: { query?: string, pages?: number }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sourcingFindAndSaveFanslyCreators, data, { campaign_id }); } public static sendOnboarding(campaign_id: string, user_id: string, data?: { template_id?: string }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.sendOnboarding, data, { campaign_id, user_id }); } /** * Bulk invite influencers from a previous campaign into the current one. * * @param campaign_id The UUID of the target campaign. * @param data { source_campaign_id: string, only_successful: boolean } */ public static crossPromote(campaign_id: string, data: { source_campaign_id: string, only_successful?: boolean }): AxiosPromise> { return Requests.processRoute(CampaignsRoute.routes.crossPromote, data, { campaign_id }); } } export default Campaigns;