api

package
v0.11.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2019 License: MIT Imports: 38 Imported by: 0

README

Gonder API examples

Target https://youhost.tld:apiport/

Use basic authorization for request.

All request in /api route send as parameter "request". For example:

/api/groups?request={"cmd":"get","offset":0,"limit":100}

or send JSON in body with Content-Type: application/json

Method POST or GET

Standard error response example:

{"status": "error", "message": "Something error text"}

and success response example:

{"status": "success", "message": ""}

Contents

Groups

Target URI: /api/groups

Get groups list
{
  "cmd":"get",
  "offset":0,
  "limit":100,
  "sort":
    [
      {"field":"recid","direction":"DESC"}
    ],
    "search":
      [
        {
        "field":"recid",
        "operator":"begins",
        "value":"12"
        }
      ]
}

response:

{
 "total":2,
 "records":
   [
     {"recid":2,"name":"Group 2"},
     {"recid":1,"name":"Group 1"}
   ]
 }
Add group
{
 "cmd":"add"
}

create new group with name "New group" and return added ID in response:

{
  "recid":3
}
Save groups name
{
  "cmd":"save",
  "offset":0,
  "limit":100,
  "changes":
    [
      {
        "recid":3,
        "name":"New name for group 3"
      },
      {
        "recid":5,
        "name":"New name for group 5"
      }
    ]
}

response:

{
  "total":3,
  "records":
    [
      {"recid":3, "name":"New name for group 3"},
      {"recid":5,"name":"New name for group 5"}
    ]
}
Campaigns

Target URI: /api/campaigns

Get campaigns list
{
  "cmd":"get",
  "id":3,
  "limit":100,
  "offset":0,
    "search":
      [
        {
        "field":"name",
        "operator":"begins",
        "value":"Best"
        }
      ],
  "sort":
    [
      {"field":"name","direction":"ASC"}
    ]
}

response:

{
  "total":2,
  "records":
    [
      {"recid":16,"name":"Best A campaign"},
      {"recid":7,"name":"Best B campaign"}
    ]
}
Add campaign
{
 "cmd":"add"
}

create new campaign with name "New campaign" and return added ID in response:

{
  "recid":3
}
Save campaigns name
{
  "cmd":"save",
  "limit":100,
  "offset":0,
  "changes":
  [
    {"recid":1,"name":"My campaign 1"},
    {"recid":4,"name":"My campaign 4"}
  ]
}

response:

{
  "total":2,
  "records":
    [
      {"recid":1,"name":"Campaign 1"},
      {"recid":4,"name":"My campaign 4"}
    ]
}
Clone campaign
{
  "cmd":"clone",
  "id":23
}

clone campaign in new campaign this name "[Clone] Original campaign name" and return added ID in response:

{
  "recid":32,
  "name": "[Clone] Original campaign name"
}
Campaign

Target URI: /api/campaign

Get campaign parameters
{
  "cmd":"get",
  "id":2
}

response:

{
  "recid":2,
  "name":"My campaign with id 2",
  "profileId":1,
  "subject":"Hello from Gonder",
  "senderId":1,
  "startDate":1479808800,
  "endDate":1480100400,
  "sendUnsubscribe":true,
  "accepted":true,
  "compressHTML": false,
  "template":"<h1>My cool mail template<h1>"
}
Save campaign parameters
{
  "cmd":"save",
  "id":2,
  "content":
    {
      "name":"My campaign with id 2",
      "profileId":1,
      "subject":"Hello from Gonder",
      "senderId":1,
      "startDate":1479808800,
      "endDate":1480100400,
      "sendUnsubscribe":true,
      "accepted":true,
      "compressHTML": false,
      "template":"<h1>My cool mail template<h1>"
    }
}

response:

{
  "recid":2,
  "name":"My campaign with id 2",
  "profileId":1,
  "subject":"Hello from Gonder",
  "senderId":1,
  "startDate":1479808800,
  "endDate":1480100400,
  "sendUnsubscribe":true,
  "accepted":true,
  "compressHTML": false,
  "template":"<h1>My cool mail template<h1>"
}
Set campaign accept status
{
  "cmd":"accept",
  "campaign":31,
  "select": true
}

response standard json error or success

Helpers

Profile list

Target URI: /api/profilelist

{
  "cmd":"get"
}

response

[
  {"id":1,"text":"Default"},
  {"id":2,"text":"Second IP"},
  {"id":3,"text":"Group from all IP"}
]
Sender list

Target URI: /api/profilelist

{
  "cmd":"get",
  "id":2
}

response

[
  {"id":1,"text":"Gonder (gonder@email.tld)"},
  {"id":4,"text":"Go Sender (gonder@email.tld)"}
]
Recipients

Target URI: /api/recipients

Get recipients list
{
  "cmd":"get",
  "campaign":1,
  "limit":100,
  "offset":0,
  "sort":
    [
      {"field":"email","direction":"asc"}
    ],
  "search":
    [
      {
        "field":"email",
        "operator":"contains",
        "value":"mail.ru"
      },
      {
        "field":"result",
        "operator":"is",
        "value":"Ok"
      }
    ],
    "searchLogic":"AND"
}

response:

{
  "total":2,
  "records":
    [
      {
        "recid":2,
        "name":"Bob",
        "email":"bob@email.com",
        "open": true,
        "result":"Ok"
      },{
         "recid":1,
         "name":"Alice",
         "email":"alice@email.com",
         "open": false,
         "result":""
      }
    ]
}
Get recipient parameters
{
  "cmd":"get",
  "recipient":2
}

