GraphQL Queries
All queries are read-only operations sent as POST /graphql. Queries require HMAC request signing and an X-Tenant-Id header. See Authentication for details on computing the signature, and Overview for request format details.
Policy Queries
getPolicy
Retrieve a single policy by its unique identifier.
query GetPolicy($id: ID!) {
getPolicy(id: $id) {
id
policyModule
policyFunction
version
status
createdAt
updatedAt
source
}
}Variables
{
"id": "pol-abc123"
}curl -X POST https://policy.aster-lang.dev/graphql \
-H "Content-Type: application/json" \
-H "X-Tenant-Id: acme-corp" \
-H "X-User-Role: VIEWER" \
-H "X-Aster-Signature: <signature>" \
-H "X-Aster-Nonce: <nonce>" \
-H "X-Aster-Timestamp: <timestamp>" \
-d '{
"query": "query GetPolicy($id: ID!) { getPolicy(id: $id) { id policyModule policyFunction version status createdAt updatedAt } }",
"variables": { "id": "pol-abc123" }
}'const response = await fetch('https://policy.aster-lang.dev/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Tenant-Id': 'acme-corp',
'X-User-Role': 'VIEWER',
'X-Aster-Signature': signature,
'X-Aster-Nonce': nonce,
'X-Aster-Timestamp': timestamp,
},
body: JSON.stringify({
query: `
query GetPolicy($id: ID!) {
getPolicy(id: $id) {
id
policyModule
policyFunction
version
status
createdAt
updatedAt
}
}
`,
variables: { id: 'pol-abc123' },
}),
});
const { data, errors } = await response.json();listPolicies
Retrieve all policies visible to the tenant.
query ListPolicies {
listPolicies {
id
policyModule
policyFunction
version
status
updatedAt
}
}curl -X POST https://policy.aster-lang.dev/graphql \
-H "Content-Type: application/json" \
-H "X-Tenant-Id: acme-corp" \
-H "X-User-Role: VIEWER" \
-H "X-Aster-Signature: <signature>" \
-H "X-Aster-Nonce: <nonce>" \
-H "X-Aster-Timestamp: <timestamp>" \
-d '{ "query": "query { listPolicies { id policyModule policyFunction version status updatedAt } }" }'const response = await fetch('https://policy.aster-lang.dev/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Tenant-Id': 'acme-corp',
'X-User-Role': 'VIEWER',
'X-Aster-Signature': signature,
'X-Aster-Nonce': nonce,
'X-Aster-Timestamp': timestamp,
},
body: JSON.stringify({
query: `
query {
listPolicies {
id
policyModule
policyFunction
version
status
updatedAt
}
}
`,
}),
});
const { data } = await response.json();
// data.listPolicies → Policy[]Industry-Specific Queries
These queries invoke domain-specific policy evaluation logic and return structured decision results. Each query passes its arguments through the policy engine as individual parameters (not a single input object).
generateLifeQuote
Generate a life insurance quote based on applicant parameters.
query GenerateLifeQuote(
$applicant: LifeInsuranceApplicant!
$request: LifeInsurancePolicyRequest!
) {
generateLifeQuote(applicant: $applicant, request: $request) {
premium
coverageAmount
term
eligibility
exclusions
}
}calculateLifeRiskScore
Calculate a risk score for a life insurance applicant.
query CalculateLifeRiskScore($applicant: LifeInsuranceApplicant!) {
calculateLifeRiskScore(applicant: $applicant) {
score
band
factors
}
}generateAutoQuote
Generate an automobile insurance quote.
query GenerateAutoQuote(
$driver: AutoInsuranceDriver!
$vehicle: AutoInsuranceVehicle!
$coverageType: String!
) {
generateAutoQuote(
driver: $driver
vehicle: $vehicle
coverageType: $coverageType
) {
annualPremium
monthlyPremium
coverageOptions {
type
included
premium
}
}
}checkServiceEligibility
Determine whether a patient is eligible for a specific service.
query CheckServiceEligibility(
$patient: HealthcarePatient!
$service: HealthcareService!
) {
checkServiceEligibility(patient: $patient, service: $service) {
eligible
reason
eligibleServices
ineligibleServices {
service
reason
}
}
}processClaim
Evaluate and process an insurance or service claim.
query ProcessClaim(
$claim: HealthcareClaim!
$provider: HealthcareProvider!
$patientCoverage: Int!
) {
processClaim(
claim: $claim
provider: $provider
patientCoverage: $patientCoverage
) {
approved
approvedAmount
denialReason
requiredDocuments
referenceNumber
}
}evaluateLoanEligibility
Assess a borrower's eligibility for a loan product.
query EvaluateLoanEligibility(
$application: LoanApplication!
$applicant: LoanApplicant!
) {
evaluateLoanEligibility(
application: $application
applicant: $applicant
) {
eligible
maxApprovedAmount
interestRate
term
conditions
rejectionReasons
}
}evaluateCreditCardApplication
Evaluate a credit card application and determine the approved credit limit.
query EvaluateCreditCardApplication(
$applicant: CreditCardApplicantInfo!
$history: CreditCardFinancialHistory!
$offer: CreditCardOffer!
) {
evaluateCreditCardApplication(
applicant: $applicant
history: $history
offer: $offer
) {
approved
creditLimit
interestRate
cardType
conditions
rejectionReasons
}
}evaluateEnterpriseLoan
Evaluate a commercial or enterprise loan application.
query EvaluateEnterpriseLoan(
$enterprise: EnterpriseInfo!
$position: FinancialPosition!
$history: BusinessHistory!
$application: EnterpriseLoanApplication!
) {
evaluateEnterpriseLoan(
enterprise: $enterprise
position: $position
history: $history
application: $application
) {
eligible
approvedAmount
interestRate
collateralRequired
conditions
rejectionReasons
}
}evaluatePersonalLoan
Evaluate a personal loan application.
query EvaluatePersonalLoan(
$personal: PersonalInfo!
$income: IncomeProfile!
$credit: CreditProfile!
$debt: DebtProfile!
$request: PersonalLoanRequest!
) {
evaluatePersonalLoan(
personal: $personal
income: $income
credit: $credit
debt: $debt
request: $request
) {
eligible
approvedAmount
interestRate
monthlyRepayment
term
conditions
rejectionReasons
}
}curl -X POST https://policy.aster-lang.dev/graphql \
-H "Content-Type: application/json" \
-H "X-Tenant-Id: acme-corp" \
-H "X-User-Role: MEMBER" \
-H "X-Aster-Signature: <signature>" \
-H "X-Aster-Nonce: <nonce>" \
-H "X-Aster-Timestamp: <timestamp>" \
-d '{
"query": "query EvaluatePersonalLoan($personal: PersonalInfo!, $income: IncomeProfile!, $credit: CreditProfile!, $debt: DebtProfile!, $request: PersonalLoanRequest!) { evaluatePersonalLoan(personal: $personal, income: $income, credit: $credit, debt: $debt, request: $request) { eligible approvedAmount interestRate monthlyRepayment term } }",
"variables": {
"personal": { "name": "Jane Doe", "age": 32 },
"income": { "annualIncome": 68000, "employmentType": "FULL_TIME" },
"credit": { "creditScore": 710 },
"debt": { "totalMonthlyDebt": 500 },
"request": { "requestedAmount": 15000, "requestedTermMonths": 36 }
}
}'const response = await fetch('https://policy.aster-lang.dev/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Tenant-Id': 'acme-corp',
'X-User-Role': 'MEMBER',
'X-Aster-Signature': signature,
'X-Aster-Nonce': nonce,
'X-Aster-Timestamp': timestamp,
},
body: JSON.stringify({
query: `
query EvaluatePersonalLoan(
$personal: PersonalInfo!
$income: IncomeProfile!
$credit: CreditProfile!
$debt: DebtProfile!
$request: PersonalLoanRequest!
) {
evaluatePersonalLoan(
personal: $personal
income: $income
credit: $credit
debt: $debt
request: $request
) {
eligible
approvedAmount
interestRate
monthlyRepayment
term
conditions
rejectionReasons
}
}
`,
variables: {
personal: { name: 'Jane Doe', age: 32 },
income: { annualIncome: 68000, employmentType: 'FULL_TIME' },
credit: { creditScore: 710 },
debt: { totalMonthlyDebt: 500 },
request: { requestedAmount: 15000, requestedTermMonths: 36 },
},
}),
});
const { data, errors } = await response.json();
const result = data?.evaluatePersonalLoan;