Biblioteca de queriesCriar milhares de códigos de desconto para AppSumo no LemonSqueezy
Criar milhares de códigos de desconto para AppSumo no LemonSqueezy
Esta query se conecta à API LemonSqueezy e cria cem códigos de desconto de 100% de uma só vez.
Execute esta query várias vezes para criar os 10.000 códigos necessários para executar uma campanha AppSumo.
Você deve fornecer:
- O token de acesso para se conectar à API Lemon Squeezy, via variável
$lemonSqueezyAccessToken - A loja Lemon Squeezy, via variável
$storeID - O(s) produto(s) a ser(em) resgatado(s) com esse código, via variável
$variantIDs
O código de desconto gerado será uma string aleatória. Você pode adicionar um prefixo ao código (via variável $codePrefix), indicar o tamanho do código (via variável $codeLength) e personalizar o nome do código de desconto (via variáveis $discountNamePrefix e $firstRecordNumber) para encontrá-lo no painel do Lemon Squeezy.
Colete todos os códigos de desconto recém-criados fornecendo um $postId; em seguida, todos os códigos serão adicionados ao final desse post.
query ExportLemonSqueezyAPIData(
$lemonSqueezyAccessToken: String!,
$variantIDs: [String!]!,
$postId: ID,
) {
bearerToken: _sprintf(
string: "Bearer %s",
values: [$lemonSqueezyAccessToken]
)
@remove
lemonSqueezyAPIHeaders: _echo(value: [
{
name: "Accept",
value: "application/vnd.api+json"
},
{
name: "Content-Type",
value: "application/vnd.api+json"
},
{
name: "Authorization",
value: $__bearerToken
}
])
@export(as: "lemonSqueezyAPIHeaders")
@remove
variants: _echo(value: $variantIDs)
@underEachArrayItem(
passValueOnwardsAs: "variantID"
)
@applyField(
name: "_echo",
arguments: {
value: {
type: "variants",
id: $variantID,
}
}
setResultInResponse: true
)
@export(as: "variants")
hasPostId: _notEmpty(value: $postId)
@export(as: "hasPostId")
}
query CreateMutationInputs(
$storeID: String!,
$discountNamePrefix: String! = "AppSumo campaign",
$codePrefix: String! = "",
$numberCodes: Int! = 100,
$codeLength: Int! = 16,
$firstRecordNumber: Int! = 1,
$isTestMode: Boolean! = false,
)
@depends(on: "ExportLemonSqueezyAPIData")
{
mutationInputs: _arrayPad(array: [], length: $numberCodes, value: null)
@underEachArrayItem(
passIndexOnwardsAs: "key"
affectDirectivesUnderPos: [1, 2, 3, 4, 5]
)
@applyField(
name: "_generateRandomString",
arguments: {
length: $codeLength,
characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
},
passOnwardsAs: "randomCode"
)
@applyField(
name: "_strAppend",
arguments: {
after: $codePrefix,
append: $randomCode,
},
passOnwardsAs: "discountCode"
)
@applyField(
name: "_intAdd",
arguments: {
add: $key,
to: $firstRecordNumber,
},
passOnwardsAs: "recordNumber"
)
@applyField(
name: "_sprintf",
arguments: {
string: "%s #%s",
values: [$discountNamePrefix, $recordNumber],
},
passOnwardsAs: "discountName"
)
@applyField(
name: "_echo",
arguments: {
value: {
url: "https://api.lemonsqueezy.com/v1/discounts",
method: POST,
options: {
headers: $lemonSqueezyAPIHeaders
json: {
data: {
type: "discounts",
attributes: {
name: $discountName,
code: $discountCode,
amount: 100,
amount_type: "percent",
is_limited_to_products: true,
is_limited_redemptions: true,
max_redemptions: 1,
test_mode: $isTestMode,
},
relationships: {
store: {
data: {
type: "stores",
id: $storeID,
}
},
variants: {
data: $variants
}
}
}
}
}
}
},
setResultInResponse: true
)
@export(as: "mutationInputs")
@remove
}
query CreateDiscountCodesInLemonSqueezy
@depends(on: "CreateMutationInputs")
{
createDiscountCodesInLemonSqueezy: _sendJSONObjectItemHTTPRequests(inputs: $mutationInputs)
@underEachArrayItem
@underJSONObjectProperty(by: { path: "data.attributes.code" })
@export(as: "discountCodes")
}
query PrintDiscountCodesFromLemonSqueezy
@depends(on: "CreateDiscountCodesInLemonSqueezy")
{
discountCodes: _echo(value: $discountCodes)
}
query GetPostWithDiscountCodes($postId: ID)
@depends(on: "CreateDiscountCodesInLemonSqueezy")
@include(if: $hasPostId)
{
post(by: { id: $postId }, status: any) {
title
postContent: rawContent
discountCodesAsContent: _arrayJoin(
array: $discountCodes,
separator: "\n"
)
updatedPostContent: _sprintf(
string: "%s\n%s"
values: [$__postContent, $__discountCodesAsContent]
)
@export(as: "updatedPostContent")
}
}
mutation UpdatePostWithDiscountCodes($postId: ID)
@depends(on: "GetPostWithDiscountCodes")
@include(if: $hasPostId)
{
updatePost(input: {
id: $postId,
contentAs: { html: $updatedPostContent },
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
title
rawContent
}
}
}