response:

{
 "total":2,
 "records":
   [
     {"key":"Reference","value":"Bob Sinclair"},
     {"key":"Gender","value":"Man"}
   ]
}
Add recipients to campaign
{
  "cmd":"add",
  "campaign":2,
  "recipients":
    [
      {
        "name":"Bob",
        "email":"bob@email.tld",
        "params": 
         [
           {
             "key":"Age",
             "value":"25"
           },
           {
             "key":"Gender",
             "value":"male"
           }
         ]
      },
      {
        "name":"Alice",
        "email":"alice@email.tld",
        "params": 
          [
            {
              "key":"Age",
              "value":"21"
            },
            {
              "key":"Gender",
              "value":"female"
            }
          ]
       }
    ]
}

response

{"status": "success", "message": ""}

or error

{"status": "error", "message": "Something error text"}
Upload recipients file list
{
  "cmd":"upload",
  "campaign":2,
  "fileName":"my_subscribers.xlsx",
  "fileContent":"base64 coded file content"
}

response:

{
  "status": "success",
  "message": "/tmp/gonder_recipient_load_763792762"
}
Upload recipients file progress
{
  "cmd":"progress",
  "name":"/tmp/gonder_recipient_load_763792762"
}

response progress in percent:

{
  "status": "success",
  "message": 45
}

response finish (progress not found)

{
  "status": "error",
  "message": "not found"
}
Clear all recipients from campaign
{
  "cmd":"clear",
  "campaign":21
}

response standard json error or success

Mark recipients with result code 4XX (safe bounce) for resend
{
  "cmd":"resend4xx",
  "campaign":31
}

response standard json error or success

Remove duplicated recipients email list
{
  "cmd":"deduplicate",
  "campaign":38
}

response standard json success with message as count removed recipients or standard error json

Mark unavaible latest 30 days recipients email (by latest smtp response) list
{
  "cmd":"unavaible",
  "campaign":22
}

response standard json success with message as count marked recipients or standard error json

Reports

Started campaigns

request example /report/started

response show id's running campaigns

{"started":["22","43","56"]}
Campaign summary

request example /report/summary?campaign=2318

response

{
  "Campaign": {
    "Start": 1522945800,
    "name": "My best campaign"
  },
  "OpenMailCount": 4234,
  "OpenWebVersionCount": 41,
  "RecipientJumpCount": 152,
  "SendCount": 26153,
  "SuccessSendCount": 25660,
  "UnsubscribeCount": 3
}
Campaign clicks count

request example /report/clickcount?campaign=2318

response show count clicks to links

{
  "[Соц.сеть/Facebook]http://www.facebook.com/JaguarRussia/": 68,
  "[Соц.сеть/Instagram]http://instagram.com/jaguarrussia": 32,
  "[Соц.сеть/Twitter]https://twitter.com/JaguarRussia": 26,
  "[Соц.сеть/YouTube]http://www.youtube.com/user/JaguarRussia": 19
}
Campaign recipients list

request example /report/recipients?campaign=2318

response show count clicks to links

[
  {
    "id":1726190,
    "email":"Alice@mail.tld",
    "name":"Alice",
    "date":1524505276,
    "open":true,
    "status":"Ok"
  },
  {
    "id":1726191,
    "email":"bob@mail.tld",
    "name":"Bob",
    "date":1524505275,
    "open":false,
    "status":"Ok"
  }
]
Recipient clicks

request example /report/clicks?recipient=1726190

response show count clicks to links

[
  {
    "url":"web_version",
    "date":1524505287
  },
  {
    "url":"open_trace",
    "date":1524505288
  },
  {
    "url": "[Pikabu]https://pikabu.ru/",
    "date":1524505355
  }
]
Campaign or group unsubscribed

request example show unsubscribe from campaign

/report/unsubscribed?campaign=3317

or from group

/report/unsubscribed?group=7

[
  {
    "email": "Alice@mail.tld",
    "date": 1545908606,
    "extra": [
          {
            "Unsubscribed": "from header link"
          }
        ]
  },
  {
    "email": "bob@mail.tld",
    "date": 1545908621
  },
  {
    "email": "stive@mail.tld",
    "date": 1545908632,
    "extra": [
          {
            "why": "No time to read"
          }
        ]
  },
  {
    "email": "ivan@mail.tld",
    "date": 1545908634
  }
]

Documentation

Overview

Package api contains api service and web panel Project Gonder. Author Supme Copyright Supme 2016 License http://opensource.org/licenses/MIT MIT License

THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.

Please see the License.txt file for more information.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckAuth added in v0.11.4

func CheckAuth(fn http.HandlerFunc) http.HandlerFunc

func Logout added in v0.11.4

func Logout(w http.ResponseWriter, r *http.Request)

ToDo

func Run

func Run()

Run start api server

Types

type Auth added in v0.11.4

type Auth struct {
	// contains filtered or unexported fields
}

func (*Auth) CampaignRight added in v0.11.4

func (a *Auth) CampaignRight(campaign interface{}) bool

func (*Auth) GroupRight added in v0.11.4

func (a *Auth) GroupRight(group interface{}) bool

func (*Auth) IsAdmin added in v0.11.4

func (a *Auth) IsAdmin() bool

func (*Auth) Right added in v0.11.4

func (a *Auth) Right(right string) bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL