Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
POST | /newsletter/send | Send a newsletter to a customers. |
---|
import 'package:servicestack/servicestack.dart';
class SendNewslettersResponse implements IConvertible
{
/**
* The number of messages that are added into queue.
*/
// @ApiMember(Description="The number of messages that are added into queue.")
int? Total;
/**
* Send Method. 1 = Email, 2 = SMS
*/
// @ApiMember(Description="Send Method. 1 = Email, 2 = SMS")
int? SendMethodId;
/**
* Message example sent (in HTML format)
*/
// @ApiMember(Description="Message example sent (in HTML format)")
String? MessageExample;
SendNewslettersResponse({this.Total,this.SendMethodId,this.MessageExample});
SendNewslettersResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Total = json['Total'];
SendMethodId = json['SendMethodId'];
MessageExample = json['MessageExample'];
return this;
}
Map<String, dynamic> toJson() => {
'Total': Total,
'SendMethodId': SendMethodId,
'MessageExample': MessageExample
};
getTypeName() => "SendNewslettersResponse";
TypeContext? context = _ctx;
}
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
class SendNewsLetter implements ICompany, IConvertible
{
/**
* The newsletter template id.
*/
// @ApiMember(Description="The newsletter template id.", IsRequired=true)
int? Id;
/**
* The company id, if empty will use the company id for the user you are logged in with.
*/
// @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
String? CompanyId;
/**
* The datetime when the newsletters should be sent.
*/
// @ApiMember(Description="The datetime when the newsletters should be sent.", IsRequired=true)
DateTime? SendDate;
/**
* The customer ids to send newsletters to.
*/
// @ApiMember(Description="The customer ids to send newsletters to.", IsRequired=true)
List<String>? Customers;
SendNewsLetter({this.Id,this.CompanyId,this.SendDate,this.Customers});
SendNewsLetter.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Id = json['Id'];
CompanyId = json['CompanyId'];
SendDate = JsonConverters.fromJson(json['SendDate'],'DateTime',context!);
Customers = JsonConverters.fromJson(json['Customers'],'List<String>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Id': Id,
'CompanyId': CompanyId,
'SendDate': JsonConverters.toJson(SendDate,'DateTime',context!),
'Customers': JsonConverters.toJson(Customers,'List<String>',context!)
};
getTypeName() => "SendNewsLetter";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
'SendNewslettersResponse': TypeInfo(TypeOf.Class, create:() => SendNewslettersResponse()),
'SendNewsLetter': TypeInfo(TypeOf.Class, create:() => SendNewsLetter()),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /newsletter/send HTTP/1.1
Host: api.bokamera.se
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"Id":0,"CompanyId":"00000000-0000-0000-0000-000000000000","Customers":["00000000-0000-0000-0000-000000000000"]}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"Total":0,"SendMethodId":0,"MessageExample":"String"}