579 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			579 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package ozon
 | 
						||
 | 
						||
import (
 | 
						||
	"context"
 | 
						||
	"net/http"
 | 
						||
	"time"
 | 
						||
 | 
						||
	core "git.denco.store/fakz9/ozon-api-client"
 | 
						||
)
 | 
						||
 | 
						||
type Certificates struct {
 | 
						||
	client *core.Client
 | 
						||
}
 | 
						||
 | 
						||
type ListOfAccordanceTypesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Accordance types
 | 
						||
	Result ListOfAccordanceTypesResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type ListOfAccordanceTypesResult struct {
 | 
						||
	// Main accordance types
 | 
						||
	Base []ListOfAccordanceTypesResultBase `json:"base"`
 | 
						||
 | 
						||
	// Main accordance types related to dangerous products
 | 
						||
	Hazard []ListOfAccordanceTypesResultHazard `json:"hazard"`
 | 
						||
}
 | 
						||
 | 
						||
type ListOfAccordanceTypesResultBase struct {
 | 
						||
	// Accordance type code
 | 
						||
	Code string `json:"code"`
 | 
						||
 | 
						||
	// Accordance type description
 | 
						||
	Title string `json:"title"`
 | 
						||
}
 | 
						||
 | 
						||
type ListOfAccordanceTypesResultHazard struct {
 | 
						||
	// Accordance type code
 | 
						||
	Code string `json:"code"`
 | 
						||
 | 
						||
	// Accordance type description
 | 
						||
	Title string `json:"title"`
 | 
						||
}
 | 
						||
 | 
						||
// List of accordance types (version 2)
 | 
						||
func (c Certificates) ListOfAccordanceTypes(ctx context.Context) (*ListOfAccordanceTypesResponse, error) {
 | 
						||
	url := "/v2/product/certificate/accordance-types/list"
 | 
						||
 | 
						||
	resp := &ListOfAccordanceTypesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodGet, url, nil, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type DirectoryOfDocumentTypesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// List of certificate types and names
 | 
						||
	Result []DirectoryOfDocumentTypesResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type DirectoryOfDocumentTypesResult struct {
 | 
						||
	// Certificate name
 | 
						||
	Name string `json:"name"`
 | 
						||
 | 
						||
	// Certificate type
 | 
						||
	Value string `json:"value"`
 | 
						||
}
 | 
						||
 | 
						||
// Directory of document types
 | 
						||
func (c Certificates) DirectoryOfDocumentTypes(ctx context.Context) (*DirectoryOfDocumentTypesResponse, error) {
 | 
						||
	url := "/v1/product/certificate/types"
 | 
						||
 | 
						||
	resp := &DirectoryOfDocumentTypesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodGet, url, nil, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type ListOfCertifiedCategoriesParams struct {
 | 
						||
	// Number of the page returned in the query
 | 
						||
	Page int32 `json:"page"`
 | 
						||
 | 
						||
	// Number of elements on the page
 | 
						||
	PageSize int32 `json:"page_size"`
 | 
						||
}
 | 
						||
 | 
						||
type ListOfCertifiedCategoriesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Certified categories details
 | 
						||
	Certification []ListOfCertifiedCategoriesResultCert `json:"certification"`
 | 
						||
 | 
						||
	// Total number of categories
 | 
						||
	Total int64 `json:"total"`
 | 
						||
}
 | 
						||
 | 
						||
type ListOfCertifiedCategoriesResultCert struct {
 | 
						||
	// Identifier of the certified category
 | 
						||
	CategoryId int64 `json:"category_id"`
 | 
						||
 | 
						||
	// Category name
 | 
						||
	CategoryName string `json:"category_name"`
 | 
						||
 | 
						||
	// Indication of a mandatory category
 | 
						||
	IsRequired bool `json:"is_required"`
 | 
						||
 | 
						||
	// Type identifier of the certified category
 | 
						||
	TypeId int64 `json:"type_id"`
 | 
						||
 | 
						||
	// Name of the type of certified category
 | 
						||
	TypeName string `json:"type_name"`
 | 
						||
}
 | 
						||
 | 
						||
// List of certified categories
 | 
						||
func (c Certificates) ListOfCertifiedCategories(ctx context.Context, params *ListOfCertifiedCategoriesParams) (*ListOfCertifiedCategoriesResponse, error) {
 | 
						||
	url := "/v2/product/certification/list"
 | 
						||
 | 
						||
	resp := &ListOfCertifiedCategoriesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type LinkCertificateToProductParams struct {
 | 
						||
	// Certificate identifier that was assigned when it was uploaded
 | 
						||
	CertificateId int64 `json:"certificate_id"`
 | 
						||
 | 
						||
	// An array of product identifiers that this certificate applies to
 | 
						||
	ProductId []int64 `json:"product_id"`
 | 
						||
}
 | 
						||
 | 
						||
type LinkCertificateToProductResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// The result of processing the request. true if the request was executed without errors
 | 
						||
	Result bool `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
// Link the certificate to the product
 | 
						||
func (c Certificates) LinkToProduct(ctx context.Context, params *LinkCertificateToProductParams) (*LinkCertificateToProductResponse, error) {
 | 
						||
	url := "/v1/product/certificate/bind"
 | 
						||
 | 
						||
	resp := &LinkCertificateToProductResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type DeleteCertificateParams struct {
 | 
						||
	// Certificate identifier
 | 
						||
	CertificateId int32 `json:"certificate_id"`
 | 
						||
}
 | 
						||
 | 
						||
type DeleteCertificateResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Result of deleting the certificate
 | 
						||
	Result DeleteCertificateResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type DeleteCertificateResult struct {
 | 
						||
	// Indication that a certificate has been deleted:
 | 
						||
	//   - true — deleted
 | 
						||
	//   - false — not deleted
 | 
						||
	IsDelete bool `json:"is_delete"`
 | 
						||
 | 
						||
	// Description of errors during certificate deletion
 | 
						||
	ErrorMessage string `json:"error_message"`
 | 
						||
}
 | 
						||
 | 
						||
// Delete certificate
 | 
						||
func (c Certificates) Delete(ctx context.Context, params *DeleteCertificateParams) (*DeleteCertificateResponse, error) {
 | 
						||
	url := "/v1/product/certificate/delete"
 | 
						||
 | 
						||
	resp := &DeleteCertificateResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type GetCertificateInfoParams struct {
 | 
						||
	// Certificate identifier
 | 
						||
	CertificateNumber string `json:"certificate_number"`
 | 
						||
}
 | 
						||
 | 
						||
type GetCertificateInfoResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Certificate information
 | 
						||
	Result GetCertificateInfoResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type GetCertificateInfoResult struct {
 | 
						||
	// Identifier
 | 
						||
	CertificateId int32 `json:"certificate_id"`
 | 
						||
 | 
						||
	// Number
 | 
						||
	CertificateNumber string `json:"certificate_number"`
 | 
						||
 | 
						||
	// Name
 | 
						||
	CertificateName string `json:"certificate_name"`
 | 
						||
 | 
						||
	// Type
 | 
						||
	TypeCode string `json:"type_code"`
 | 
						||
 | 
						||
	// Status
 | 
						||
	StatusCode string `json:"status_code"`
 | 
						||
 | 
						||
	// Accordance type
 | 
						||
	AccordanceTypeCode string `json:"accordance_type_code"`
 | 
						||
 | 
						||
	// Certificate rejection reason
 | 
						||
	RejectionReasonCode string `json:"rejection_reason_code"`
 | 
						||
 | 
						||
	// Moderator's comment
 | 
						||
	VerificationComment string `json:"verification_comment"`
 | 
						||
 | 
						||
	// Issue date
 | 
						||
	IssueDate time.Time `json:"issue_date"`
 | 
						||
 | 
						||
	// Expire date
 | 
						||
	ExpireDate time.Time `json:"expire_date"`
 | 
						||
 | 
						||
	// Number of products associated with a certificate
 | 
						||
	ProductsCount int32 `json:"products_count"`
 | 
						||
}
 | 
						||
 | 
						||
// Certificate information
 | 
						||
func (c Certificates) GetInfo(ctx context.Context, params *GetCertificateInfoParams) (*GetCertificateInfoResponse, error) {
 | 
						||
	url := "/v1/product/certificate/info"
 | 
						||
 | 
						||
	resp := &GetCertificateInfoResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type ListCertificatesParams struct {
 | 
						||
	// Product identifier associated with the certificate.
 | 
						||
	// Pass the parameter if you need certificates that certain products are associated with
 | 
						||
	OfferId string `json:"offer_id"`
 | 
						||
 | 
						||
	// Certificate status. Pass the parameter if you need certificates with a certain status
 | 
						||
	Status string `json:"status"`
 | 
						||
 | 
						||
	// Certificate type. Pass the parameter if you need certificates with a certain type
 | 
						||
	Type string `json:"type"`
 | 
						||
 | 
						||
	// Page from which the list should be displayed. The minimum value is 1
 | 
						||
	Page int32 `json:"page"`
 | 
						||
 | 
						||
	// Number of objects on the page. The value is from 1 to 1000
 | 
						||
	PageSize int32 `json:"page_size"`
 | 
						||
}
 | 
						||
 | 
						||
type ListCertificatesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Certificates
 | 
						||
	Result ListCertificatesResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type ListCertificatesResult struct {
 | 
						||
	// Сertificate information
 | 
						||
	Certificates []ListCertificatesResultCert `json:"certificates"`
 | 
						||
 | 
						||
	// Number of pages
 | 
						||
	PageCount int32 `json:"page_count"`
 | 
						||
}
 | 
						||
 | 
						||
type ListCertificatesResultCert struct {
 | 
						||
	// Identifier
 | 
						||
	CertificateId int32 `json:"certificate_id"`
 | 
						||
 | 
						||
	// Number
 | 
						||
	CertificateNumber string `json:"certificate_number"`
 | 
						||
 | 
						||
	// Name
 | 
						||
	CertificateName string `json:"certificate_name"`
 | 
						||
 | 
						||
	// Type
 | 
						||
	TypeCode string `json:"type_code"`
 | 
						||
 | 
						||
	// Status
 | 
						||
	StatusCode string `json:"status_code"`
 | 
						||
 | 
						||
	// Accordance type
 | 
						||
	AccordanceTypecode string `json:"accordance_type_code"`
 | 
						||
 | 
						||
	// Certificate rejection reason
 | 
						||
	RejectionReasonCode string `json:"rejection_reason_code"`
 | 
						||
 | 
						||
	// Moderator's comment
 | 
						||
	VerificationComment string `json:"verification_comment"`
 | 
						||
 | 
						||
	// Issue date
 | 
						||
	IssueDate time.Time `json:"issue_date"`
 | 
						||
 | 
						||
	// Expire date
 | 
						||
	ExpireDate time.Time `json:"expire_date"`
 | 
						||
 | 
						||
	// Number of products associated with a certificate
 | 
						||
	ProductsCount int32 `json:"products_count"`
 | 
						||
}
 | 
						||
 | 
						||
// Certificates list
 | 
						||
func (c Certificates) List(ctx context.Context, params *ListCertificatesParams) (*ListCertificatesResponse, error) {
 | 
						||
	url := "/v1/product/certificate/list"
 | 
						||
 | 
						||
	resp := &ListCertificatesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type ProductStatusesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Product statuses
 | 
						||
	Result []ProductStatusesResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type ProductStatusesResult struct {
 | 
						||
	// Product status code when linking it to the certificate
 | 
						||
	Code string `json:"code"`
 | 
						||
 | 
						||
	// Status description
 | 
						||
	Name string `json:"name"`
 | 
						||
}
 | 
						||
 | 
						||
func (c Certificates) ProductStatuses(ctx context.Context) (*ProductStatusesResponse, error) {
 | 
						||
	url := "/v1/product/certificate/list"
 | 
						||
 | 
						||
	resp := &ProductStatusesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type ListProductsForCertificateParams struct {
 | 
						||
	// Certificate identifier
 | 
						||
	CertificateId int32 `json:"certificate_id"`
 | 
						||
 | 
						||
	// Status of the product verification when binding to a certificate
 | 
						||
	ProductStatusCode string `json:"product_status_code"`
 | 
						||
 | 
						||
	// Page from which the list should be displayed. The minimum value is 1
 | 
						||
	Page int32 `json:"page"`
 | 
						||
 | 
						||
	// Number of objects on the page. The value is from 1 to 1000
 | 
						||
	PageSize int32 `json:"page_size"`
 | 
						||
}
 | 
						||
 | 
						||
type ListProductsForCertificateResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Method result
 | 
						||
	Result ListProductsForCertificateResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type ListProductsForCertificateResult struct {
 | 
						||
	// List of products
 | 
						||
	Items []struct {
 | 
						||
		// Product identifier
 | 
						||
		ProductId int64 `json:"product_id"`
 | 
						||
 | 
						||
		// Status of the product processing when binding to a certificate
 | 
						||
		ProductStatusCode string `json:"product_status_code"`
 | 
						||
	} `json:"items"`
 | 
						||
 | 
						||
	// Number of products found
 | 
						||
	Count int64 `json:"count"`
 | 
						||
}
 | 
						||
 | 
						||
// A method for getting a list of possible statuses of products when binding them to a certificate
 | 
						||
func (c Certificates) ListProductsForCertificate(ctx context.Context, params *ListProductsForCertificateParams) (*ListProductsForCertificateResponse, error) {
 | 
						||
	url := "/v1/product/certificate/products/list"
 | 
						||
 | 
						||
	resp := &ListProductsForCertificateResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type UnlinkFromProductParams struct {
 | 
						||
	// Certificate identifier
 | 
						||
	CertificateId int32 `json:"certificate_id"`
 | 
						||
 | 
						||
	// List of product identifiers that you want to unbind from a certificate
 | 
						||
	ProductId []int64 `json:"product_id"`
 | 
						||
}
 | 
						||
 | 
						||
type UnlinkFromProductResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Method result
 | 
						||
	Result []UnlinkFromProductResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type UnlinkFromProductResult struct {
 | 
						||
	// Error message when unbinding a product
 | 
						||
	Error string `json:"error"`
 | 
						||
 | 
						||
	// Product identifier
 | 
						||
	ProductId int64 `json:"product_id"`
 | 
						||
 | 
						||
	// Indication that the product was unbound from a certificate:
 | 
						||
	//   - true — it was unbound,
 | 
						||
	//   - false — it is still bound
 | 
						||
	Updated bool `json:"updated"`
 | 
						||
}
 | 
						||
 | 
						||
// Unbind products from a certificate
 | 
						||
func (c Certificates) UnlinkFromProduct(ctx context.Context, params *UnlinkFromProductParams) (*UnlinkFromProductResponse, error) {
 | 
						||
	url := "/v1/product/certificate/unbind"
 | 
						||
 | 
						||
	resp := &UnlinkFromProductResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type PossibleRejectReasonsResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Certificate rejection reasons
 | 
						||
	Result []PossibleRejectReasonsResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type PossibleRejectReasonsResult struct {
 | 
						||
	// Сode of a certificate rejection reason
 | 
						||
	Code string `json:"code"`
 | 
						||
 | 
						||
	// Description of a certificate rejection reason
 | 
						||
	Name string `json:"name"`
 | 
						||
}
 | 
						||
 | 
						||
// Possible certificate rejection reasons
 | 
						||
func (c Certificates) PossibleRejectReasons(ctx context.Context) (*PossibleRejectReasonsResponse, error) {
 | 
						||
	url := "/v1/product/certificate/rejection_reasons/list"
 | 
						||
 | 
						||
	resp := &PossibleRejectReasonsResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type PossibleStatusesResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	// Possible certificate statuses
 | 
						||
	Result []PossibleStatusesResult `json:"result"`
 | 
						||
}
 | 
						||
 | 
						||
type PossibleStatusesResult struct {
 | 
						||
	// Certificate status code
 | 
						||
	Code string `json:"code"`
 | 
						||
 | 
						||
	// Status description
 | 
						||
	Name string `json:"name"`
 | 
						||
}
 | 
						||
 | 
						||
func (c Certificates) PossibleStatuses(ctx context.Context) (*PossibleStatusesResponse, error) {
 | 
						||
	url := "/v1/product/certificate/status/list"
 | 
						||
 | 
						||
	resp := &PossibleStatusesResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 | 
						||
 | 
						||
type AddCertificatesForProductsParams struct {
 | 
						||
	// Array of certificates for the product. Valid extensions are jpg, jpeg, png, pdf
 | 
						||
	Files []byte `json:"files"`
 | 
						||
 | 
						||
	// Certificate name. No more than 100 characters
 | 
						||
	Name string `json:"name"`
 | 
						||
 | 
						||
	// Certificate number. No more than 100 characters
 | 
						||
	Number string `json:"number"`
 | 
						||
 | 
						||
	// Certificate type. To get the list of types, use the GET `/v1/product/certificate/types` method
 | 
						||
	TypeCode string `json:"type_code"`
 | 
						||
 | 
						||
	// Accordance type. To get the list of types, use the GET `/v1/product/certificate/accordance-types` method
 | 
						||
	AccordanceTypeCode string `json:"accordance_type_code"`
 | 
						||
 | 
						||
	// Issue date of the certificate
 | 
						||
	IssueDate time.Time `json:"issue_date"`
 | 
						||
 | 
						||
	// Expiration date of the certificate. Can be empty for permanent certificates
 | 
						||
	ExpireDate time.Time `json:"expire_date"`
 | 
						||
}
 | 
						||
 | 
						||
type AddCertificatesForProductsResponse struct {
 | 
						||
	core.CommonResponse
 | 
						||
 | 
						||
	Id int `json:"id"`
 | 
						||
}
 | 
						||
 | 
						||
// Adding certificates for products
 | 
						||
func (c Certificates) AddForProducts(ctx context.Context, params *AddCertificatesForProductsParams) (*AddCertificatesForProductsResponse, error) {
 | 
						||
	url := "/v1/product/certificate/create"
 | 
						||
 | 
						||
	resp := &AddCertificatesForProductsResponse{}
 | 
						||
 | 
						||
	response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, map[string]string{
 | 
						||
		"Content-Type": "multipart/form-data",
 | 
						||
	})
 | 
						||
	if err != nil {
 | 
						||
		return nil, err
 | 
						||
	}
 | 
						||
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						||
 | 
						||
	return resp, nil
 | 
						||
}
 |