| POST | /cmd/products/instances |
|---|
# frozen_string_literal: true
# encoding: utf-8
require 'json'
require 'servicestack'
module PayinConstraintType
SINGLE_BET = 0
MULTI_BET = 1
SYSTEM_BET = 2
end
module WinningsCapType
SINGLE_BET = 0
MULTI_BET = 1
SYSTEM_BET = 2
end
class Ref
include ServiceStack::DTO
# @return [String]
attr_accessor :id
# @return [String]
attr_accessor :val
def self.properties
{
id: { name: 'id' },
val: { name: 'val' },
}
end
end
class ProductReference
include ServiceStack::DTO
# @return [String]
attr_accessor :id
# @return [String]
attr_accessor :value
# @return [String]
attr_accessor :category
# @return [Ref]
attr_accessor :product_provider
def self.properties
{
id: { name: 'id' },
value: { name: 'value' },
category: { name: 'category' },
product_provider: { name: 'productProvider', type: Ref },
}
end
end
class Money
include ServiceStack::DTO
# @return [BigDecimal]
attr_accessor :amount
# @return [String]
attr_accessor :currency
def self.properties
{
amount: { name: 'amount' },
currency: { name: 'currency' },
}
end
end
class PayinConstraint
include ServiceStack::DTO
# @return [PayinConstraintType]
attr_accessor :type
# @return [Money]
attr_accessor :min
# @return [Money]
attr_accessor :default
# @return [Money]
attr_accessor :warning_threshold
# @return [Money]
attr_accessor :max
def self.properties
{
type: { name: 'type' },
min: { name: 'min', type: Money },
default: { name: 'default', type: Money },
warning_threshold: { name: 'warningThreshold', type: Money },
max: { name: 'max', type: Money },
}
end
end
class WinningsCap
include ServiceStack::DTO
# @return [WinningsCapType]
attr_accessor :type
# @return [Money]
attr_accessor :cap
def self.properties
{
type: { name: 'type' },
cap: { name: 'cap', type: Money },
}
end
end
class BettingPolicies
include ServiceStack::DTO
# @return [RecordList]
attr_accessor :payin_constraints
# @return [String]
attr_accessor :payin_taxation_policy_id
# @return [RecordList]
attr_accessor :winnings_caps
# @return [String]
attr_accessor :winnings_taxation_policy_id
def self.properties
{
payin_constraints: { name: 'payinConstraints', type: RecordList },
payin_taxation_policy_id: { name: 'payinTaxationPolicyId' },
winnings_caps: { name: 'winningsCaps', type: RecordList },
winnings_taxation_policy_id: { name: 'winningsTaxationPolicyId' },
}
end
end
class InstallProductInstance
include ServiceStack::DTO
# @return [String]
attr_accessor :id
# @return [String]
attr_accessor :name
# @return [String]
attr_accessor :title
# @return [ProductReference]
attr_accessor :product
# @return [Ref]
attr_accessor :currency
# @return [BettingPolicies]
attr_accessor :betting_policies
# @return [String]
attr_accessor :api_url
# @return [String]
attr_accessor :back_office_url
# @return [String]
attr_accessor :instance_url
# @return [String]
attr_accessor :feed_player_url
def self.properties
{
id: { name: 'id' },
name: { name: 'name' },
title: { name: 'title' },
product: { name: 'product', type: ProductReference },
currency: { name: 'currency', type: Ref },
betting_policies: { name: 'bettingPolicies', type: BettingPolicies },
api_url: { name: 'apiUrl' },
back_office_url: { name: 'backOfficeUrl' },
instance_url: { name: 'instanceUrl' },
feed_player_url: { name: 'feedPlayerUrl' },
}
end
def response_type() = ServiceStack::ResponseStatus
def get_type_name() = 'InstallProductInstance'
end
class RecordList < Array
end
Ruby InstallProductInstance DTOs
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 /cmd/products/instances HTTP/1.1
Host: api.bettor.webhop.biz
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"id":"String","name":"String","title":"String","product":{"id":"String","value":"String","category":"String","productProvider":{"id":"String","val":"String"}},"currency":{"id":"String","val":"String"},"bettingPolicies":{"payinConstraints":[{"type":0,"min":{"amount":0,"currency":"String"},"default":{"amount":0,"currency":"String"},"warningThreshold":{"amount":0,"currency":"String"},"max":{"amount":0,"currency":"String"}}],"payinTaxationPolicyId":"String","winningsCaps":[{"type":0,"cap":{"amount":0,"currency":"String"}}],"winningsTaxationPolicyId":"String"},"apiUrl":"String","backOfficeUrl":"String","instanceUrl":"String","feedPlayerUrl":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}