Help us shape the future of Go! Take the 2026 Go Developer Survey

amocrm

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2020 License: MIT Imports: 13 Imported by: 0

README

AmoCRM Go Client

Examples

import(
    "fmt"

    "github.com/ogi4i/amocrm-client"
)
//Connect AMO
amo, err := amocrm.New("https://example.amocrm.ru", "example@gmail.com", "453af17f1fdsfsd7792aec4676690567")

// Search contact
contacts, err := amo.GetContacts(amocrm.ContactRequestParams{Query: "79999999999"})
fmt.Println(contacts)
fmt.Println(contacts[0].ID)

//Add note
resp, err := amo.AddNote(amocrm.Note{ElementID: contacts[0].ID, ElementType: 1, NoteType: 4, Text: "test4"})

// Get Account info
account, err := amo.GetAccount(amocrm.AccountRequestParams{With: "users"})

//Add lead
resp, err := amo.AddLead(amocrm.Lead{Name: "Call to XXXXX", StatusID: "12345687", ResponsibleUserID: "123456", ContactsID: []string{"24248411"}})

//Get Pipelines
pipelines, err := amo.GetPipelines(amocrm.PipelineRequestParams{ID: ""})

Documentation

Index

Constants

View Source
const (
	AccountNotFoundCode          = 101
	BodyMustBeJSONCode           = 102
	InvalidRequestParametersCode = 103
	InvalidRequestMethodCode     = 104

	InvalidCredentialsCode    = 110
	CaptchaInputRequiredCode  = 111
	DisabledAccountCode       = 112
	UnauthorizedIPAddressCode = 113

	ContactAddEmptyArrayCode                = 201
	ContactAddInsufficientAccessRightsCode  = 202
	ContactAddCustomFieldsInternalErrorCode = 203
	ContactAddCustomFieldNotFoundCode       = 204
	ContactAddNotProcessedCode              = 205

	ContactsEmptyRequestCode         = 206
	ContactsInvalidRequestMethodCode = 207

	ContactUpdateEmptyArrayCode                 = 208
	ContactUpdatedRequiredParametersMissingCode = 209
	ContactUpdateCustomFieldsInternalErrorCode  = 210
	ContactUpdateCustomFieldNotFoundCode        = 211
	ContactUpdateNotProcessedCode               = 212

	LeadAddEmptyArrayCode                   = 213
	LeadEmptyRequestCode                    = 214
	LeadInvalidRequestMethodCode            = 215
	LeadUpdateEmptyArrayCode                = 216
	LeadUpdateRequiredParametersMissingCode = 217

	ContactGetSearchErrorCode = 219

	LeadCustomFieldInvalidIDCode = 240

	TooManyLinkedEntitiesCode = 330

	InvalidRequestCode          = 400
	AccountNotFoundOnServerCode = 401
	SubscriptionExpireCode      = 402
	AccountBlockedCode          = 403

	RateLimitExceededCode = 429

	NoContentCode = 2002

	AccountNotFound          = "account_not_found"
	BodyMustBeJSON           = "body_must_be_json"
	InvalidRequestParameters = "invalid_request_params"
	InvalidRequestMethod     = "invalid_request_method"

	InvalidCredentials    = "invalid_credentials"
	CaptchaInputRequired  = "captcha_input_required"
	DisabledAccount       = "disabled_account"
	UnauthorizedIPAddress = "unauthorized_ip_address"

	ContactAddEmptyArray                = "contact_add_empty_array"
	ContactAddInsufficientAccessRights  = "contact_add_insufficient_access_rights"
	ContactAddCustomFieldsInternalError = "contact_add_custom_fields_internal_error"
	ContactAddCustomFieldNotFound       = "contact_add_custom_field_not_found"
	ContactAddNotProcessed              = "contact_add_not_processed"

	ContactsEmptyRequest         = "contacts_empty_request"
	ContactsInvalidRequestMethod = "contacts_invalid_request_method"

	ContactUpdateEmptyArray                 = "contact_update_empty_array"
	ContactUpdatedRequiredParametersMissing = "contact_update_required_params_missing"
	ContactUpdateCustomFieldsInternalError  = "contact_update_custom_fields_internal_error"
	ContactUpdateCustomFieldNotFound        = "contact_update_custom_field_not_found"
	ContactUpdateNotProcessed               = "contact_update_not_processed"

	LeadAddEmptyArray                   = "lead_add_empty_array"
	LeadEmptyRequest                    = "leads_empty_request"
	LeadInvalidRequestMethod            = "leads_invalid_request_method"
	LeadUpdateEmptyArray                = "lead_update_empty_array"
	LeadUpdateRequiredParametersMissing = "lead_update_required_params_missing"

	ContactGetSearchError = "contact_get_search_error"

	LeadCustomFieldInvalidID = "leads_custom_field_invalid_id"

	TooManyLinkedEntities = "too_many_linked_entities"

	InvalidRequest          = "invalid_request"
	AccountNotFoundOnServer = "account_not_found_on_server"
	SubscriptionExpire      = "subscription_expired"
	AccountBlocked          = "account_blocked"

	RateLimitExceeded = "rate_limit_exceeded"

	NoContent = "no_content"
)
View Source
const (
	NoTasksLeadFilter         LeadRequestTasksFilter = 1
	InProgressTasksLeadFilter LeadRequestTasksFilter = 2

	ActiveLeadsLeadFilter LeadRequestActiveFilter = 1
)
View Source
const (
	ContactTaskElementType  TaskElementType = 1
	LeadTaskElementType     TaskElementType = 2
	CompanyTaskElementType  TaskElementType = 3
	CustomerTaskElementType TaskElementType = 12

	ContactTaskType  TaskRequestType = "contact"
	LeadTaskType     TaskRequestType = "lead"
	CompanyTaskType  TaskRequestType = "company"
	CustomerTaskType TaskRequestType = "customer"

	CompletedStatusTaskFilter  TaskRequestStatusFilter = 1
	InProgressStatusTaskFilter TaskRequestStatusFilter = 0
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountRequestParams

type AccountRequestParams struct {
	With []AccountWithType `validate:"omitempty,dive,oneof=custom_fields users messenger notifications pipelines groups note_types task_types"`
}

type AccountResponse

type AccountResponse struct {
	ID             int    `json:"id,omitempty" validate:"required,omitempty"`
	Name           string `json:"name" validate:"required"`
	Subdomain      string `json:"subdomain" validate:"required"`
	Currency       string `json:"currency" validate:"required"`
	Timezone       string `json:"timezone" validate:"required"`
	TimezoneOffset string `json:"timezone_offset" validate:"required"`
	Language       string `json:"language" validate:"required"`
	DatePattern    struct {
		Date     string `json:"date" validate:"required"`
		Time     string `json:"time" validate:"required"`
		DateTime string `json:"date_time" validate:"required"`
		TimeFull string `json:"time_full" validate:"required"`
	} `json:"date_pattern" validate:"required"`
	CurrentUser int `json:"current_user" validate:"required"`
	Embedded    struct {
		Users        map[string]*User `json:"users" validate:"omitempty,dive,required"`
		CustomFields struct {
			Contacts  map[string]*CustomFieldInfo `json:"contacts" validate:"omitempty,dive,required"`
			Leads     map[string]*CustomFieldInfo `json:"leads,omitempty" validate:"omitempty,dive,required"`
			Companies map[string]*CustomFieldInfo `json:"companies,omitempty" validate:"omitempty,dive,required"`
			Customers []interface{}               `json:"customers,omitempty" validate:"omitempty,dive,required"`
		} `json:"custom_fields" validate:"omitempty"`
		NoteTypes map[string]*NoteType `json:"note_types" validate:"omitempty,dive,required"`
		Groups    map[string]*Group    `json:"groups" validate:"omitempty,dive,required"`
		TaskTypes map[string]*TaskType `json:"task_types" validate:"omitempty,dive,required"`
		Pipelines map[string]*Pipeline `json:"pipelines" validate:"omitempty,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
}

type AccountWithType

type AccountWithType string
const (
	AccountWithCustomFields  AccountWithType = "custom_fields"
	AccountWithUsers         AccountWithType = "users"
	AccountWithMessenger     AccountWithType = "messenger"
	AccountWithNotifications AccountWithType = "notifications"
	AccountWithPipelines     AccountWithType = "pipelines"
	AccountWithGroups        AccountWithType = "groups"
	AccountWithNoteTypes     AccountWithType = "note_types"
	AccountWithTaskTypes     AccountWithType = "task_types"
)

type AddContactRequest

type AddContactRequest struct {
	Add []*ContactAdd `json:"add" validate:"required,dive,required"`
}

type AddLeadRequest

type AddLeadRequest struct {
	Add []*LeadAdd `json:"add" validate:"required,dive,required"`
}

type AddNoteRequest

type AddNoteRequest struct {
	Add []*NoteAdd `json:"add" validate:"required"`
}

type AddTaskRequest

type AddTaskRequest struct {
	Add []*TaskAdd `json:"add" validate:"required,dive,required"`
}

type AmoError

type AmoError struct {
	ErrorDetail string `json:"error" validate:"required"`
	ErrorCode   int    `json:"error_code,string" validate:"required"`
}

func (*AmoError) Error

func (e *AmoError) Error() string

type AuthAccount

type AuthAccount struct {
	ID        int    `json:"id" validate:"required"`
	Name      string `json:"name" validate:"required"`
	Subdomain string `json:"subdomain" validate:"required"`
	Language  string `json:"language" validate:"required"`
	Timezone  string `json:"timezone" validate:"required"`
}

type AuthResponse

type AuthResponse struct {
	Response struct {
		Auth       bool           `json:"auth" validate:"required"`
		Accounts   []*AuthAccount `json:"accounts" validate:"omitempty,dive,required"`
		User       *AuthUser      `json:"user" validate:"required"`
		ServerTime int            `json:"server_time" validate:"required"`
		Error      string         `json:"error" validate:"omitempty"`
	} `json:"response" validate:"required"`
}

type AuthUser

type AuthUser struct {
	ID       int    `json:"id" validate:"required"`
	Language string `json:"language" validate:"required"`
}

type Client

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

func NewClient

func NewClient(accountURL string, login string, hash string, opts ...ClientOption) (*Client, error)

func (*Client) AddContact

func (c *Client) AddContact(ctx context.Context, contact *ContactAdd) (int, error)

func (*Client) AddLead

func (c *Client) AddLead(ctx context.Context, lead *LeadAdd) (int, error)

func (*Client) AddNote

func (c *Client) AddNote(ctx context.Context, note *NoteAdd) (int, error)

func (*Client) AddTask

func (c *Client) AddTask(ctx context.Context, task *TaskAdd) (int, error)

func (*Client) Authorize

func (c *Client) Authorize(ctx context.Context) error

func (*Client) DownloadAttachment

func (c *Client) DownloadAttachment(ctx context.Context, attachment string) ([]byte, error)

func (*Client) GetAccount

func (c *Client) GetAccount(ctx context.Context, reqParams *AccountRequestParams) (*AccountResponse, error)

func (*Client) GetContacts

func (c *Client) GetContacts(ctx context.Context, reqParams *ContactRequestParams) ([]*Contact, error)

func (*Client) GetLeads

func (c *Client) GetLeads(ctx context.Context, reqParams *LeadRequestParams) ([]*Lead, error)

func (*Client) GetNotes

func (c *Client) GetNotes(ctx context.Context, reqParams *NoteRequestParams) ([]*Note, error)

func (*Client) GetPipelines

func (c *Client) GetPipelines(ctx context.Context, reqParams *PipelineRequestParams) (map[string]*Pipeline, error)

func (*Client) GetTasks

func (c *Client) GetTasks(ctx context.Context, reqParams *TaskRequestParams) ([]*Task, error)

func (*Client) UpdateContact

func (c *Client) UpdateContact(ctx context.Context, contact *ContactUpdate) (int, error)

func (*Client) UpdateLead

func (c *Client) UpdateLead(ctx context.Context, lead *LeadUpdate) (int, error)

func (*Client) UpdateTask

func (c *Client) UpdateTask(ctx context.Context, task *TaskUpdate) (int, error)

type ClientOption

type ClientOption func(c *Client)

func WithHTTPTimeout

func WithHTTPTimeout(d time.Duration) ClientOption

type Contact

type Contact struct {
	ID                int    `json:"id" validate:"required"`
	Name              string `json:"name" validate:"required"`
	ResponsibleUserID int    `json:"responsible_user_id" validate:"required"`
	CreatedBy         int    `json:"created_by" validate:"required"`
	CreatedAt         int    `json:"created_at" validate:"required"`
	UpdatedAt         int    `json:"updated_at" validate:"required"`
	AccountID         int    `json:"account_id" validate:"required"`
	UpdatedBy         int    `json:"updated_by" validate:"required"`
	GroupID           int    `json:"group_id,omitempty" validate:"omitempty"`
	Company           struct {
		ID    int    `json:"id" validate:"omitempty"`
		Name  string `json:"name" validate:"omitempty"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"company,omitempty" validate:"omitempty"`
	Leads struct {
		ID    []int  `json:"id" validate:"omitempty,dive,required"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"leads,omitempty" validate:"omitempty"`
	ClosestTaskAt int            `json:"closest_task_at,omitempty" validate:"omitempty"`
	Tags          []*Tag         `json:"tags,omitempty" validate:"omitempty,dive,required"`
	CustomFields  []*CustomField `json:"custom_fields,omitempty" validate:"omitempty,dive,required"`
	Customers     struct {
	} `json:"customers,omitempty" validate:"omitempty"`
	Links *Links `json:"_links" validate:"required"`
}

type ContactAdd

type ContactAdd struct {
	Name              string               `json:"name" validate:"required"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	CreatedBy         int                  `json:"created_by,string,omitempty" validate:"omitempty"`
	CompanyName       string               `json:"company_name,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	LeadsID           []string             `json:"leads_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CustomersID       int                  `json:"customers_id,string,omitempty" validate:"omitempty"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,required"`
}

type ContactRequestParams

type ContactRequestParams struct {
	ID                []int  `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int    `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int    `validate:"omitempty"`
	ResponsibleUserID int    `validate:"omitempty"`
	Query             string `validate:"omitempty"`
}

type ContactUpdate

type ContactUpdate struct {
	ID                int                  `json:"id,string" validate:"required"`
	Name              string               `json:"name,omitempty" validate:"omitempty"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string" validate:"required"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	CreatedBy         int                  `json:"created_by,string,omitempty" validate:"omitempty"`
	CompanyName       string               `json:"company_name,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	LeadsID           []string             `json:"leads_id,omitempty" validate:"omitempty,gt=0,required"`
	CustomersID       int                  `json:"customers_id,string,omitempty" validate:"omitempty"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,required"`
	Unlink            *Unlink              `json:"unlink,omitempty" validate:"omitempty"`
}

type CustomField

type CustomField struct {
	ID       int            `json:"id" validate:"required"`
	Name     string         `json:"name" validate:"required"`
	Values   []*CustomValue `json:"values" validate:"required,dive,required"`
	IsSystem bool           `json:"is_system" validate:"omitempty"`
}

type CustomFieldInfo

type CustomFieldInfo struct {
	ID          int             `json:"id" validate:"required"`
	Name        string          `json:"name" validate:"required"`
	FieldType   CustomFieldType `json:"field_type" validate:"required"`
	Sort        int             `json:"sort" validate:"required"`
	Code        string          `json:"code" validate:"omitempty"`
	IsMultiple  bool            `json:"is_multiple" validate:"omitempty"`
	IsSystem    bool            `json:"is_system" validate:"omitempty"`
	IsEditable  bool            `json:"is_editable" validate:"omitempty"`
	IsRequired  bool            `json:"is_required" validate:"omitempty"`
	IsDeletable bool            `json:"is_deletable" validate:"omitempty"`
	IsVisible   bool            `json:"is_visible" validate:"omitempty"`
	Params      struct {
	} `json:"params" validate:"omitempty"`
	Enums map[string]string `json:"enums" validate:"omitempty,dive,required"`
}

type CustomFieldType

type CustomFieldType int
const (
	TextCustomFieldType CustomFieldType = iota + 1
	NumericCustomFieldType
	CheckboxCustomFieldType
	SelectCustomFieldType
	MultiSelectCustomFieldType
	DateCustomFieldType
	URLCustomFieldType
	MultiTextCustomFieldType
	TextAreaCustomFieldType
	RadioButtonCustomFieldType
	StreetAddressCustomFieldType
	SmartAddressCustomFieldType
	BirthDayCustomFieldType
	LegalEntityCustomFieldType
	ItemsCustomFieldType
	OrgLegalNameCustomFieldType
)

type CustomValue

type CustomValue struct {
	Value   string `json:"value" validate:"required"`
	Enum    int    `json:"enum,omitempty" validate:"omitempty"`
	Subtype string `json:"subtype,omitempty" validate:"omitempty"`
}

type Error

type Error string
var (
	ErrEmptyLogin         Error = "empty_login"
	ErrEmptyAPIHash       Error = "empty_api_hash"
	ErrEmptyPhoneNumber   Error = "empty_phone_number"
	ErrInvalidEventType   Error = "invalid_event_type"
	ErrEmptyResponseItems Error = "empty_response_items"
)

func (Error) Error

func (e Error) Error() string

type GetContactResponse

type GetContactResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Contact `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response,omitempty" validate:"omitempty"`
}

type GetLeadResponse

type GetLeadResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Lead `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetNoteResponse

type GetNoteResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Note `json:"items" validate:"required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetPipelineResponse

type GetPipelineResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items map[string]*Pipeline `json:"items" validate:"required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetTaskResponse

type GetTaskResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Task `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type Group

type Group struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type Lead

type Lead struct {
	ID                int    `json:"id" validate:"required"`
	Name              string `json:"name" validate:"required"`
	ResponsibleUserID int    `json:"responsible_user_id" validate:"required"`
	CreatedBy         int    `json:"created_by" validate:"required"`
	CreatedAt         int    `json:"created_at" validate:"required"`
	UpdatedAt         int    `json:"updated_at" validate:"required"`
	AccountID         int    `json:"account_id" validate:"required"`
	IsDeleted         bool   `json:"is_deleted" validate:"omitempty"`
	MainContact       struct {
		ID    int    `json:"id" validate:"omitempty"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"main_contact,omitempty" validate:"omitempty"`
	GroupID       int            `json:"group_id,omitempty" validate:"omitempty"`
	ClosedAt      int            `json:"closed_at,omitempty" validate:"omitempty"`
	ClosestTaskAt int            `json:"closest_task_at,omitempty" validate:"omitempty"`
	Tags          []*Tag         `json:"tags,omitempty" validate:"omitempty,dive,required"`
	CustomFields  []*CustomField `json:"custom_fields,omitempty" validate:"omitempty"`
	Contact       struct {
		ID    []int  `json:"id" validate:"omitempty,dive,required"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"contacts,omitempty" validate:"omitempty"`
	StatusID int `json:"status_id" validate:"required"`
	Sale     int `json:"sale,omitempty" validate:"omitempty"`
	Pipeline struct {
		ID    int    `json:"id" validate:"required"`
		Links *Links `json:"_links" validate:"required"`
	} `json:"pipeline" validate:"required"`
	Links *Links `json:"_links" validate:"required"`
}

type LeadAdd

type LeadAdd struct {
	Name              string               `json:"name" validate:"required"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string,omitempty" validate:"omitempty"`
	StatusID          int                  `json:"status_id,string" validate:"required"`
	PipelineID        int                  `json:"pipeline_id,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	Sale              int                  `json:"sale,string,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID        []string             `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	RequestID         int                  `json:"request_id,string,omitempty" validate:"omitempty"`
}

type LeadRequestActiveFilter

type LeadRequestActiveFilter int

type LeadRequestFilter

type LeadRequestFilter struct {
	Tasks  LeadRequestTasksFilter  `validate:"omitempty,oneof=1 2"`
	Active LeadRequestActiveFilter `validate:"omitempty,eq=1"`
}

type LeadRequestParams

type LeadRequestParams struct {
	ID                []int              `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int                `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int                `validate:"omitempty"`
	ResponsibleUserID int                `validate:"omitempty"`
	Query             string             `validate:"omitempty"`
	Status            []int              `validate:"omitempty,gt=0,dive,required"`
	Filter            *LeadRequestFilter `validate:"omitempty"`
}

type LeadRequestTasksFilter

type LeadRequestTasksFilter int

type LeadUpdate

type LeadUpdate struct {
	ID                int                  `json:"id,string" validate:"required"`
	Name              string               `json:"name,omitempty" validate:"omitempty"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string" validate:"required"`
	StatusID          int                  `json:"status_id,string,omitempty" validate:"omitempty"`
	PipelineID        int                  `json:"pipeline_id,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	Sale              int                  `json:"sale,string,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID        []string             `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	RequestID         int                  `json:"request_id,string,omitempty" validate:"omitempty"`
	Unlink            *Unlink              `json:"unlink,omitempty" validate:"omitempty"`
}
type Links struct {
	Self struct {
		Href   string `json:"href" validate:"required"`
		Method string `json:"method" validate:"required"`
	} `json:"self" validate:"required"`
}

type Note

type Note struct {
	ID                int             `json:"id" validate:"required"`
	CreatedBy         int             `json:"created_by" validate:"required"`
	AccountID         int             `json:"account_id" validate:"required"`
	GroupID           int             `json:"group_id" validate:"omitempty"`
	IsEditable        bool            `json:"is_editable" validate:"omitempty"`
	ElementID         int             `json:"element_id" validate:"required"`
	ElementType       int             `json:"element_type" validate:"oneof=1 2 3 4 12"`
	Text              string          `json:"text" validate:"required"`
	NoteType          int             `json:"note_type" validate:"required"`
	CreatedAt         int             `json:"created_at" validate:"required"`
	UpdatedAt         int             `json:"updated_at" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id" validate:"required"`
	Attachment        string          `json:"attachment" validate:"omitempty"`
	Parameters        *NoteParameters `json:"params,omitempty" validate:"omitempty"`
	Links             *Links          `json:"_links" validate:"required"`
}

type NoteAdd

type NoteAdd struct {
	ElementID         int                 `json:"element_id" validate:"required"`
	ElementType       int                 `json:"element_type" validate:"oneof=1 2 3 4 12"`
	Text              string              `json:"text,omitempty" validate:"omitempty"`
	NoteType          int                 `json:"note_type" validate:"omitempty"`
	CreatedAt         string              `json:"created_at,omitempty" validate:"omitempty"`
	UpdatedAt         int                 `json:"updated_at,omitempty" validate:"omitempty"`
	ResponsibleUserID int                 `json:"responsible_user_id,omitempty" validate:"omitempty"`
	CreatedBy         int                 `json:"created_by,omitempty" validate:"omitempty"`
	Params            *NotePostParameters `json:"params,omitempty" validate:"omitempty"`
}

type NoteParameters

type NoteParameters struct {
	Text    string `json:"TEXT" validate:"required"`
	Service string `json:"service" validate:"omitempty"`
	HTML    string `json:"HTML" validate:"omitempty"`
}

type NotePostParameters

type NotePostParameters struct {
	UNIQ       string `json:"UNIQ" validate:"required"`
	LINK       string `json:"LINK" validate:"required"`
	PHONE      string `json:"PHONE" validate:"required"`
	DURATION   int    `json:"DURATION" validate:"required"`
	SRC        string `json:"SRC" validate:"required"`
	FROM       string `json:"FROM,omitempty" validate:"omitempty"`
	CallStatus int    `json:"call_status" validate:"required"`
	CallResult string `json:"call_result,omitempty" validate:"omitempty"`
	Text       string `json:"text,omitempty" validate:"omitempty"`
}

type NoteRequestParams

type NoteRequestParams struct {
	Type        NoteRequestType `validate:"required,oneof=lead contact company task"`
	ID          []int           `validate:"omitempty,gt=0,dive,required"`
	LimitRows   int             `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset int             `validate:"omitempty"`
	ElementID   []int           `validate:"omitempty,gt=0,dive,required"`
	NoteType    []int           `validate:"omitempty,gt=0,dive,required"`
}

type NoteRequestType

type NoteRequestType string
const (
	ContactNoteType NoteRequestType = "contact"
	LeadNoteType    NoteRequestType = "lead"
	CompanyNoteType NoteRequestType = "company"
	TaskNoteType    NoteRequestType = "task"
)

type NoteTask

type NoteTask struct {
	ID    int    `json:"id" validate:"omitempty"`
	Text  string `json:"text" validate:"omitempty"`
	Links *Links `json:"_links" validate:"omitempty"`
}

type NoteType

type NoteType struct {
	ID         int    `json:"id" validate:"required"`
	Code       string `json:"code" validate:"required"`
	IsEditable bool   `json:"is_editable" validate:"omitempty"`
}

type Pipeline

type Pipeline struct {
	ID       int                        `json:"id" validate:"required"`
	Name     string                     `json:"name" validate:"required"`
	Sort     int                        `json:"sort" validate:"required"`
	IsMain   bool                       `json:"is_main" validate:"omitempty"`
	Statuses map[string]*PipelineStatus `json:"statuses" validate:"required,dive,required"`
	Links    *Links                     `json:"_links" validate:"required"`
}

type PipelineRequestParams

type PipelineRequestParams struct {
	ID int `validate:"omitempty"`
}

type PipelineStatus

type PipelineStatus struct {
	ID         int    `json:"id" validate:"required"`
	Name       string `json:"name" validate:"required"`
	Color      string `json:"color" validate:"required"`
	Sort       int    `json:"sort" validate:"required"`
	IsEditable bool   `json:"is_editable" validate:"omitempty"`
}

type PostResponse

type PostResponse struct {
	ID        int `json:"id" validate:"omitempty"`
	RequestID int `json:"request_id" validate:"omitempty"`
	Embedded  struct {
		Items []struct {
			ID int `json:"id" validate:"omitempty"`
		} `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type Tag

type Tag struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type Task

type Task struct {
	ID                int             `json:"id" validate:"required"`
	ElementID         int             `json:"element_id" validate:"required"`
	ElementType       TaskElementType `json:"element_type" validate:"oneof=1 2 3 12"`
	CompleteTillAt    int             `json:"complete_till_at" validate:"required"`
	TaskType          int             `json:"task_type" validate:"required"`
	Text              string          `json:"text" validate:"omitempty"`
	CreatedAt         int             `json:"created_at" validate:"required"`
	UpdatedAt         int             `json:"updated_at" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id" validate:"required"`
	IsCompleted       bool            `json:"is_completed" validate:"omitempty"`
	CreatedBy         int             `json:"created_by" validate:"required"`
	AccountID         int             `json:"account_id" validate:"required"`
	GroupID           int             `json:"group_id" validate:"omitempty"`
	Result            *NoteTask       `json:"result" validate:"omitempty"`
	Links             *Links          `json:"_links" validate:"required"`
}

type TaskAdd

type TaskAdd struct {
	ElementID         int             `json:"element_id,string" validate:"required"`
	ElementType       TaskElementType `json:"element_type,string" validate:"oneof=1 2 3 12"`
	CompleteTill      int             `json:"complete_till,omitempty" validate:"omitempty"`
	TaskType          int             `json:"task_type,string" validate:"required"`
	Text              string          `json:"text,omitempty" validate:"omitempty"`
	CreatedAt         int             `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int             `json:"updated_at,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int             `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	IsCompleted       bool            `json:"is_completed,omitempty" validate:"omitempty"`
	CreatedBy         int             `json:"created_by,string,omitempty" validate:"omitempty"`
	RequestID         int             `json:"request_id,string,omitempty" validate:"omitempty"`
}

type TaskElementType

type TaskElementType int

type TaskRequestFilter

type TaskRequestFilter struct {
	Status   TaskRequestStatusFilter `validate:"omitempty,oneof=1 0"`
	TaskType []int                   `validate:"omitempty,gt=0,dive,required"`
}

type TaskRequestParams

type TaskRequestParams struct {
	ID                []int              `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int                `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int                `validate:"omitempty"`
	ElementID         []int              `validate:"omitempty,gt=0,dive,required"`
	ResponsibleUserID int                `validate:"omitempty"`
	Type              TaskRequestType    `validate:"omitempty,oneof=lead contact company customer"`
	Filter            *TaskRequestFilter `validate:"omitempty"`
}

type TaskRequestStatusFilter

type TaskRequestStatusFilter int

type TaskRequestType

type TaskRequestType string

type TaskType

type TaskType struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type TaskUpdate

type TaskUpdate struct {
	ID                int             `json:"id,string" validate:"required"`
	ElementID         int             `json:"element_id,string,omitempty" validate:"omitempty"`
	ElementType       TaskElementType `json:"element_type,string,omitempty" validate:"omitempty,oneof=1 2 3 12"`
	CompleteTill      int             `json:"complete_till,omitempty" validate:"omitempty"`
	TaskType          int             `json:"task_type,string,omitempty" validate:"omitempty"`
	Text              string          `json:"text" validate:"omitempty"`
	CreatedAt         int             `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int             `json:"updated_at,string" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	IsCompleted       bool            `json:"is_completed,omitempty" validate:"omitempty"`
	CreatedBy         int             `json:"created_by,string,omitempty" validate:"omitempty"`
	RequestID         int             `json:"request_id,string,omitempty" validate:"omitempty"`
}
type Unlink struct {
	LeadsID    []int `json:"leads_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID []int `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID  int   `json:"company_id,omitempty" validate:"omitempty"`
}

type UpdateContactRequest

type UpdateContactRequest struct {
	Update []*ContactUpdate `json:"update" validate:"required,dive,required"`
}

type UpdateCustomField

type UpdateCustomField struct {
	ID     int           `json:"id" validate:"required"`
	Values []interface{} `json:"values" validate:"required,dive,required"`
}

type UpdateCustomValue

type UpdateCustomValue struct {
	Value   string `json:"value" validate:"required"`
	Subtype string `json:"subtype,omitempty" validate:"omitempty"`
}

type UpdateLeadRequest

type UpdateLeadRequest struct {
	Update []*LeadUpdate `json:"update" validate:"required,dive,required"`
}

type UpdateTaskRequest

type UpdateTaskRequest struct {
	Update []*TaskUpdate `json:"update" validate:"required,dive,required"`
}

type User

type User struct {
	ID          int    `json:"id" validate:"required"`
	Name        string `json:"name" validate:"required"`
	LastName    string `json:"last_name,omitempty" validate:"omitempty"`
	Login       string `json:"login" validate:"required"`
	Language    string `json:"language" validate:"required"`
	GroupID     int    `json:"group_id" validate:"omitempty"`
	IsActive    bool   `json:"is_active" validate:"omitempty"`
	IsFree      bool   `json:"is_free" validate:"omitempty"`
	IsAdmin     bool   `json:"is_admin" validate:"omitempty"`
	PhoneNumber string `json:"phone_number" validate:"omitempty"`
	Rights      struct {
		Mail          string `json:"mail" validate:"required"`
		IncomingLeads string `json:"incoming_leads" validate:"required"`
		Catalogs      string `json:"catalogs" validate:"required"`
		LeadAdd       string `json:"lead_add" validate:"required"`
		LeadView      string `json:"lead_view" validate:"required"`
		LeadEdit      string `json:"lead_edit" validate:"required"`
		LeadDelete    string `json:"lead_delete" validate:"required"`
		LeadExport    string `json:"lead_export" validate:"required"`
		ContactAdd    string `json:"contact_add" validate:"required"`
		ContactView   string `json:"contact_view" validate:"required"`
		ContactEdit   string `json:"contact_edit" validate:"required"`
		ContactDelete string `json:"contact_delete" validate:"required"`
		ContactExport string `json:"contact_export" validate:"required"`
		CompanyAdd    string `json:"company_add" validate:"required"`
		CompanyView   string `json:"company_view" validate:"required"`
		CompanyEdit   string `json:"company_edit" validate:"required"`
		CompanyDelete string `json:"company_delete" validate:"required"`
		CompanyExport string `json:"company_export" validate:"required"`
		TaskEdit      string `json:"task_edit" validate:"required"`
		TaskDelete    string `json:"task_delete" validate:"required"`
	} `json:"rights" validate:"required"`
}

Jump to

Keyboard shortcuts

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