Referência API
Criar campanha
Cria campanha na organização aprovada com dados validados e propriedade do Criador; rascunho não é publicação.
https://api.sparkglim.net/api/white-label/v1/campaignsModelo de acesso
- Modelo de acesso
- HMAC de Organização no servidor
- Âmbito necessário
campaigns:write- Disponibilidade documentada
- Implementado no código
Disponibilidade verificada no código, sem garantia de produção.
A assinatura privada fica no servidor. A API Versão 1 usa assinatura v2; não é uma API v2.
Cabeçalhos
| Nome | Tipo | Validação |
|---|---|---|
x-white-label-domainObrigatórioDomínio verificado que resolve a conta de Organização aprovada e vincula este pedido. | string | Validação: Nome de anfitrião HTTPS verificado. |
x-white-label-key-idObrigatórioIdentificador extraído da chave privada única; nunca envie o segredo neste cabeçalho. | string | Validação: Identificador interno da chave privada emitida. |
x-white-label-signature-versionObrigatórioSeleciona a assinatura vinculada ao domínio; as rotas API mantêm a Versão 1. | string | Validação: 2. |
x-white-label-timestampObrigatórioInstante da assinatura em milissegundos comparado com o relógio do servidor para rejeitar pedidos antigos. | string | Validação: Milissegundos com 13 dígitos; dentro de cinco minutos. |
x-white-label-nonceObrigatórioValor aleatório novo registado pelo servidor para impedir repetição de um pedido assinado. | string | Validação: Valor novo: 16–128 [A-Za-z0-9_-]. |
x-white-label-signatureObrigatórioHMAC-SHA256 de domínio, chave de idempotência, credencial de campanha, instante, nonce, método, caminho, consulta ordenada e hash exato do corpo. | string | Validação: HMAC-SHA256 hexadecimal em minúsculas. |
x-white-label-campaign-keyOpcionalChave de campanha completa opcional que limita o pedido privado à mesma campanha autorizada. | string | Validação: Valor keyId:secret completo, opcional e limitado ao seu âmbito. |
Pedido
| Nome | Tipo | Validação |
|---|---|---|
titleObrigatórioTítulo público da campanha fornecido pelo organizador autorizado. | string | Validação: 3–255. |
descriptionObrigatórioDescrição do organizador que explica campanha ou bilhete. | string | Validação: 10–5000. |
campaign_typeObrigatórioSeleciona bilhetes, votação ou donativos; não concede módulos não autorizados. | enum | Validação: ticketing | voting | donation. |
start_dateObrigatórioData de abertura da campanha em formato ISO. | string | Validação: Data e hora no formato ISO. |
end_dateObrigatórioData de fecho da campanha em formato ISO. | string | Validação: Data e hora no formato ISO. |
country_codeOpcionalCódigo do país de venda configurado; servidor verifica conta e mercado. | string | Validação: ISO2. |
currency_codeOpcionalMoeda permitida da campanha; escolher país não autoriza moeda nova. | string | Validação: ISO3. |
slugOpcionalIdentificador de URL da campanha ou artigo publicado existente. | string | Validação: Esquema configurado do identificador URL. |
statusOpcionalEstado suportado pedido; aprovação controla publicação e acesso. | enum | Validação: draft | pending_approval | approved | rejected | archived. |
vote_priceOpcionalValor configurado do produto na moeda ou unidade de capacidade da campanha. | number | Validação: >=0. |
donation_goalOpcionalValor configurado do produto na moeda ou unidade de capacidade da campanha. | number | Validação: >=0. |
ticket_priceOpcionalValor configurado do produto na moeda ou unidade de capacidade da campanha. | number | Validação: >=0. |
ticket_capacityOpcionalValor configurado do produto na moeda ou unidade de capacidade da campanha. | integer | Validação: >0. |
image_urlOpcionalURL da imagem fornecida; use media públicos autorizados. | string|null | Validação: URL. |
banner_urlOpcionalURL de capa fornecido pelo organizador. | string|null | Validação: URL. |
categoryOpcionalCategoria de campanha ou definições aprovadas conforme recurso. | string|null | Validação: <=120. |
locationOpcionalLocal público ou filtro; separado do país financeiro de venda. | string|null | Validação: <=255. |
event_dateOpcionalData e hora do evento, distintas do período de venda. | string|null | Validação: Data e hora no formato ISO. |
verification_requiredOpcionalDefine verificação suportada sem contornar controlos do servidor. | boolean | Validação: Valor predefinido: true. |
metadataOpcionalMetadados JSON aceites; nunca substituem autorização, preços ou propriedade. | object | Validação: Objeto JSON. |
Pedido
Os exemplos descrevem o contrato e não são executados. Use registos de teste autorizados; nunca cole segredos reais aqui.
POST /api/white-label/v1/campaigns HTTP/1.1
Host: api.sparkglim.net
x-white-label-domain: events.example.com
x-white-label-key-id: <ISSUED_KEY_ID>
x-white-label-signature-version: 2
x-white-label-timestamp: <FRESH_MILLISECONDS>
x-white-label-nonce: <FRESH_SIGNING_NONCE>
x-white-label-signature: <SERVER_GENERATED_SIGNATURE>
Content-Type: application/json
{
"title": "Example campaign",
"description": "An illustrative campaign description.",
"campaign_type": "ticketing",
"start_date": "2030-06-01T09:00:00.000Z",
"end_date": "2030-06-02T18:00:00.000Z"
}Resposta
{
"success": true,
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"status": "draft"
},
"requestId": "wlapi_example"
}{
"success": false,
"error": "<ERROR_MESSAGE>",
"requestId": "wlapi_example"
}Validação, permissões, registos indisponíveis e falhas usam estado HTTP e erro do controlador.
Limites e novas tentativas
Organização: 120 pedidos por chave e 300 por IP por janela; respeite Retry-After e X-RateLimit.
Compatibilidade do código
As operações autorizadas exigem testes específicos da conta.
server/src/api/router.tsserver/src/api/routes/white-label.tsserver/src/white-label/auth.tsserver/src/white-label/schemas.tsserver/src/white-label/organization-service.tsserver/src/white-label/service.ts