| POST | /v1/decisions |
|---|
# frozen_string_literal: true
# encoding: utf-8
require 'json'
require 'servicestack'
# @DataContract
class DecisionAnswer
include ServiceStack::DTO
# @DataMember(Name="type")
# @return [String]
attr_accessor :type
# @DataMember(Name="noul")
# @return [Float]
attr_accessor :noul
# @DataMember(Name="choice")
# @return [String]
attr_accessor :choice
# @DataMember(Name="score")
# @return [Float]
attr_accessor :score
# @DataMember(Name="confidence")
# @return [Float]
attr_accessor :confidence
# @DataMember(Name="probabilities")
# @return [Dictionary]
attr_accessor :probabilities
# @DataMember(Name="legend")
# @return [Dictionary]
attr_accessor :legend
def self.properties
{
type: { name: 'type' },
noul: { name: 'noul' },
choice: { name: 'choice' },
score: { name: 'score' },
confidence: { name: 'confidence' },
probabilities: { name: 'probabilities' },
legend: { name: 'legend' },
}
end
end
# @DataContract
class DecisionUsage
include ServiceStack::DTO
# @DataMember(Name="input_tokens")
# @return [Integer]
attr_accessor :input_tokens
# @DataMember(Name="output_tokens")
# @return [Integer]
attr_accessor :output_tokens
# @DataMember(Name="cost")
# @return [Float]
attr_accessor :cost
def self.properties
{
input_tokens: { name: 'input_tokens' },
output_tokens: { name: 'output_tokens' },
cost: { name: 'cost' },
}
end
end
# @DataContract
class DecisionResponse
include ServiceStack::DTO
# @DataMember(Name="id")
# @return [String]
attr_accessor :id
# @DataMember(Name="model")
# @return [String]
attr_accessor :model
# @DataMember(Name="provider")
# @return [String]
attr_accessor :provider
# @DataMember(Name="answers")
# @return [Dictionary]
attr_accessor :answers
# @DataMember(Name="usage")
# @return [DecisionUsage]
attr_accessor :usage
def self.properties
{
id: { name: 'id' },
model: { name: 'model' },
provider: { name: 'provider' },
answers: { name: 'answers', type: { String => DecisionAnswer } },
usage: { name: 'usage', type: DecisionUsage },
}
end
end
# @DataContract
class DecisionQuestion
include ServiceStack::DTO
# @DataMember(Name="type")
# @return [String]
attr_accessor :type
# @DataMember(Name="instructions")
# @return [Object]
attr_accessor :instructions
# @DataMember(Name="criteria")
# @return [Object]
attr_accessor :criteria
def self.properties
{
type: { name: 'type' },
instructions: { name: 'instructions' },
criteria: { name: 'criteria' },
}
end
end
#
# Decisions API (OpenRouter)
#
# @DataContract
class CreateDecision
include ServiceStack::DTO
# @DataMember(Name="model")
# @return [String]
attr_accessor :model
# @DataMember(Name="state")
# @return [Object]
attr_accessor :state
# @DataMember(Name="questions")
# @return [Dictionary]
attr_accessor :questions
# @DataMember(Name="session_id")
# @return [String]
attr_accessor :session_id
# @DataMember(Name="user")
# @return [String]
attr_accessor :user
# @DataMember(Name="provider")
# @return [Dictionary]
attr_accessor :provider
def self.properties
{
model: { name: 'model' },
state: { name: 'state' },
questions: { name: 'questions', type: { String => DecisionQuestion } },
session_id: { name: 'session_id' },
user: { name: 'user' },
provider: { name: 'provider' },
}
end
def response_type() = DecisionResponse
def get_type_name() = 'CreateDecision'
end
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/decisions HTTP/1.1
Host: vue-spa.web-templates.io
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CreateDecision xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ServiceStack.AI">
<model>String</model>
<provider xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value />
</d2p1:KeyValueOfstringanyType>
</provider>
<questions xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringDecisionQuestionPZTEmqZr>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>
<criteria />
<instructions />
<type>String</type>
</d2p1:Value>
</d2p1:KeyValueOfstringDecisionQuestionPZTEmqZr>
</questions>
<session_id>String</session_id>
<state />
<user>String</user>
</CreateDecision>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<DecisionResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ServiceStack.AI">
<answers xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringDecisionAnswerPZTEmqZr>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>
<choice>String</choice>
<confidence>0</confidence>
<legend>
<d2p1:KeyValueOfstringstring>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>String</d2p1:Value>
</d2p1:KeyValueOfstringstring>
</legend>
<noul>0</noul>
<probabilities>
<d2p1:KeyValueOfstringdouble>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>0</d2p1:Value>
</d2p1:KeyValueOfstringdouble>
</probabilities>
<score>0</score>
<type>String</type>
</d2p1:Value>
</d2p1:KeyValueOfstringDecisionAnswerPZTEmqZr>
</answers>
<id>String</id>
<model>String</model>
<provider>String</provider>
<usage>
<cost>0</cost>
<input_tokens>0</input_tokens>
<output_tokens>0</output_tokens>
</usage>
</DecisionResponse>